策略
板块内贝塔残差周度反转:对24只US大盘股进行板块中性多空(USEQ 1-DAY,板块ETF仅作信号参考)
结局: 已放弃
SectorResidualWeeklyReversalLS
结局总结
SectorResidualWeeklyReversalLS测试了一个假设:剔除股票1周收益中的板块-ETF贝塔后,其特质部分会在板块内反转。该策略在零佣金USEQ场所交易横跨科技、金融、能源和医疗保健板块的24只US大盘股,并在每个板块内以等额美元建立多空腿。尽管假设明确提醒应使用增量滚动更新,该运行仍在2次迭代中遭遇三次编码超时,最终被放弃。它从未进入回测阶段,因此反转优势仍未经检验。
假设
一种板块中性、美元中性、多标的LONG-SHORT股票短期反转策略,交易US股票(场所USEQ,1-DAY柱线,UsEquitiesCollector Yahoo拆股调整日线历史数据;每条腿在本地目录中的验证数据至少回溯至1999-05)。学术依据:Da、Liu与Schaumburg(2014,《Management Science》,《A Closer Look at the Short-Term Return Reversal》)以及Hameed与Mian(2015)指出,经典的1周反转在原始收益上较弱,因为行业动量抵消了它。剔除行业/板块成分后,剩余的特质残差会强烈反转。反转源于为非信息性订单流提供流动性。股票池:4个板块 × 6只股票。科技:AAPL、MSFT、NVDA、ORCL、CSCO、ADBE(参考XLK)。金融:JPM、BAC、WFC、C、GS、MS(参考XLF)。能源:XOM、CVX、COP、EOG、SLB、OXY(参考XLE)。医疗保健:JNJ、PFE、MRK、ABT、UNH、LLY(参考XLV)。板块ETF为SIGNAL-ONLY,绝不交易。每周再平衡时,计算每只股票过去`lookback_days`个交易时段的残差收益:resid_i = r_i − beta_i × r_sector。beta_i是对其所属板块ETF的滚动120时段OLS贝塔,截断在[0.3, 2.0]。再按该股票自身60时段日残差波动率缩放,得到z_i。在EACH个板块内,做多`n_per_side`个z分数最低者,做空`n_per_side`个z分数最高者,金额相等。这样构建可实现板块中性和美元中性,从而大幅对冲市场和板块贝塔。触发信号是市场观测值(横截面残差排名),不是日历日期。周度节奏仅作为评估时钟。这与失效的加密货币横截面反转策略属于不同策略族:本策略运行于零佣金场所,并使用相对于板块ETF对冲的残差。它也不是双重股权类别配对策略(该策略在0.04%收敛阈值下以QA告终),也不是PEAD(该策略因沙盒超时而失败)。IMPLEMENTATION NOTE(沙盒超时导致数个多标的日频运行失败):为每个标的维护固定长度双端队列,并在on_bar/on_extra_bar中增量更新滚动和。在每个标的都已打印相同交易日的再平衡柱线上,进行一次O(N)排序ONLY。绝不重新扫描历史。场所选择理由:USEQ占语料的5.6%,而多空策略占比不足(16.8%)。完全避开了BINANCE集中度(61.9%)和BTC。
成交覆盖不足的类别:多空(16.8%对比45%+目标)和非Binance场所(USEQ 5.6%),且BTC敞口为零。其机制是在零佣金场所对板块对冲残差提供流动性并捕捉反转。它避开了简报中所有失效的策略族:没有日历触发(L179)、没有补充数据流门槛(L111)、没有期权(L102)、没有低于手续费的加密货币微观结构问题,并且每条腿都在目录中得到验证(L186)。开发者应将杠杆设为约1.5-2.0(Reg-T 2x),以承载1.5x总敞口;杠杆有意不在fixed中锁定。
coding_stuck_3_timeouts
实现
对USEQ日线上的US大盘股进行板块和美元中性的短期反转交易。24只股票分属4个板块(科技、金融、能源、医疗保健);XLK/XLF/XLE/XLV仅作信号参考,绝不交易。每个交易时段计算股票在lookback_days内的残差收益:对数收益减去120时段OLS贝塔乘以板块ETF收益,其中贝塔截断在[0.3, 2.0]。再用该股票60时段日残差波动率和sqrt(lookback_days)缩放,得到z分数。每hold_days个交易日(按柱线时间戳锚定日历区间),在每个板块内,将第j个残差z分数最低者与第j个最高者配对,前者做多、后者做空,j < n_per_side。仅当配对的半价差(z_short - z_long)/2 >= min_abs_z时才持有。各腿名义金额相等:equity * min(gross_exposure, leverage) / (2 * n_per_side * 4)。维持原方向的持仓腿不重新调整规模。风险控制:每腿止损设为leg_stop_sigma * 入场残差sigma * sqrt(hold_days);组合止损则在自上次再平衡以来从峰值回撤达到8% MTM时平掉所有仓位。
该策略实现Da-Liu-Schaumburg/Hameed-Mian研究:行业动量会掩盖周度反转,因此剔除板块-ETF贝塔成分,只交易特质残差,在板块内做多输家/做空赢家。构建为板块中性和美元中性。所有固定计划值(贝塔120、波动率60、贝塔截断0.3/2.0、总敞口1.5、每腿4 sigma止损、组合DD止损8%)均按原值使用。可调参数hold_days、lookback_days、n_per_side和min_abs_z符合计划范围。一项解释选择:min_abs_z应用于配对半价差,而不是分别应用于每条腿。这可确保一个板块的两条腿同时开仓,维持板块中性。若有6只股票,预期极端|z|约为1.27,因此每腿1.5门槛很少能在两边同时触发。杠杆为2.0(Reg-T上限),使1.5x总敞口符合保证金要求;仓位规模计算读取self.config.leverage,取min(gross_exposure, leverage)。数据处理:所有28条腿的收盘价按每个交易时段对齐后作为一个元组追加到单个双端队列(maxlen 121)。基准对齐屏障仅在所有腿都已打印该时段后处理数据,且绝不读取晚于主标的的腿柱线。每柱线成本为固定的121x28 numpy计算,与回测跨度无关。预期交易量:每次5时段再平衡约有8条腿,换手率约为50-70%,每次运行每年约有250次入场。每条腿都是独立持仓。
迭代历史
sandbox_timeout:验证失败(第3层——沙盒回测):烟雾测试在约20000根柱线的窗口(AAPL.USEQ-1-DAY-LAST-EXTERNAL的2400天)上超过了300秒的墙钟时间限制。这几乎总是意味着每根柱线的工作量会随历史长度增加——例如反复扫描完整的资金费率/补充序列,或在每根柱线的calculate_signal()/on_bar()中重建列表并调用min()/sorted()。在__init__中预先计算排序后的时间戳数组ONCE并使用bisect,或按时间戳缓存查找结果,使每根柱线的成本为O(log n)而非O(n)。
结局总结
多标的日频策略(此处有28条腿,包括4只仅作信号参考的ETF)必须采用能满足编码阶段时限的实现,策略想法才有机会接受测试;此前数个超时的多标的运行已经说明了这一点。
运行在编码阶段因“coding_stuck_3_timeouts”而中止,共迭代2次。回测审查、优化、分析师审查和风险审查均未运行。
一种板块中性、美元中性的周度多空反转策略,覆盖24只US大盘股(USEQ,1日K线):以板块ETF(XLK/XLF/XLE/XLV,仅作信号参考)为基准,对贝塔对冲后的残差收益排序,并在各板块内做多波动率缩放残差最负的股票、做空最正的股票;依据Da、Liu与Schaumburg(2014)以及Hameed与Mian(2015)的研究。
没有业绩数据。回测报告为空,没有优化报告,运行也从未生成收益、夏普比率或交易笔数数据。
Stratmill 是研究与模拟交易工具,不提供财务建议,也不是经纪商。回测与模拟结果均为假设性结果。交易存在亏损风险。