You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构建先按RETl1、再在其分位内按VOL排序的双重分组投资组合

条件十分位分组实现方法

你需要在原来单维度日期分组的基础上,增加已经生成的RETl1十分位作为第二个分组键,即可实现嵌套分组逻辑,实现代码如下:

# 第一步:先按日期对RET_l1做十分位分组(和你原有逻辑一致)
merged['decile_RETl1'] = merged.groupby(['Date'])['RET_l1'].transform(lambda x: pd.qcut(x, 10, duplicates='drop', labels=False))
merged['decile_RETl1'] = merged['decile_RETl1'] + 1

# 第二步:按日期+RETl1十分位双重分组,在每个子组内部对VOL做十分位分组
merged['decile_turnover_within_RETl1'] = merged.groupby(['Date', 'decile_RETl1'])['VOL'].transform(lambda x: pd.qcut(x, 10, duplicates='drop', labels=False))
merged['decile_turnover_within_RETl1'] = merged['decile_turnover_within_RETl1'] + 1
  • 核心逻辑:groupby(['Date', 'decile_RETl1'])会先将样本按日期拆分,每个日期下再按RETl1十分位拆分为10个子组,每个子组内部单独对VOL做十分位排序,完全符合你要求的先按RETl1分组、再组内按VOL分组的条件排序规则。
  • 注意事项:如果某个日期下的某个RETl1子组样本量不足10,pd.qcut的duplicates='drop'参数会自动合并重复分箱,最终分组数会小于10。若需要严格返回10组,可以提前过滤样本量不足的子组,或将duplicates参数调整为'raise'提前排查数据异常。

内容的提问来源于stack exchange,提问作者M olly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:06:11