# 增强版情绪伤害策略 - 算法详细说明 ## 策略概述 增强版情绪伤害策略是一种基于市场情绪指标(恐惧与贪婪指数)结合技术分析的量化交易策略。该策略通过在市场恐慌时转换为现金,在市场恢复时投资高波动性股票来获取收益。 ## 核心算法组件 ### 1. 基于恐惧与贪婪指数的市场择时 - **数据源**: CNN恐惧与贪婪指数(0-100刻度) - **恐惧阈值**: 25(市场恐慌触发点) - **贪婪阈值**: 75(获利了结触发点) - **逻辑**: - 当F&G < 25时:转为现金(避免进一步损失) - 当F&G恢复 > 25时:选择高波动股票(恢复阶段投资) - 当F&G > 75时:转为QQQ(安全港) ### 2. 渐进式调仓系统(4步调仓) **关键修复**: 原算法存在复利错误,产生了不可能的收益率。 #### 修复后的实现: ```python def start_transition(self, date, target_type, stocks=None): # 在开始时计算总资金,存储固定分配计划防止复利错误 def gradual_transition(self, date, target_type, stocks=None): # 每步执行预定分配的1/4,不重新计算总价值 ``` **调仓类型**: - **转现金**: 在4个交易日内卖出所有非QQQ持仓 - **转波动股**: 用可用现金买入选定的高波动股票 - **转QQQ**: 在4天内卖出所有持仓并买入QQQ **为什么4步**: 减少大额仓位变化的市场冲击和滑点 ### 3. 技术指标过滤系统 高波动股票选择需要满足3个指标中至少2个显示上涨趋势: #### MACD黄金交叉 ```python macd > macd_signal # 当前MACD高于信号线 ``` #### RSI向上趋势 ```python current_rsi > 30 # RSI大于30(避免超卖) ``` #### 移动平均线交叉(5/20周期) ```python sma_5 > sma_20 # 短期动量超过长期 ``` ### 4. 止损保护(15%规则) - **触发条件**: 任何波动股持仓跌破平均买入价15% - **执行动作**: 立即卖出该持仓并买入等值QQQ - **目的**: 风险管理,防止大额损失 ## 状态机实现 ``` QQQ_HOLD → [F&G < 25] → FEAR_TRANSITION → CASH_WAIT ↓ (4步) CASH_WAIT → [F&G ≥ 25] → GREED_TRANSITION → VOLATILE_STOCKS ↓ (4步) ↓ [F&G > 75] QQQ_TRANSITION ↓ (4步) QQQ_HOLD ``` ## 关键算法修复 ### 原始BUG: 初始化错误 ```python # 错误(导致资金翻倍): self.cash = initial_capital # 设置现金 self.positions['QQQ'] = qqq_shares # 买入QQQ但没有清零现金 ``` ### 修复后的算法: ```python # 正确(资金正常): self.positions['QQQ'] = qqq_shares self.cash = 0 # 修复: 买入QQQ后清零现金 ``` ### 股票选择逻辑修复 ```python # 原来: 只使用波动率过滤(过于简单) if vol > 0.2: # 20%波动率阈值过高 volatilities[ticker] = vol # 修复后: 技术指标过滤 + 波动率排序 if self.check_technical_indicators(ticker, date): # RSI+MACD+SMA过滤 if vol > 0.1: # 降低波动率阈值 qualified_stocks.append((ticker, vol)) ``` ### 交易逻辑修复 ```python # 原来: 等权重买入所有股票 amount_per_stock = cash / len(stocks) # 分散投资 for ticker in stocks: buy(ticker, amount_per_stock) # 修复后: 每次买入波动性最强的1支股票 current_step_index = min(self.current_step, len(stocks) - 1) ticker = stocks[current_step_index] # 按波动性排序,每次买最强的 buy(ticker, cash_this_step) # 最多同时持有4支股票 ``` ## 性能特征 ### 风险管理功能: - **最大回撤控制**: 市场恐慌时转为现金 - **仓位管理**: 最多同时持有4支高波动股票 - **止损保护**: 每个持仓最大损失15% - **渐进执行**: 4步调仓减少市场冲击 ### 预期行为: - **牛市**: 通过QQQ适度参与 - **熊市**: 恐慌阶段现金保值 - **恢复阶段**: 高波动股票攻击性持仓 - **过热市场**: 防御性回到QQQ ## 技术实现细节 ### 数据库依赖: - `fear_greed_index`: CNN恐惧与贪婪历史数据 - `{ticker}`: 个股OHLCV + 技术指标数据 - `qqq`: QQQ ETF历史价格(真实数据) - `fear_greed_data.spy_close`: SPY基准数据 ### 计算的性能指标: - 总回报、年化回报、夏普比率 - 最大回撤和恢复期 - 胜率和交易频率 - 与市场基准的相关性 ## 已知限制与未来改进 ### 当前问题: 1. **技术指标过滤过严**: 导致大部分恐慌期找不到合适股票 2. **交易记录不完整**: gradual_transition中的交易未被记录 3. **市场制度变化**: 可能无法适应结构性市场变化 ### 计划增强: 1. **放宽技术指标**: 降低过滤标准,提高股票选择成功率 2. **完善交易记录**: 确保所有交易都被正确记录 3. **动态阈值**: 根据市场波动调整F&G阈值 4. **风险缩放**: 基于波动率估算调整仓位大小 ## 回测结果(修复后) - **期间**: 2007-2025(18年) - **总回报**: 1258.3%(修复初始化BUG后) - **年化回报**: 15.7%(略低于QQQ的16.3%) - **最大回撤**: 待优化 - **交易次数**: 0(技术指标过滤太严格) ## 文件结构: ``` strategy/emotional-damage/ ├── backtest_emotional_damage_enhanced_v2.py # 主策略(已修复) ├── generate_enhanced_pdf_report.py # 报告生成器 ├── enhanced_emotional_damage_strategy_report_*.pdf # 结果报告 └── enhanced-emotional-damage.txt # 本文档 ``` **状态**: 策略逻辑已修复,但技术指标过滤需要优化以提高选股成功率。目前表现接近QQQ买入持有策略,但缺少波动股票投资机会。