← 文档库
📄 文档learn/2026-06-08-反转策略权重增强方案/spec.md
🌱 创建于2026-06-27 01:04
✏️ 修改于2026-06-27 01:04
👁️ 浏览量—
🔗 短链接/~learn/s/6dfc1bd0
🔐 可见性

反转策略权重增强方案

文档目标

本文档记录择时策略体系中「反转策略权重偏低」问题的根因分析、用户自身的思考、以及 AI 辅助提出的改进方案与学术参考。目标是设计一套能让反转策略在「低估+恐慌」的黄金窗口期获得足够权重的机制。

一句话结论

当前基于历史回测收益的等权/风险平价加权方式,天然压制了反转策略(低频、低资金占用、极高条件胜率)的权重。正确的做法是引入条件置信度乘数,根据估值分位和恐慌程度动态放大反转策略在极端窗口的仓位,同时通过风险预算框架保持组合总杠杆可控。

一、问题背景

1. 策略两大阵营

择时策略池分为两类:

类型 代表策略 特征
---------------------
趋势策略 均线交叉、SAR、RSI超买追涨 高频、中等胜率、资金利用率高、历史回测收益高
反转策略 RSI超卖、布林带均值回归、动量弹球 低频(一年1-2次)、极高胜率(尤其低估区)、资金占用率极低

2. 核心矛盾

由于组合仓位按各策略的历史回测收益/夏普比率加权:

但反转策略的真正价值不在于「平均表现」,而在于「极端条件下的确定性」。历史案例:某次市场恐慌 + 估值低位时反转策略发出买入信号(胜率接近 100%),但由于组合中反转策略权重仅占极小比例,实际建仓极少,错失了确定性的超额收益。

3. 反转策略的独特优势

二、用户自身思考

用户已识别的改进方向:

方案:低估过滤 × 权重乘数

用户提出的顾虑

三、问题诊断(架构层面)

根因:同质化加权无法区分异质化信号质量

当前架构的数据流如下图所示—— 权重分配只看全局平均表现,不区 分当前信号的条 件质量:

Mermaid Live View

Mermaid Live Edit: https://mermaid.live/edit#pako:eNpdkltLG0EUx7_KMCAYNDTtU7sPBTVe-lAo2Kd2pQzJZLOwuyObXYqIJaVqNJqk1isxlRgovdiGWtBAN6nfpezM7n6Lntlto3Uehjln_v_fOXNZxjmWp1jBBYO9zBWJ7aCnWdVCMCaeqzj4dhDsfxDnbQWFl1u8epUk0BjijVo4-JqEKl5A6fRDNAkOjVrUJg59UdI1ixil0RTsJsDJWDQFovl4D91BT1hJd3RmDTVTsSYrNY7EaEsThsFyRIoeE4to1FZVS2xv8vo6b_zgxyfiYkvsXQbHVV5ti_dvhqRsTJoG0s3OFQSaqFJDr-5n0g8yIwAbjc6OwovVqLLDNz4He5-CeiV1izIDlJsHvqbczaTvJRR_UI86OzDzWhso14jpGDErEXGH4rwiyh76vf4OiVY58DZ8b9cf1Ib6mUSfBLNxMAfm6LAbdY6U_y4e_KK16Xs9Xu4HzVX_6pQ3en-b8fvfx8Trt2JtOwWeL2G9x38dyoZH0K2Cc3GNR_K5vV1x0lJQcNrl3aYofxStn36_GXbO5OnWpAWPY5PaJtHz8GmWJUDFTpGaVMUKLPO0QFzDUbFqrYCUuA6bX7JyWHFsl45jdzEPj5rViWYTEysF-CCQtZmrFYfRIrGeMWb-s2i2LCXXK38AwLIvwA
flowchart TD A["策略池: 趋势策略 + 反转策略"] --> B["generate_signals()"] B --> C["Signal / Position"] C --> D["StrategyAllocationManager\n按历史回测收益加权"] D --> E["趋势策略: 权重 ~80-90%\n(高资金利用率)"] D --> F["反转策略: 权重 ~10-20%\n(低频低占用)"] E --> G["加权汇总 → 最终仓位"] F --> G G --> H["问题: 反转策略最有价值的信号\n(低估+恐慌) 只获得 ~10% 仓位"] H --> I["结果: 确定性机会被低配"]

