¶
title: FreqAI 使用指南 subject: FreqTrade FreqAI 指南 subtitle: FreqAI 机器学习模块详解 short_title: FreqAI description: 本文档详细介绍了 FreqAI 机器学习模块的功能和使用方法,包括自适应训练、特征工程、回测等核心功能的说明。¶
FreqAI¶
简介¶
FreqAI 是一款旨在自动化与训练预测性机器学习模型相关的各种任务的软件,该模型可根据一组输入信号生成市场预测。总体而言,FreqAI 旨在成为一个沙盒,便于在实时数据上轻松部署强大的机器学习库(详情)。
功能包括:
- 自适应再训练 - 在实盘部署期间以监督方式自适应地再训练模型以适应市场
- 快速特征工程 - 基于用户自定义策略创建丰富的特征集(1 万+特征)
- 高性能 - 线程允许在与模型推理(预测)和机器人交易操作不同的线程(或可用时在 GPU 上)上自适应地再训练模型。最新的模型和数据保存在内存中以实现快速推理
- 真实回测 - 使用回测模块在历史数据上模拟自适应训练,自动化再训练
- 可扩展性 - 通用且健壮的架构允许集成任何 Python 可用的机器学习库/方法。目前已提供八个示例,包括分类器、回归器和卷积神经网络
- 智能异常值剔除 - 使用多种异常值检测技术从训练和预测数据集中剔除异常值
- 崩溃恢复 - 将训练好的模型存储到磁盘,以便从崩溃中快速恢复,并为持续的 dry/live 运行清理过时文件
- 自动数据归一化 - 以智能且统计安全的方式归一化数据
- 自动数据下载 - 计算数据下载的时间范围并更新历史数据(在实盘部署中)
- 清理输入数据 - 在训练和模型推理前安全处理 NaN
- 降维 - 通过主成分分析减少训练数据的维度
- 机器人集群部署 - 设置一个机器人训练模型,同时一组消费者使用信号。
快速开始¶
测试 FreqAI 最简单的方法是在 dry 模式下运行以下命令:
freqtrade trade --config config_examples/config_freqai.example.json --strategy FreqaiExampleStrategy --freqaimodel LightGBMRegressor --strategy-path freqtrade/templates
你将看到自动数据下载的启动过程,随后是同时训练和交易。
一个示例策略、预测模型和配置可作为起点,分别位于
freqtrade/templates/FreqaiExampleStrategy.py
、freqtrade/freqai/prediction_models/LightGBMRegressor.py
和
config_examples/config_freqai.example.json
。
总体思路¶
你需要为 FreqAI 提供一组自定义基础指标(与典型 Freqtrade 策略相同)以及目标值(标签)。对于白名单中的每个交易对,FreqAI 都会训练一个模型,根据自定义指标的输入预测目标值。模型会以预定频率持续再训练,以适应市场条件。FreqAI 支持回测策略(在历史数据上模拟定期再训练的现实情况)和 dry/live 部署。在 dry/live 条件下,FreqAI 可以设置为在后台线程中持续再训练,以保持模型尽可能最新。
下图展示了算法的概览,解释了数据处理管道和模型的使用方式。

