Skip to article frontmatterSkip to article content
FreqAI 配置文档

FreqAI 参数表

FreqAI 可用参数的完整列表

参数表

下表列出了 FreqAI 可用的所有配置参数。一些参数在 config_examples/config_freqai.example.json 中有示例。

必填参数标记为 必需,必须按建议方式之一进行设置。

通用配置参数

参数描述
config.freqai 树下的通用配置参数
freqai必需。
包含所有 FreqAI 控制参数的父字典。
数据类型: 字典。
train_period_days必需。
用于训练数据的天数(滑动窗口宽度)。
数据类型: 正整数。
backtest_period_days必需。
在回测期间,从训练好的模型推理的天数,然后滑动上面定义的 train_period_days 窗口并重新训练模型(详见此处)。可以为小数天,但请注意,提供的 timerange 会被此数值除以,以得出完成回测所需的训练次数。
数据类型: 浮点数。
identifier必需。
当前模型的唯一 ID。如果模型保存到磁盘,identifier 允许重新加载特定的预训练模型/数据。
数据类型: 字符串。
live_retrain_hoursdry/live 运行期间的再训练频率。
数据类型: 大于 0 的浮点数。
默认值:0(模型尽可能频繁地再训练)。
expiration_hours如果模型超过 expiration_hours 小时,则避免做出预测。
数据类型: 正整数。
默认值:0(模型永不过期)。
purge_old_models磁盘上保留的模型数量(与回测无关)。默认值为 2,表示 dry/live 运行会在磁盘上保留最新的 2 个模型。设置为 0 保留所有模型。此参数也接受布尔值以保持向后兼容。
数据类型: 整数。
默认值:2
save_backtest_models回测时是否将模型保存到磁盘。回测通过保存预测数据并在后续运行中直接重用这些数据(如需调整入场/出场参数)来实现最高效。将回测模型保存到磁盘还允许用相同的模型 identifier 启动 dry/live 实例时复用这些模型文件。
数据类型: 布尔值。
默认值:False(不保存模型)。
fit_live_predictions_candles用于从预测数据而非训练数据集计算目标(标签)统计的历史蜡烛数量(详见此处)。
数据类型: 正整数。
continual_learning使用最近训练模型的最终状态作为新模型的起点,实现增量学习(详见此处)。请注意,这目前是增量学习的朴素实现,在市场偏离模型时很容易过拟合/陷入局部最优。我们主要为实验目的保留此功能,以便为加密市场等混沌系统的更成熟增量学习方法做好准备。
数据类型: 布尔值。
默认值:False
write_metrics_to_disk将训练时长、推理时长和 CPU 使用情况收集到 json 文件中。
数据类型: 布尔值。
默认值:False
data_kitchen_thread_count
指定用于数据处理(异常值方法、归一化等)的线程数。对训练所用线程数无影响。如果用户未设置(默认),FreqAI 会使用最大线程数减 2(为 Freqtrade 机器人和 FreqUI 留出 1 个物理核心)。
数据类型: 正整数。
activate_tensorboard
是否为支持 tensorboard 的模块(目前为强化学习、XGBoost、Catboost 和 PyTorch)激活 tensorboard。tensorboard 需要安装 Torch,因此你需要使用 torch/RL docker 镜像,或在安装时选择安装 Torch。
数据类型: 布尔值。
默认值:True
wait_for_training_iteration_on_reload
使用 /reload 或 ctrl-c 时,是否等待当前训练迭代完成后再优雅关闭。如果设为 False,FreqAI 会中断当前训练迭代,更快地优雅关闭,但会丢失当前训练迭代。
数据类型: 布尔值。
默认值:True

特征参数

