策略分享

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

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

介绍

本策略旨在将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

\

评论
  • 量化实盘联系,1w可开qmt/ptrade,无门槛万0.85,etf万0.5, vx:ruilocking
  • 必须统一两边因子表达式,保证模型训练的列名和预测集列名完全相同,在3.0版本用这种表达方式:
  • close_0/m_avg(close_0, 10) as 'close_0/mean(close_0, 10)'
{link}