工具实战
说明怎样把 CatBoost 的分类概率转成分层、分组和风险规则,避免把概率数字直接当成仓位或收益率解释。
很多团队把 CatBoost 训练完以后,直接拿预测值去排序、分仓,最后发现模型输出和实际风险承受能力并不匹配。问题往往不是模型完全没用,而是输出层处理太粗。
这一讲要解决的是:怎样把 CatBoost 的分类概率转成可用的风险分层和选股分组,而不是把概率数字生硬地当成仓位。
你需要完成四件事:
predict_proba 的结果该怎么读。如果你的交易动作本质上是“从一批资产里挑出更有把握的一组”,那么分类概率通常比直接回归未来收益更容易落地。
常见的标签定义方式包括:
这种定义的好处是,模型输出可以直接解释成“更像正样本的概率”。它不完美,但比直接把一个噪声很大的连续收益预测值拿去下单,通常更稳。
如果你的目标本身就是做分层、分档、分组,分类任务往往比回归更顺手。
概率输出真正难的地方不在于取到一个数字,而在于把这个数字放回交易流程里。下面这套顺序的重点,就是先让概率有可比性,再让它有可执行性。
概率有没有意义,首先取决于你的标签定义是不是稳定。
例如你定义:
这在波动很大的时期可能太敏感;你也可以改成:
第二种定义通常更适合选股分层,因为它直接对应“我要挑更强的一组资产”,而不是试图精确拟合每一个收益数值。
对 CatBoostClassifier 来说,更重要的是:
predict 给出的只是类别判断。predict_proba 才是你做分层的基础。如果模型输出某只股票成为正样本的概率是 0.78,这不意味着“未来收益 78% 会涨”,而更像是在当前训练定义下,它更接近正样本的历史模式。
这是一种相对置信度,不是可直接兑现的收益承诺。
更稳的落地方式通常不是“概率多少就买多少”,而是:
如果最高一层在多个时间片里都更稳,才有资格作为高优先级选股层。
对很多量化团队来说,真正可执行的仓位映射往往是分段规则,例如:
这样做的好处是能减少模型小幅波动对仓位的放大影响。
概率输出不一定天然“像概率”。有些模型分数排序很好,但数值校准很差,例如:
0.9 的样本,真实命中率并没有接近 90%。0.6 到 0.7 的样本,和 0.8 以上的样本实际差距并不大。这时你应该区分两件事:
如果你后续要把概率用于风险分层、触发阈值或额度控制,建议额外做概率校准复核,例如观察分桶命中率是否和概率分段大体一致,而不是只看整体 AUC。
from catboost import CatBoostClassifier, Pool
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 = CatBoostClassifier(
loss_function="Logloss",
eval_metric="AUC",
iterations=800,
learning_rate=0.05,
depth=6,
random_seed=42,
verbose=100,
)
model.fit(train_pool, eval_set=valid_pool, use_best_model=True)
test_df = test_df.copy()
test_df["prob_up"] = model.predict_proba(test_df[feature_cols])[:, 1]
test_df["prob_bucket"] = pd.qcut(test_df["prob_up"], 5, labels=False, duplicates="drop")
这个例子里,真正值得分析的是:
prob_bucket 的平均收益有没有明显单调性。概率分层看起来比回归直观,但它同样会被样本口径、阈值设定和交易约束影响。下面这几类偏差最值得优先检查。
这很常见。说明模型可能能区分正负样本,但还不足以支撑实际交易分层。先看标签定义是不是过宽,再看是否需要加入交易成本和流动性约束后的再评估。
如果高概率层样本过少,组合会很集中,回撤和单日冲击都可能变大。这时更合理的是放宽候选区间,再叠加其他约束筛选,而不是只盯着极少数最高分样本。
这通常说明概率刻度发生漂移。更稳的做法是定期复核分层命中率,而不是长期固定一个绝对阈值不动。
如果你已经做到下面几点,这一讲就算完成:
predict_proba 的结果不能直接当收益率解释。本讲是《CatBoost量化建模完整学习计划》的第 6/9 讲,当前主题是《CatBoost概率输出与风险分层在选股模型中的应用》。
上一讲:第 5 讲《CatBoost模型可解释性:特征贡献、样本归因与异常诊断》。
下一讲:第 7 讲《CatBoost跨市场迁移:A股与期货数据域适配方法》。
风险揭示与免责声明
本页面内容仅用于量化研究与技术交流,旨在展示研究方法与流程,不构成对任何金融产品、证券或衍生品的要约、招揽、推荐或保证。
本文所涉历史数据、回测结果与示例参数不代表未来表现,也不应作为投资决策依据。
市场存在波动、流动性与执行偏差等不确定性,任何策略均可能出现收益波动或阶段性失效。
读者应结合自身风险承受能力进行独立判断,并在必要时咨询持牌专业机构意见。