参数描述
freqai.feature_parameters 子字典下的特征参数
feature_parameters包含用于特征集工程的参数的字典。详情和示例见此处
数据类型: 字典。
include_timeframes所有在 feature_engineering_expand_*() 中创建的指标所用的时间框架列表。该列表作为特征添加到基础指标数据集中。
数据类型: 时间框架(字符串)列表。
include_corr_pairlistFreqAI 会将该相关币种列表作为额外特征添加到所有 pair_whitelist 币种。特征工程期间在 feature_engineering_expand_*() 中设置的所有指标都会为每个相关币种创建。相关币种特征会添加到基础指标数据集中。
数据类型: 资产(字符串)列表。
label_period_candles创建标签时面向未来的蜡烛数量。可在 set_freqai_targets() 中使用(详细用法见 templates/FreqaiExampleStrategy.py)。此参数非必需,你可以自定义标签并选择是否使用该参数。请参见 templates/FreqaiExampleStrategy.py 示例。
数据类型: 正整数。
include_shifted_candles将前几根蜡烛的特征添加到后续蜡烛,以引入历史信息。如果使用,FreqAI 会复制并移动所有特征,使前 include_shifted_candles 根蜡烛的信息可用于后续蜡烛。
数据类型: 正整数。
weight_factor按时间新旧对训练数据点加权(详见此处)。
数据类型: 正浮点数(通常 < 1)。
indicator_max_period_candles已废弃(#7325)。已被在策略中设置的 startup_candle_count 替代。startup_candle_count 与时间框架无关,定义了在 feature_engineering_*() 中创建指标时用到的最大周期。FreqAI 会结合 include_time_frames 中的最大时间框架计算需要下载的数据点数,以确保首个数据点不含 NaN。
数据类型: 正整数。
indicator_periods_candles用于计算指标的周期。指标会添加到基础指标数据集中。
数据类型: 正整数列表。
principal_component_analysis是否自动用主成分分析(PCA)降维。详见此处
数据类型: 布尔值。
默认值:False
plot_feature_importances为每个模型创建特征重要性图,显示前/后 plot_feature_importances 个特征。图表保存在 user_data/models/<identifier>/sub-train-<COIN>_<timestamp>.html
数据类型: 整数。
默认值:0
DI_threshold设置大于 0 时启用 Dissimilarity Index 进行异常值检测。详见此处
数据类型: 正浮点数(通常 < 1)。
use_SVM_to_remove_outliers训练支持向量机(SVM)检测并移除训练集和输入数据中的异常值。详见此处
数据类型: 布尔值。
svm_paramsSklearn SGDOneClassSVM() 的所有可用参数。部分参数详见此处
数据类型: 字典。
use_DBSCAN_to_remove_outliers用 DBSCAN 算法聚类数据,识别并移除训练和预测数据中的异常值。详见此处
数据类型: 布尔值。
noise_standard_deviation若设置,FreqAI 会为训练特征添加噪声以防止过拟合。FreqAI 会从高斯分布生成标准差为 noise_standard_deviation 的随机偏差并加到所有数据点。noise_standard_deviation 应相对于归一化空间设置,即在 -1 到 1 之间。因为 FreqAI 中的数据总是归一化到 -1 到 1,noise_standard_deviation: 0.05 意味着 32% 的数据会被随机增减超过 2.5%(即落在第一个标准差内的数据百分比)。
数据类型: 整数。
默认值:0
outlier_protection_percentage启用后可防止异常值检测方法丢弃过多数据。如果 SVM 或 DBSCAN 检测为异常值的点超过 outlier_protection_percentage%,FreqAI 会记录警告并忽略异常值检测,即保留原始数据集。如果触发了异常值保护,则不会基于该训练集做出预测。
数据类型: 浮点数。
默认值:30
reverse_train_test_order拆分特征数据集(见下文),用最新的数据拆分做训练,历史数据做测试。这样模型可以训练到最新数据点,同时避免过拟合。但在使用前应理解该参数的非常规性质。
数据类型: 布尔值。
默认值:False(不反转)。
shuffle_after_split拆分数据为训练集和测试集后,分别对两者进行洗牌。
数据类型: 布尔值。
默认值:False
buffer_train_data_candles在指标填充后,从训练数据的开头和结尾各裁剪 buffer_train_data_candles 个数据点。主要用于预测极大/极小值时,argrelextrema 函数无法在时间范围边缘判断极值。为提高模型准确性,最好在完整时间范围上计算 argrelextrema,然后用此参数按核函数裁剪边缘数据。若目标为移动价格,则不需要此 buffer,因为时间范围末尾的移动蜡烛会是 NaN,FreqAI 会自动从训练集中剔除这些数据。
数据类型: 整数。
默认值:0

数据拆分参数

参数描述
freqai.data_split_parameters 子字典下的数据拆分参数
data_split_parameters包含所有 scikit-learn test_train_split() 可用参数的字典,详见此处(外部网站)。
数据类型: 字典。
test_size用于测试而非训练的数据比例。
数据类型: 小于 1 的正浮点数。
shuffle训练期间是否对训练数据点洗牌。通常在时间序列预测中为保持数据的时间顺序,设为 False
数据类型: 布尔值。
默认值:False

模型训练参数

参数描述
freqai.model_training_parameters 子字典下的模型训练参数
model_training_parameters灵活的字典,包含所选模型库的所有可用参数。例如,若用 LightGBMRegressor,该字典可包含 LightGBMRegressor 的任意参数(外部网站)。如选用其他模型,则可包含该模型的任意参数。当前可用模型列表见此处
数据类型: 字典。
n_estimators训练模型时要拟合的提升树数量。
数据类型: 整数。
learning_rate训练模型时的提升学习率。
数据类型: 浮点数。
n_jobs, thread_count, task_type设置并行处理的线程数和 task_typegpucpu)。不同模型库参数名不同。
数据类型: 浮点数。

