QuantWeft量化经纬
English
本章小节

Project 5 练习解答

状态:继承已限定接受c5/ALIGN的构造教学数值,按最新整股支持域解释;本批未重跑历史CLI或参考解。所有数字由 .venv/bin/python projects/project05/solutions_code.py 实测打印(2026-10-10,候选清单 qa/a7/project05_batch/CANDIDATE_MANIFEST_c5.json)。P5-05至P5-09为教学构造面板结果,只演示方法。c1–c4按v1得到的旧结果原样保留在 qa/a7/project05_batch/evidence/,本文件只给c5结果。

P5-01

按题设的简化建仓情景,信号收盘至建仓没有拆股或股息,建仓价格为80/50;这里只估算股数,不另加入隔夜价格变化及成交成本。

wy=1/2.2=0.454545w_y=1/2.2=0.454545,wx=−1.2/2.2=−0.545455w_x=-1.2/2.2=-0.545455;美元暴露 +454,545.45+454{,}545.45 与 −545,454.55-545{,}454.55。股数 ny=⌊454,545.45/80⌋=5,681n_y=\lfloor454{,}545.45/80\rfloor=5{,}681,nx=−⌊545,454.55/50⌋=−10,909n_x=-\lfloor545{,}454.55/50\rfloor=-10{,}909。绝对股数比 ∣nx∣/∣ny∣=10,909/5,681=1.920261|n_x|/|n_y|=10{,}909/5{,}681=1.920261,有符号股数比 nx/ny=−1.920261n_x/n_y=-1.920261;取整前二者分别等于 ∣β∣Py/Px=1.92|\beta|P_y/P_x=1.92 与 −βPy/Px-\beta P_y/P_x,取整后只近似相等。净美元暴露 5,681×80−10,909×50=−90,9705{,}681\times80-10{,}909\times50=-90{,}970:美元中性不成立,因为对数回归的 β\beta 是弹性(xx 变动1%时 yy 平均变动 β\beta%),在拟合系数冻结且残差不变的局部一阶近似下,对冲的是共同的百分比变动风险;残差、系数漂移、跳价及取整风险仍在,所以两腿美元比是 β\beta,股数比再乘 Py/PxP_y/P_x。水平回归的 bb 单位是 (USD/sharey)/(USD/sharex)=sharex/sharey(\mathrm{USD/share}_y)/(\mathrm{USD/share}_x)=\mathrm{share}_x/\mathrm{share}_y,即每股 yy 对应 bb 股 xx:有符号对冲比 nx/ny=−bn_x/n_y=-b,绝对比 ∣b∣|b|。两种 β\beta 不能互换。

P5-02

这是独立公司行动情景:5,681/−10,909为事件前已有持仓,80/50为事件前收盘;不是对P5-01同一开盘事件再次换算。

yy 股数 5,681→11,3625{,}681\to11{,}362,现金不变(拆股不产生现金);标记价同步除以2。xx 为空头,除息日现金 −10,909×0.30=−3,272.70-10{,}909\times0.30=-3{,}272.70(补偿出借方的股息)。TR步:yy 为 2(40.6+0)/80=1.0152(40.6+0)/80=1.015;xx 为 (49.9+0.30)/50=1.004(49.9+0.30)/50=1.004。成交与估值用未复权价并单独入账公司行动;信号用自建TR。若用供应商复权价成交,又在账本里加拆股与股息,会把同一事件计两次(第29章的禁止项)。

P5-03

回到P5-01原建仓:初现金1,000,000美元、无初持仓、零建仓费用,借券卖出所得在本构造模型可全部计息。目标毛暴露本身不能确定初NAV;此处NAV来自所给初始账户。

建仓后现金 C0=1,000,000−5,681×80+10,909×50=1,090,970C_0=1{,}000{,}000-5{,}681\times80+10{,}909\times50=1{,}090{,}970。两腿标记市值为 454,480−545,450=−90,970454{,}480-545{,}450=-90{,}970,所以 NAV=C0−90,970=1,000,000NAV=C_0-90{,}970=1{,}000{,}000。

按UTC或无DST切换周末,周五16:00至周一09:30为65.5小时,Δd=65.5/24=131/48\Delta d=65.5/24=131/48天。题设假定区间开始已知DFF=5.33%,不是本次新核历史观测。保留精确天数直至最后显示舍入:

I=1,090,970×(0.0533−0.0025)×131/48360≈420.1497. I=1{,}090{,}970\times(0.0533-0.0025)\times\frac{131/48}{360}\approx420.1497.
B=10,909×50×0.0025×131/48360≈10.3377. B=10{,}909\times50\times0.0025\times\frac{131/48}{360}\approx10.3377.
C1=C0+I−B≈1,091,379.8121. C_1=C_0+I-B\approx1{,}091{,}379.8121.

利率、现金余额与空头标记均取区间开始时已可得值;周一开盘才可得的新价只用于之后区间(第35章)。本例不承接P5-02公司行动后的状态。