问题在于:权重分配只看策略的「全局平均表现」,不看不问策略的「当前信号条件质量」。

这等价于:

结果:专业牌手唯一一次大机会来临时,只有 10% 的资金可用。

四、改进方案

方案 A:条件置信度乘数(推荐首选)

改进后的数据流如下—— 在 StrategyAllocationManager 之后新 增一层置信度调整层:

Mermaid Live View

Mermaid Live Edit: https://mermaid.live/edit#pako:eNqNk1tLG0EYhv_KMFBQMDUJFCQUi0k8H6m9arcXQzJZF5JdWTdUiUKwqKkhUTBK6iHReiilHkEkmkT_zM6s-Red2cluVLzoXs03873PvPPOTgpGtCiGARiLa98iU0g3wKewpAL29XyRoHW2ZW0e06t9CX4FHk83CPrY7ONNlqw-iDVJUq1CmWbWwaQiqyjeOaHNKIaiqUzR5AihnwnJWu6xfvq_wqDPVoaYcNLQkYHluZ54XIsg3jWKVCRjnVFI-c46SNO9742VHMksN5ZyLYJfEEQVsosww33EspLAQTSDoyFNjSlRrEbwCJqzeW1065L8KpGrxXYXFLalvSknEeuqSkrZDxJcEOu9fH3-RTJwHvSxzYQzs5Ija0WOt3auG-ntFtvRPguHafuZ1qxdknSNncqss7MdkfNtV9ZvWxpIPW9qWRpoYs16njWAtvfA733TzsGD_GLr5-bDAbk7MW-LdPMyALo8Pu8sT_PoN7ldooV7NjCrGwzp7ugQ6dkhqVRAm9_r6Woih15D-jz-WXE_dPe0ef6XrMbfou2uGzio4ddQ3rfvOIoWbqzaHxHUC3ODdhwjPO90le7t071lepim5WO3Y0h0iGL4adH3tBixi9GUAG2WyNoh6AZmZbXxc72V7qiTRfGCmx6z38oPelFg_lh4oBOYtSJZypB8ls2I38J14ojJ-gkXj3PxzjXNHz_eb5CVO7dvzLYyLopxu5jgB9xNW9WMtXNO91fcFGAHTGA9gZQoe8wpLpGgMYUTWIIBNoziGErGDQlK6gJrRUlDm5xTIzBg6EncAZPTUfa-wgqSdZSAgRiKz7BZXUvKU241jdTPmpZwJLLOt-LjhX9FDc-b
flowchart TD A["策略池"] --> B1["趋势策略\n生成 Signal/Position"] A --> B2["反转策略\n生成 Signal/Position"] B1 --> C["StrategyAllocationManager\n基础权重分配"] B2 --> C C --> D["RegimeBasedConfidenceLayer\n(新增层)"] D --> E{"策略类型?"} E -->|"趋势策略"| F["权重不变\n(直通)"] E -->|"反转策略"| G["估值分位判定"] G --> H{"估值分位?"} H -->|"低估 (< 20%)"| I["置信度乘数: 8-10x\n大幅放大仓位"] H -->|"正常 (20-80%)"| J["置信度乘数: 1-2x\n基本不变"] H -->|"高估 (> 80%)"| K["置信度乘数: 0.5x\n收缩反转仓位"] I --> L["总杠杆检查"] J --> L K --> L F --> L L --> M{"总敞口 > 上限?"} M -->|"是"| N["等比缩放 / 优先压缩趋势"] M -->|"否"| O["直接输出"] N --> O O --> P["最终目标仓位"]

不在策略分配层改,而是在仓位管理器中新增加一层 RegimeBasedConfidenceLayer,对反转策略的 position 做二次调整:

# 伪代码
class RegimeBasedConfidenceLayer:
    def adjust_position(self, df, strategy_type, valuation_percentile):
        if strategy_type == 'reversal':
            # 估值越低,乘数越高(平滑过渡,非二元开关)
            # valuation_percentile=0.1 → multiplier≈8-10x
            # valuation_percentile=0.5 → multiplier≈1-2x
            # valuation_percentile=0.8 → multiplier≈0.5x(高估时反转信号不可信)
            multiplier = self._sigmoid_multiplier(valuation_percentile)
            df['position'] *= multiplier
        return df

    def _sigmoid_multiplier(self, pct):
        # 在 pct=0.2 附近过渡最陡,最高放大 10x,最低缩至 0.5x
        return 0.5 + 9.5 / (1 + np.exp((pct - 0.2) * 15))

