策略分享

1.0环境里的StockRanker模型如何迁移到3.0环境

由iquant创建,最终由iquant 被浏览 128 用户

介绍

本策略旨在将1.0版本中训练好的StockRanker模型参数直接传入到3.0环境下进行调用。

主要包括以下步骤:

  • 进入1.0环境下训练模型,将训练好的模型导出
  • 进入3.0环境下读出导入数据

具体实现

导出训练数据

打开1.0环境中的“新手学习模板”,运行全部,确保能够正常运行策略。

选择m13训练数据源、m3特征列表, 将模型参数保存

# 进入旧版 userbox
 
# 1. 导出训练数据, m13 训练数据来源,m4 是特征列表
def read_hdf(ds):
    df_list = [d for _, d in ds.iter_df()]
    if not df_list:
        return None
    return pd.concat(df_list, copy=False, ignore_index=True)
 
df = read_hdf(m13.data)
features = [
    "date",
    "instrument",
    "label"
] + m3.data.read()
df[features].to_parquet("/home/bigquant/work/train_20240603.pq")

读入导出数据

打开3.0环境,找到导出的文件,将文件拖入至userlib文件夹下:

读入导出数据(注意路径里的 bigquant -> aiuser)并创建一个临时 DataSource

import pandas as pd

df = pd.read_parquet("/home/aiuser/work/userlib/train_20240603.pq")

import dai
dai.DataSource.write_bdb(df)

如上, 运行完成后会出现唯一对应的id, 将临时id填入DataSource模块中:

m2的StockRanker模块中,为了兼容旧版,StockRanker数据排序字段填写 date(数据排序字段,对输入数据排序,多个字段用英文逗号分隔,为空则不对数据排序;一般是使用date instrument,兼容旧版使用date)

对比两种环境下模型:

  • 1.0环境:

  • 3.0环境:


可以看到,在两种环境下的特征重要性是一致的。

\

代码

https://bigquant.com/codesharev2/976b22bc-0ca4-44ae-b071-214ac3d3f491

\

评论
  • 挺麻烦的
  • 必须统一两边因子表达式,保证模型训练的列名和预测集列名完全相同,在3.0版本用这种表达方式:
  • close_0/m_avg(close_0, 10) as 'close_0/mean(close_0, 10)'
  • 老师我原有的1.0策略直接复制代码进去运行,报错如下,请问如何解决
  • 如果特征中有con=表达式这种写法,需要在输入特征列表后增加一个特征列表因子简称模块,把con给提取出来
  • 然后导出特征的时候,使用m10特征列表因子简称
  • 补充贴图
{link}