P5-04

P5-05

窗 水平相关 日收益相关 EG pp
0 0.833 0.810 0.725
1 0.539 0.781 0.544
2 0.860 0.779 0.483
3 0.964 0.796 0.350
4 0.976 0.793 0.655
5 0.876 0.810 0.950
6 0.735 0.802 0.731
7 0.559 0.798 0.866

8个窗口无一 p<0.05p<0.05。两条序列共享一个随机趋势加各自独立的随机游走,所以收益高度相关,但它们的线性组合仍含不可消去的随机游走:价差不平稳,没有均值回复可交易。水平相关在两个非平稳序列之间可以很高(伪相关),收益相关只说明同步波动,二者都不检验“价差是否回到均值”。

P5-06

未来价格乘1.5前后 β\beta 都是1.191788,Formation逐项相同:形成步骤只读取形成期末及以前的行。形成期价差均值为0(OLS含截距时残差均值恒为0),全样本价差均值为0.011635。若用全样本均值或标准差标准化,z-score的中心与尺度就用了交易期价格,阈值穿越时点会改变,回测收益含未来信息。正确做法是冻结形成期的 α,β\alpha,\beta、均值和标准差,交易期只代入新价格。

可运行检验:solutions_code.py 的 leakage_checks()(随本文件主程序运行)分别检查三个通道:(a) 形成期参数不受形成期末之后价格影响;(b) 收盘 tt 及之前信号的订单与 tt 之前NAV不受 tt 之后价格影响(实测2014-09-15,True);(c) 某日09:30成交不受当日全天成交量影响(实测2014-09-16,True)。对应pytest:pytest projects/project05/tests/test_p05_pairs.py -k "leakage or fill_day_volume"。三项都是必要条件,通过只排除这三个通道,不能证明实现完全没有泄漏。

P5-07

EG统计量 −3.0636-3.0636;EG(MacKinnon协整残差)5%临界值 −3.3483-3.3483,p=0.0958p=0.0958;普通ADF的5%临界值 −2.8673-2.8673。应使用EG临界值:残差来自估计的 β\beta,第一阶段估计了协整回归系数,使无协整零假设下残差检验的极限分布非标准;须匹配回归确定项、维数与样本规格使用EG临界值(第17章)。OLS降低RSS本身不能证明更快均值回复:把同一随机游走乘0.1会将RSS缩到0.01倍,却不改变相同规格下ADF统计量。误用 −2.87-2.87 会在5%水平拒绝原假设,宣称协整;正确结论是不能拒绝。即使数据由协整过程构造(ϕ=0.97\phi=0.97),504日内检验功效也有限,“未通过”不等于“不协整”。

P5-08

主规格(预注册v2:EG p<0.05p<0.05 且 β>0\beta>0):

配对 方式 总收益 超额Sharpe 有符号最深回撤 min(drawdown) 已闭合交易 胜率 平均持有(交易日) 年化单边换手
CA_CB screened 0.0606 −0.1432 −0.0187 4 0.25 37.25 1.00
CA_CB ungated 0.1171 0.4771 −0.0187 8 0.50 33.50 2.01
TA_TB screened 0.0710 缺失(无交易) 0.0000 0 缺失 缺失 0.00
TA_TB ungated −0.0602 −0.8558 −0.0917 6 0.50 47.17 1.55
IA_IB screened 0.0710 缺失(无交易) 0.0000 0 缺失 缺失 0.00
IA_IB ungated −0.0328 −0.2298 −0.3048 8 0.625 47.63 2.03
组合 screened 0.0676 −0.1485 −0.0058 4 0.25 37.25 0.33
组合 ungated 0.0081 −0.4717 −0.1232 22 0.545 42.36 1.86

共24次检验(3对×8窗);EG p<0.05p<0.05 4次;v2选中3次(CA_CB窗2–4)。IA_IB窗5(p=0.047p=0.047,β^=−1.907\hat\beta=-1.907)因 β≤0\beta\le0 被排除。若全为原假设,在每个零假设p值均正确校准时,由期望线性,预期 24×0.05=1.224\times0.05=1.2 个 p<0.05p<0.05,无需独立;这里重叠窗口与共用序列不是24次独立试验。窗口内BH q<0.10q<0.10 只有1个,仅作各窗口的描述,不保证全部相关窗口的FDR控制。无交易分仓的7.1%只是现金利息,超额收益是计息离散误差,Sharpe、胜率、持有天数记缺失。