优势:

方案 B:风险预算视角

不给每个策略固定权重,而是给每个策略一个风险预算区间,预算的释放由市场状态决定:

市场状态 趋势策略风险预算 反转策略风险预算 说明
---------:---::---:------
正常/牛市 80% 20%(不触发则闲置) 趋势策略主攻
高估/亢奋 40% 60%(趋势减仓 + 反转防守) 反转策略权重上升但估值高时胜率降
低估/恐慌 30% 70%(反转信号极度可信) 反转策略主力窗口

优势:

方案 C:Meta-Labeling 二次判别(学术界前沿)

参考 Lopez de Prado (2018) 的 Meta-Labeling 框架:

输入特征(第二层模型):

方案 D:总体仓位联动

当反转策略被条件乘数放大时,组合总杠杆可能超标。需要配套机制:

total_raw_position = sum(strategy.position * strategy.weight * confidence_multiplier)
if total_raw_position > max_total_exposure:
    scale_factor = max_total_exposure / total_raw_position
    # 按比例缩放所有仓位,或优先压缩趋势策略仓位

五、策略类型自动识别(已实现)

核心洞察:不能靠标签,要靠数据

用户指出:同一段策略代码,换一组参数,可能从趋势策略变成反转策略。例如 MVAndRSIStrategy 把 reverse_signals 从 True 改成 False,行为就完全反了。因此不能靠策略名称或代码标签来判断类型,必须根据回测实际跑出的行为特征来判定。

StrategyTypeClassifier 设计(v3 — 三选二规则)

已实现 StrategyTypeClassifier 类,文件:StrategyTypeClassifier.py

三条条件(满足 ≥2 条即判定):

条件 趋势策略 反转策略
------------------------
胜率 < 55% ≥ 55%
资金占用率 > 40% ≤ 40%
盈亏比 > 150% ≤ 150%

分类规则:

设计理由:

测试验证 (399102.SZ / 2010-2026 / 14个策略)

策略                             胜率    资占   盈亏比  趋势分 反转分  分类
RSIStrategy (default)          66.7%  57.7%   85.0%    1     2   反转
RSIStrategy (rsi_buy=30)      100.0%   1.9%    inf%    1     2   反转
MomentumBounce (default)       55.4%  34.8%  155.8%    1     2   反转
FourMA (default)               52.3%  52.8%  278.1%    3     0   趋势 ← 修复!
FourMA (16-24-14-18)           52.3%  52.8%  278.1%    3     0   趋势
RSIAndMA (default)             69.4%  24.9%  174.8%    1     2   反转
MVAndRSI (reversed)            57.9%   0.5%   61.1%    0     3   反转
MVAndRSI (normal)              57.9%  98.0%  419.2%    2     1   趋势
CumulativeTrend (default)      56.7%  27.3%  292.0%    1     2   反转
VolumeRSIAndMA (default)       66.7%  16.5%  119.9%    0     3   反转
DualGroupFourMA (default)      33.9%  49.8%  305.2%    3     0   趋势
EnhancedFourMA (default)       42.5%   0.0%  200.7%    2     1   趋势

总计: 趋势×5  反转×7  均衡×0

解读:

六、学术参考

1. 均值回归的可预测性

Conrad & Kaul (1998), "An Anatomy of Trading Strategies"

2. 时间序列动量与反转的共存

Moskowitz, Ooi & Pedersen (2012), "Time Series Momentum", Journal of Financial Economics

3. Meta-Labeling 框架

Lopez de Prado (2018), *Advances in Financial Machine Learning*, Wiley

4. 条件资产配置

Asness, Ilmanen, Israel & Moskowitz (2015), "Investing with Style"

七、实施路径建议

最小可落地改动

后续迭代方向

八、风险与待确认

▶ 📜 变更历史(1 次提交)

4616ca62026-06-27 01:04docs: 同步 learn/ 文档 & 工作区改动
🍃quant 知识库
by 伊甸园和枫

🔊 播放设置

勾选音源后调节配比,总和自动归一化
已选 0 个 · 合计:0%
合成中...
00:00/00:00
1.0x

分享图片

生成中...