重要的机器学习术语¶
特征(Features) - 基于历史数据的参数,模型就是在这些参数上训练的。单根蜡烛的所有特征存储为一个向量。在 FreqAI 中,你可以用策略中能构造的任何内容来构建特征集。
标签(Labels) - 模型训练的目标值。每个特征向量都关联一个你在策略中定义的标签。这些标签有意地"看向未来",你训练模型的目标就是让它能预测这些标签。
训练(Training) - "教"模型将特征集与关联标签匹配的过程。不同类型的模型"学习"方式不同,这意味着某些模型在特定应用上可能优于其他模型。FreqAI 已实现的不同模型的更多信息见这里。
训练数据(Train data) - 在训练期间输入模型以"教"模型如何预测目标的特征数据集的子集。这些数据直接影响模型中的权重连接。
测试数据(Test data) - 用于在训练后评估模型性能的特征数据集的子集。这些数据不会影响模型中的节点权重。
推理(Inferencing) - 向训练好的模型输入新的、未见过的数据,让其做出预测的过程。
安装依赖¶
正常的 Freqtrade 安装流程会询问你是否要安装 FreqAI 依赖。如果你想使用 FreqAI,请回答"yes"。如果你没有选择 yes,可以在安装后手动安装这些依赖:
pip install -r requirements-freqai.txt
Docker 使用方法¶
如果你使用 docker,可以使用带有 FreqAI 依赖的专用标签 :freqai
。因此,你可以将 docker compose 文件中的镜像行替换为 image: freqtradeorg/freqtrade:stable_freqai
。该镜像包含常规的 FreqAI 依赖。与本地安装类似,Catboost 在 ARM 设备上不可用。如果你想使用 PyTorch 或强化学习,应使用 torch 或 RL 标签,如 image: freqtradeorg/freqtrade:stable_freqaitorch
、image: freqtradeorg/freqtrade:stable_freqairl
。
FreqAI 在开源机器学习领域的位置¶
对混沌时间序列系统(如股票/加密货币市场)进行预测需要一套广泛的工具来测试各种假设。幸运的是,近年来强大的机器学习库(如 scikit-learn
)的成熟为研究带来了广阔的可能性。来自各个领域的科学家现在可以轻松地在大量成熟的机器学习算法上原型化他们的研究。同样,这些用户友好的库也让"公民科学家"能够用基础的 Python 技能进行数据探索。然而,在历史和实时混沌数据源上利用这些机器学习库在实际操作上可能很困难且昂贵。此外,健壮的数据收集、存储和处理也是一项挑战。FreqAI
旨在提供一个通用且可扩展的开源框架,专注于市场预测的自适应建模实盘部署。FreqAI
框架实际上是开源机器学习库丰富世界的一个沙盒。在 FreqAI
沙盒中,用户可以组合各种第三方库,在免费的 24/7 混沌数据源——加密货币交易所数据上测试创新假设。
FreqAI 论文引用¶
FreqAI 已发表在 Journal of Open Source Software。如果你在研究中用到了 FreqAI,请使用以下引用:
@article{Caulk2022,
doi = {10.21105/joss.04864},
url = {https://doi.org/10.21105/joss.04864},
year = {2022}, publisher = {The Open Journal},
volume = {7}, number = {80}, pages = {4864},
author = {Robert A. Caulk and Elin Törnquist and Matthias Voppichler and Andrew R. Lawless and Ryan McMullan and Wagner Costa Santos and Timothy C. Pogue and Johan van der Vlugt and Stefan P. Gehring and Pascal Schmidt},
title = {FreqAI: generalizing adaptive modeling for chaotic time-series market forecasts},
journal = {Journal of Open Source Software} }
常见陷阱¶
FreqAI 不能与动态 VolumePairlists
(或任何动态增删交易对的 pairlist 过滤器)一起使用。
这是出于性能考虑——FreqAI 依赖于快速预测/再训练。为此,它需要在 dry/live 实例开始时下载所有训练数据。FreqAI 会自动存储和追加新蜡烛,以便后续再训练。这意味着如果由于 volume pairlist 在 dry run 期间后续新增了交易对,FreqAI 将无法及时准备好数据。不过,FreqAI 可以与 ShufflePairlist
或总交易对数量恒定(但根据成交量重新排序)的 VolumePairlist
配合使用。
进阶学习资料¶
这里我们整理了一些外部资料,深入介绍了 FreqAI 的各个组件:
支持¶
你可以在多个地方获得 FreqAI 的支持,包括 Freqtrade discord、专用的 FreqAI discord,以及 github issues。
致谢¶
FreqAI 由一群为项目贡献各自专长的个人开发。
构思与软件开发: Robert Caulk robcaulk
理论头脑风暴与数据分析: Elin Törnquist th0rntwig
代码审查与软件架构头脑风暴: xmatthias
软件开发: Wagner Costa wagnercosta Emre Suzen aemr3 Timothy Pogue wizrds
测试与 bug 报告: Stefan Gehring bloodhunter4rc, longyu, Andrew Lawless paranoidandy, Pascal Schmidt smidelis, Ryan McMullan smarmau, Juha Nykänen suikula, Johan van der Vlugt jooopiert, Richárd Józsa richardjosza
- Caulk, R. A., Törnquist, E., Voppichler, M., Lawless, A. R., McMullan, R., Santos, W. C., Pogue, T. C., van der Vlugt, J., Gehring, S. P., & Schmidt, P. (2022). FreqAI: generalizing adaptive modeling for chaotic time-series market forecasts. Journal of Open Source Software, 7(80), 4864. 10.21105/joss.04864