选择效应:构造中协整的CA_CB在screened下只交易4次、超额Sharpe为负,ungated反而为正;筛选会漏掉真关系,也会放进假关系。v1(c1–c4,旧结果保留)选中4次,screened组合超额Sharpe 0.39,主要来自IA_IB的一次假阳性入选;v2排除该窗后screened组合为−0.15。不能把这个变化读成“v2更好”:v2是看过构造结果后、因项目范围(一多一空相对价值)和时点修复而冻结的设计变更,已在预注册中披露。IA_IB是已知独立的随机游走,它的入选没有真实协整依据;这一点来自构造的数据生成过程和多重检验,不能单凭 β\beta 的符号推出。β<0\beta<0 时两腿同向,同向仓位在一阶上也可以对冲负相关关系(例:β=−1.2\beta=-1.2,两腿美元45.45万与54.55万同向,dlog⁡y=−1.2 dlog⁡xd\log y=-1.2\,d\log x 时一阶总损益为0);v2排除它只是为了把项目限定为一多一空。252日形成窗下screened组合超额Sharpe −0.0211、ungated −0.7668。报告必须给出全部配对、全部窗口和ungated对照。

胜率与持有天数按“仓位事件”统计:从离开空仓的第一笔成交到两腿都回到零的那笔成交为一次交易;出场未完成时出现的新入场单并入同一次交易(记为reentry)。交易损益只含成交现金流、佣金、持仓期股息与借券费,不含现金利息;样本末仍未平仓的记为open,不进胜率。换手按实际成交金额计:双边 ∑∣q∣Pfill\sum|q|P^{fill},年化单边 =0.5×=0.5\times双边//日均NAV×252/N\times252/N,不使用订单数量。

P5-09

开盘成交预算为截至信号收盘已知的ADV20的1%(换算到成交日拆股后股数);这是未校准的开盘成交情景,不保证实际参与率。matched:部分成交14行、出场补单4行,首次成交实际股数比与下单股数比的偏离在打印精度内为0。independent:部分成交14行、补单5行,偏离最多0.6376:同一信号下两腿实际对冲比偏离目标约64%,组合带着未对冲的方向风险。入场剩余撤单会降低或改变暴露,不预设损益方向:少建仓既可能少赚也可能少亏;matched 下整股取整仍留下小的对冲误差,independent 下两腿成交比例不同会产生失配。撤销出场余单不会消灭尚存仓位;剩余可能仍是匹配的两腿、失配仓位或单腿,取决于实际成交。例如原持仓Y100、X−200,按matched同比例平掉Y50、X−100,仍余Y50、X−100,股数比2保持,账户却并非空仓。在β=2、两腿等价格且残差不变的小变动一阶情景中,这个余仓的共同因子暴露仍为零。因此,本协议为完成既定退出意图逐日补单;不能把撤单当作已平仓。补单只有样本、容量与当前整股支持域允许时才能完成,不能承诺无条件归零。被新入场取代的剩余记一行机会成本,样本末仍未完成的按末日收盘计机会成本。当日全天成交量只在收盘后作诊断(day_participation_diag),不改变09:30成交。

P5-10(参考答案)

可以声称:实现了预注册v2的训练内筛选、冻结价差、次日开盘执行、双腿成本与融资账本;在教学构造数据上,账本现金守恒(残差约1e−9美元)、IS分解与直接金额法一致、未来价格扰动不改变形成期估计,并展示了相关≠协整、错误临界值与选择效应。不能声称:任何真实配对协整、盈利或在成本后有效;任何成本、借券或容量的真实水平。数据到位后,从数据节点(data/processed/p05/ 与 data_manifest.json)重跑:TR构建→全部8对×全部窗口形成与检验→screened与ungated账本→成本、阈值、形成窗与部分成交网格→图、Notebook与报告。预注册(v1、v2相同)的 claim_rule 要求:主规格的正结果须在成本网格与筛选效应对照(screened对ungated)下都保持,才可写“支持”。因此若组合超额Sharpe在较高成本档变为非正,或screened的优势只来自个别窗口或个别配对,结论应写“证据不支持该策略”,并保留全部负结果;阈值网格与252日形成窗只作描述,不能用来挑选更好的版本再报告同一样本。

P5-ALIGN:信号股数与IS参考价

信号收盘100美元、NAV 1,000,000、权重+0.5,次日股息1美元无拆股:目标5,000股,IS参考价99美元;负腿权重−0.5为−5,000股。拆股2:1且股息1美元时,目标先取整5,000再乘2为10,000股,IS参考价49美元。NAV为1,001时,先取整5.005为5再乘2为10股;不能用除息价增仓;NAV为1,199时,先取整5.995再乘2为10股,而先换算后取整会得到11股。十进制权益换算不等于支持实际零碎持仓退出。当前整股边界优先:输入0.3333333333333333不是精确1/3;空仓时5股目标乘1.5成为7.5股请求,实际成交7股后撤入场余单;已有5股持仓若拆股将成为7.5股,则在当日隔夜结息与公司行动入账前整账户失败,不留下可正常退出的半股。4乘1.5=6、5乘0.2=1仍在支持域。失败窗口不得删除后继续声称固定样本主结果;真实零碎成交或现金替代须另有已接受规则,详见EXECUTION_BOUNDARY。

搜索教材

输入关键词开始搜索。