深圳融克迪特科技有限公司 Logo,金融科技,量化交易,软件开发

深圳融克迪特科技有限公司

RONG CREDIT TECHNOLOGY CO., LTD.

工具实战

【CatBoost 系列 第7讲】CatBoost跨市场迁移:A股与期货数据域适配方法

从标签口径、共享特征层和市场上下文字段出发,说明 CatBoost 在 A 股与期货之间做联合训练或迁移时需要注意的适配方法。

2026-04-29 智铨研究 阅读时长 5 分钟

目录

CatBoost · 工具实战

  1. 第 1 讲【CatBoost 系列 第1讲】CatBoost在量化任务中的优势:有序提升与抗过拟合机制
  2. 第 2 讲【CatBoost 系列 第2讲】CatBoost特征输入规范:类别编码、缺失值与时间切分
  3. 第 3 讲【CatBoost 系列 第3讲】CatBoost参数调参与早停策略:稳定收益优先配置法
  4. 第 4 讲【CatBoost 系列 第4讲】CatBoost在事件驱动策略中的应用:财报与公告特征融合
  5. 第 5 讲【CatBoost 系列 第5讲】CatBoost模型可解释性:特征贡献、样本归因与异常诊断
  6. 第 6 讲【CatBoost 系列 第6讲】CatBoost概率输出与风险分层在选股模型中的应用
  7. 第 7 讲【CatBoost 系列 第7讲】CatBoost跨市场迁移:A股与期货数据域适配方法
  8. 第 8 讲【CatBoost 系列 第8讲】CatBoost模型鲁棒性测试:市场状态切换下的稳定性评估
  9. 第 9 讲【CatBoost 系列 第9讲】CatBoost生产化部署:批量推理、监控告警与漂移修复

一、本讲目标

当一个 CatBoost 模型在 A 股样本上跑得不错时,很多人会自然地问:能不能直接迁到期货、ETF、可转债,甚至海外市场?

答案通常不是“能”或“不能”,而是:先看你迁移的是结构,还是迁移的是口径。

这一讲要解决的是怎样在 A 股和期货这类差异明显的数据域之间做更稳的适配,而不是简单把训练好的模型拿去硬套。

二、环境准备:A股和期货样本到底差在哪

同样叫“量化样本”,A 股和期货在很多关键地方并不一样:

如果你只是把字段名对齐,就认为两个市场能直接共用模型,结果通常不会太好。真正应该先统一的是“可比口径”,例如:

三、操作步骤:跨市场迁移先做口径统一,再做模型适配

跨市场迁移如果没有固定步骤,很容易在“字段大致差不多”的幻觉里直接开始训练。更稳的办法是先统一标签和特征口径,再决定是不是做联合训练。

3.1 第一步:先找共同特征层

不是所有特征都能跨市场迁移。更适合先共享的是这几类:

而下面这些特征通常不适合直接共用:

换句话说,先共享“行为特征”,后共享“市场特有身份特征”。

3.2 第二步:加入市场上下文列

如果你打算做联合训练,不要假装所有样本来自同一种市场。更稳的做法是显式告诉模型:

这些信息本身就可以作为类别特征,帮助模型区分不同市场的分布背景。

3.3 第三步:先做分市场验证

即使你最终想做一个统一模型,验证也不要一锅端。至少要分别看:

如果统一模型只是在总体验证集上看起来还行,但拆开后某一市场明显偏弱,那说明所谓“迁移成功”其实并不成立。

这一步尤其重要,因为跨市场样本量经常不平衡。A 股数据量可能远大于期货样本,如果只看合并后的总指标,模型很可能只是把股票学得更好了,却没有真正提升期货侧表现。对迁移问题来说,拆开看永远比合起来看更诚实。

四、三种更稳的迁移思路

不是所有项目都需要走到“统一模型”这一步。下面三种思路没有绝对高下,重点是要和你的样本规模、研究目标以及部署复杂度匹配。

4.1 一,共享特征工程,不共享最终模型

这是最保守,也最常用的办法。你可以让两个市场用同一套特征构造逻辑,但分别训练各自模型。这样最容易保持口径一致,同时避免把市场差异硬揉在一起。

4.2 二,联合训练,但加入市场标识

如果样本规模足够,且你希望模型学习部分共性结构,可以把两类样本合起来训练,同时加入 market_typeinstrument_class 这类上下文字段。

这时你要重点观察:模型有没有过度偏向样本更多的那一侧市场。

4.3 三,先在大样本市场找结构,再到小样本市场做轻量适配

如果某一市场样本明显少,可以先在大样本市场验证一套特征体系,再在小样本市场用更保守的参数重训,而不是直接拿原模型上线。

五、工具落地:联合训练时的最小样本写法

feature_cols = [
    "market_type",
    "instrument_class",
    "ret_5d",
    "momentum_20d",
    "volatility_20d",
    "volume_ratio",
]

cat_cols = ["market_type", "instrument_class"]

train_pool = Pool(train_df[feature_cols], label=train_df[target_col], cat_features=cat_cols)
valid_pool = Pool(valid_df[feature_cols], label=valid_df[target_col], cat_features=cat_cols)

model = CatBoostRegressor(
    iterations=700,
    learning_rate=0.05,
    depth=6,
    random_seed=42,
    verbose=100,
)

model.fit(train_pool, eval_set=valid_pool, use_best_model=True)

真正落地时要额外做的一件事,是把验证结果按 market_type 再拆开复核,而不是只看一行总分。

六、常见问题排查

跨市场问题的难点在于,很多失效现象看起来像模型问题,实际上是数据定义没统一。所以排查顺序最好始终先查口径,再查特征,再查模型。

还有一个容易忽略的点是收益和波动的量纲。A 股和期货即使都做日频建模,收益分布和波动结构也可能差很多。如果没有做合适的标准化或分市场归一,模型很可能把“市场差异”误学成“预测规律”。

6.1 问题一:联合训练后,总体分数上升,但单市场表现变差

这通常说明模型把样本更多的一侧学得更好了,但牺牲了另一侧。此时不要被总体指标迷惑,应该回到分市场表现重新判断是否值得合并。

6.2 问题二:期货样本表现很不稳定

先排查合约连续化、展期处理、夜盘映射和标签定义,而不是先怪模型。期货数据里很多“模型漂移”其实来自数据口径变化。

6.3 问题三:迁移后最重要的特征全变了

这不一定是坏事,但如果变化过大,需要确认是不是某些市场身份特征压过了原本真正想学的行为特征。

七、本讲完成标准

如果你已经做到下面几点,这一讲就算完成:

  1. 知道跨市场迁移前要先统一口径,而不是只统一字段名。
  2. 知道哪些特征更适合跨市场共享,哪些不该直接复用。
  3. 知道联合训练时为什么要加入市场上下文列。
  4. 知道验证结果必须拆到各市场分别看。

八、系列衔接

本讲是《CatBoost量化建模完整学习计划》的第 7/9 讲,当前主题是《CatBoost跨市场迁移:A股与期货数据域适配方法》。

上一讲:第 6 讲《CatBoost概率输出与风险分层在选股模型中的应用》。

下一讲:第 8 讲《CatBoost模型鲁棒性测试:市场状态切换下的稳定性评估》。

九、风险揭示与免责声明

风险揭示与免责声明

本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。

本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。

市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。

读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。