强化学习参数

参数描述
freqai.rl_config 子字典下的强化学习参数
rl_config包含强化学习模型控制参数的字典。
数据类型: 字典。
train_cycles训练步数将设为 train_cycles * 训练数据点数
数据类型: 整数。
max_trade_duration_candles指导智能体训练时保持交易低于期望长度。用法见 prediction_models/ReinforcementLearner.py 中可自定义的 calculate_reward() 函数。
数据类型: 整数。
model_typestable_baselines3 或 SBcontrib 的模型字符串。可用字符串包括:'TRPO', 'ARS', 'RecurrentPPO', 'MaskablePPO', 'PPO', 'A2C', 'DQN'。用户应确保 model_training_parameters 与所选 stable_baselines3 模型的参数一致,详见其文档。PPO 文档(外部网站)
数据类型: 字符串。
policy_typestable_baselines3 可用的策略类型之一。
数据类型: 字符串。
max_training_drawdown_pct智能体在训练期间允许的最大回撤。
数据类型: 浮点数。
默认值:0.8
cpu_count分配给强化学习训练进程的线程/CPU 数(取决于是否选择了 ReinforcementLearning_multiproc)。建议保持默认,默认值为物理核心总数减 1。
数据类型: 整数。
model_reward_parameters用于 ReinforcementLearner.py 中可自定义 calculate_reward() 函数的参数。
数据类型: 整数。
add_state_info告诉 FreqAI 在训练和推理时将状态信息包含在特征集中。当前状态变量包括交易时长、当前利润、持仓方向。仅在 dry/live 运行时可用,回测时自动关闭。
数据类型: 布尔值。
默认值:False
net_arch网络结构,详见 stable_baselines3 文档。简言之:[<共享层>, dict(vf=[<非共享价值网络层>], pi=[<非共享策略网络层>])]。默认值为 [128, 128],即 2 层共享隐藏层,每层 128 单元。
randomize_starting_position随机化每个 episode 的起始点以避免过拟合。
数据类型: 布尔值。
默认值:False
drop_ohlc_from_features训练期间不将归一化 ohlc 数据包含在传递给智能体的特征集中(ohlc 仍用于驱动环境)。
数据类型: 布尔值。
默认值: False
progress_bar显示进度条,包括当前进度、已用时间和预计剩余时间。
数据类型: 布尔值。
默认值:False

PyTorch 参数

通用

参数描述
freqai.model_training_parameters 子字典下的模型训练参数
learning_rate传递给优化器的学习率。
数据类型: 浮点数。
默认值:3e-4
model_kwargs传递给模型类的参数。
数据类型: 字典。
默认值:{}
trainer_kwargs传递给训练器类的参数。
数据类型: 字典。
默认值:{}

trainer_kwargs

参数描述
freqai.model_training_parameters.model_kwargs 子字典下的模型训练参数
n_epochsn_epochs 参数是 PyTorch 训练循环中的关键设置,决定整个训练集将用于更新模型参数的次数。一个 epoch 表示完整遍历一次训练集。会覆盖 n_stepsn_epochsn_steps 必须设置一个。

数据类型: int,可选。
默认值:10
n_steps设置 n_epochs 的另一种方式——训练迭代次数。这里的迭代指调用 optimizer.step() 的次数。如果设置了 n_epochs,则忽略。简化公式:

n_epochs = n_steps / (n_obs / batch_size)

这样做的动机是 n_steps 更易于优化,并能在不同 n_obs(数据点数)下保持稳定。

数据类型: int,可选。
默认值:None
batch_size训练时使用的批次大小。

数据类型: int。
默认值:64

其他参数

参数描述
其他参数
freqai.keras如果所选模型使用 Keras(典型于基于 TensorFlow 的预测模型),需激活此标志,以便模型保存/加载遵循 Keras 标准。
数据类型: 布尔值。
默认值:False
freqai.conv_width神经网络输入张量的宽度。可替代移动蜡烛(include_shifted_candles),通过将历史数据点作为张量的第二维输入。技术上也可用于回归器,但只会增加计算开销,不影响模型训练/预测。
数据类型: 整数。
默认值:2
freqai.reduce_df_footprint将所有数值列转换为 float32/int32,旨在减少内存/磁盘占用并加快训练/推理。此参数在 Freqtrade 配置文件主级别设置(不在 FreqAI 内部)。
数据类型: 布尔值。
默认值:False