Skip to article frontmatterSkip to article content

freqai-logo

title: FreqAI 使用指南 subject: FreqTrade FreqAI 指南 subtitle: FreqAI 机器学习模块详解 short_title: FreqAI description: 本文档详细介绍了 FreqAI 机器学习模块的功能和使用方法,包括自适应训练、特征工程、回测等核心功能的说明。

FreqAI

简介

FreqAI 是一款旨在自动化与训练预测性机器学习模型相关的各种任务的软件,该模型可根据一组输入信号生成市场预测。总体而言,FreqAI 旨在成为一个沙盒,便于在实时数据上轻松部署强大的机器学习库(详情)。

功能包括:

快速开始

测试 FreqAI 最简单的方法是在 dry 模式下运行以下命令:

freqtrade trade --config config_examples/config_freqai.example.json --strategy FreqaiExampleStrategy --freqaimodel LightGBMRegressor --strategy-path freqtrade/templates

你将看到自动数据下载的启动过程,随后是同时训练和交易。

一个示例策略、预测模型和配置可作为起点,分别位于 freqtrade/templates/FreqaiExampleStrategy.pyfreqtrade/freqai/prediction_models/LightGBMRegressor.pyconfig_examples/config_freqai.example.json

总体思路

你需要为 FreqAI 提供一组自定义基础指标(与典型 Freqtrade 策略相同)以及目标值(标签)。对于白名单中的每个交易对,FreqAI 都会训练一个模型,根据自定义指标的输入预测目标值。模型会以预定频率持续再训练,以适应市场条件。FreqAI 支持回测策略(在历史数据上模拟定期再训练的现实情况)和 dry/live 部署。在 dry/live 条件下,FreqAI 可以设置为在后台线程中持续再训练,以保持模型尽可能最新。

下图展示了算法的概览,解释了数据处理管道和模型的使用方式。

freqai-algo

重要的机器学习术语

特征(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_freqaitorchimage: 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

References
  1. 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