摩根大通单股策略实验室(US.JPM)¶
所属模块:
@knowledge量化知识库实战教学模块(与 动量实验室、甲骨文技术指标实验室、腾讯 ADR 实验室 并行,互不改写对方的数据与结论) 研究标的:摩根大通普通股US.JPM(纽交所) 对比基准:同一评估区间、同一成本假设下的买入持有 状态:verified(冻结快照种子 SHA-256 校验后完整回测;运行时零网络、零富途 API、不发单、不写模拟盘账本) 一键复现命令:uv run python -m knowledge.Labs.jpm_lab.run_lab
本实验在出结果之前写死 7 套方案,每套只指定一次方向、一次决策频度和一套规则,看到数字之后没有再改参数。搜索规模是 7 套 × 每套 1 组参数。看到 S3 与 S5 之后追加了两套混合 S8、S9,见第七节;前 7 套的参数没有再改。
一、这间实验室允许什么¶
正式研究线对空头、换手和尝试次数有合同约束。这里是知识库沙箱,专门把三件事先被拆开的选择放在同一只股票上:
| 选择 | 本实验实际用到的取值 |
|---|---|
| 交易方向 | 只做多、只做空、多空 |
| 决策频度 | 日频、周频、月频 |
| 策略族 | 均线趋势、52 周突破、RSI(2) 均值回归、布林带回归、十二个月时序动量(跳月)、六个月动量符号 |
权重只取 -1、0、+1,没有杠杆。t 日收盘才知道的目标权重,从 t+1 日的总收益开始生效。周频和月频只在该周、该月的最后一个交易日决策,然后一直持有到下一次决策。
二、数据、区间与成本¶
- 行情:已注册快照
futu-us-eq50-bil-20261006里的US.JPM未复权日线,2006-09-22 至 2026-10-02,共 5,038 个交易日。种子文件seed_data/US.JPM_bars.csv与seed_data/US.JPM_actions.csv,校验和写在seed_data/manifest.json,并记下源 parquet 的 SHA-256。这份种子没有拆股,信号价等于成交价。 - 股息:快照里的 80 次现金股息。评估区间内有 75 次,合计 48.46 美元/股,加在除息日的总收益上。多头收到股息,空头付出股息。信号仍用成交价,避免把股息做成假突破。
- 已复核的跳空:2009-01-20 收盘收益 -20.7%,次日 +25.1%。这两天在
research/universe/s4_move_review_v2.json里标为真实行情,实验室原样保留。 - 评估区间:2008-01-02 至 2026-10-02(约 18.7 年)。2006–2007 只给 200 日均线、52 周通道和 12 个月动量做暖机。2026 年只到 10 月 2 日,分年热力图里该列标成「至 10-02」。
- 初始资金:10 万美元。
- 单边成本:5 bps。
JPM是纽交所流动性最好的一批普通股,买卖价差窄于场外 ADR,所以摩擦低于腾讯 ADR 实验室用的 15 bps。 - 空头融券:持有空头的名义金额按年化 0.5% 扣费。这是研究假设。
JPM通常容易借到;危机期间真实券息可能更高,这里没有逐日券息序列。本实验室也不发空单。 - 空仓现金:未占用的资金按年化 1.5%。
- 夏普:日均收益 × 252 / 年化波动,无风险利率按 0,与另外三间实验室同一口径。
买入持有的价格倍数与总收益倍数不同,因为股息再投资。评估起点前一交易日(2007-12-31)收盘 43.65 美元,终点收盘 332.38 美元,价格倍数 7.61。同一段的总收益倍数是 12.22。扣掉首日 5 bps 买入成本后,10 万美元变成 122.1 万美元,年化 14.30%。
三、七套方案与买入持有¶
| 编号 | 方案 | 方向 | 频度 | 规则 |
|---|---|---|---|---|
BM |
买入持有 | 多 | 持有 | 全程满仓 |
S1 |
200 日均线 | 只做多 | 日 | 收盘高于 SMA200 满仓,否则空仓 |
S2 |
52 周突破 | 只做多 | 周 | 周末突破前 52 周高点做多,跌破前 26 周低点离场 |
S3 |
RSI(2) 回归 | 只做多 | 日 | RSI(2) < 10 做多,收盘站上 SMA5 离场 |
S4 |
十二个月动量 | 只做多 | 月 | 月末跳过最近一个月的 12 个月收益为正才做多 |
S5 |
均线下行 | 只做空 | 日 | 收盘低于 SMA50 且 SMA50 < SMA200 时做空,重新站上 SMA50 平仓 |
S6 |
布林带回归 | 多空 | 周 | 周末跌破 20 周下轨做多、升破上轨做空,回到中轨平仓 |
S7 |
六个月动量符号 | 多空 | 月 | 月末过去 6 个月收益为正做多,否则做空 |
S5 的入场要求收盘低于 SMA50,平仓线也是重新站上 SMA50。如果入场只要求「在 SMA200 下面」,而平仓又是站上 SMA50,价格停在两条均线之间时会第二天就被平掉。
S4 在月末 t 使用的是上月末相对再往前 11 个月的收益,故意丢掉最近这一个月。S6 在同一个周末只做一件事:价格打到对面先平仓,下一次决策才允许反向。
3.1 绩效(2008-01-02 至 2026-10-02)¶
| 方案 | 年化 | 相对买入持有 | 波动 | 夏普 | 最大回撤 | 卡玛 | 在市 | 期末净值 |
|---|---|---|---|---|---|---|---|---|
BM 买入持有 |
14.3% | 0 | 37.4% | 0.54 | 67.7% | 0.21 | 100% | $1,221,373 |
S1 日频 200 日均线 |
4.5% | -9.8% | 20.7% | 0.32 | 63.0% | 0.07 | 69.1% | $228,238 |
S2 周频 52 周突破 |
4.9% | -9.4% | 15.7% | 0.38 | 33.3% | 0.15 | 49.2% | $245,479 |
S3 日频 RSI(2) |
4.7% | -9.6% | 20.1% | 0.33 | 35.6% | 0.13 | 18.6% | $234,340 |
S4 月频十二个月动量 |
7.5% | -6.8% | 21.6% | 0.44 | 56.1% | 0.13 | 67.5% | $386,182 |
S5 日频只做空 |
-11.3% | -25.6% | 24.9% | -0.35 | 90.9% | -0.12 | 14.8% 为空头 | $10,644 |
S6 周频布林多空 |
5.1% | -9.2% | 28.9% | 0.31 | 55.9% | 0.09 | 多 15.8% / 空 37.3% | $254,063 |
S7 月频六个月符号 |
-9.3% | -23.6% | 37.4% | -0.07 | 95.9% | -0.10 | 多 67.6% / 空 32.4% | $16,239 |
七套主动方案的年化收益和夏普都低于买入持有。卡玛最高的主动方案是 S2 的 0.15,仍低于买入持有的 0.21。
3.2 交易行为¶
| 方案 | 完整交易 | 胜率 | 盈亏比 | 利润因子 | 平均持仓 | 年化换手 | 年均成本拖累 | 年均融券拖累 |
|---|---|---|---|---|---|---|---|---|
S1 |
81 | 18.5% | 7.49 | 1.75 | 39 日 | 8.71x | 0.44% | 0 |
S2 |
9 | 44.4% | 3.91 | 3.29 | 252 日 | 1.01x | 0.05% | 0 |
S3 |
220 | 67.3% | 0.65 | 1.24 | 4 日 | 23.6x | 1.18% | 0 |
S4 |
12 | 50.0% | 1.75 | 1.26 | 192 日 | 1.34x | 0.07% | 0 |
S5 |
69 | 8.7% | 0.93 | 0.03 | 10 日 | 7.37x | 0.37% | 0.07% |
S6 |
39 | 64.1% | 0.96 | 1.39 | 63 日 | 4.22x | 0.21% | 0.19% |
S7 |
45 | 20.0% | 3.47 | 0.25 | 103 日 | 4.86x | 0.24% | 0.16% |
年化换手 = 评估期内 |Δ权重| 之和 / 年数。从空仓到满仓记 1 倍,从满仓多头翻到满仓空头记 2 倍。
四、每套方案的结论¶
S1 日频只做多 · 200 日均线¶
年化 4.5%,比买入持有低 9.8 个百分点。最大回撤 63.0%,只比买入持有的 67.7% 浅一点,夏普 0.32。81 笔交易、胜率 18.5%、盈亏比 7.49:少数沿均线拿住的大趋势,盖不住多次假突破。2008 年这套规则亏了 45.3%,买入持有亏 25.2%。慢均线在危机里反复站上又跌破,空仓没有换成更浅的回撤。
S2 周频只做多 · 52 周突破¶
年化 4.9%,波动 15.7%,最大回撤 33.3%,是七套里回撤最浅的。只有 9 笔交易,平均持有 252 个交易日,利润因子 3.29,年均成本 0.05%。2008–2009 累计 -6.7%(买入持有 +0.5%),危机里大部分时间拿的是现金。2010–2015 累计 -12.5%,而买入持有是 +81.5%:规则要等新的 52 周高点,修复段基本没跟上。2020 年 -21.0%,买入持有 -5.5%。
S3 日频只做多 · RSI(2)¶
胜率 67.3%,是七套里最高的,最大回撤 35.6%。在市时间只有 18.6%,平均持有 4 个交易日,220 笔,年化换手 23.6 倍,成本每年拖走 1.18 个百分点。盈亏比只有 0.65。2008 年这套规则 +30.5%,买入持有 -25.2%,急跌后的两日超卖确实接住过反弹。2016–2019 累计 -1.3%,买入持有 +134.5%。高胜率留在了几天的反弹里,银行股这 18 年的复利留在了长期持有里。年化 4.7%。
S4 月频只做多 · 十二个月动量(跳月)¶
七套里年化最高(7.5%),夏普 0.44,仍低于买入持有的 0.54。12 笔交易,平均持有 192 日,年均成本 0.07%。2020 年 -29.4%,买入持有 -5.5%:1 月至 3 月末的决策一直是满仓,2–3 月的下跌整段都在场内;4 月末才转为空仓,并一直空到当年结束,修复段没有再进去。2024 至 2026-10-02 这套规则与买入持有同为 +107.2%,这段它是满仓的。落后的 6.8 个点,主要出在 2010–2015(累计 -6.9%,买入持有 +81.5%)和 2020 这次月内崩溃。
S5 日频只做空 · 均线下行¶
年化 -11.3%,期末 $10,644,胜率 8.7%,利润因子 0.03,最大回撤 90.9%。2008 年有 18 笔完整空头,一笔都没有赚钱,中位持仓 3 个交易日,全年 -66.2%。平仓线是重新站上 SMA50,熊市里的反弹会把空头盖掉,再开仓又赶上下一次反弹。2013、2017、2021 以及 2023–2025 的年度收益都落在 1.5% 的现金上,这些年份规则没有开出空仓。唯一明显赚到的空头年份是 2018(+9.3%)和 2022(+7.7%),补不回 2008–2010 的亏损。
S6 周频多空 · 布林带¶
年化 5.1%,期末 $254,063。39 笔,胜率 64.1%,盈亏比 0.96。空头时间 37.3%,多头时间只有 15.8%。2008 年 +123%:多头的 54 个交易日把账户大约翻了一倍,来自下轨做多吃到的三段反弹(1 月上旬至 2 月初、3 月中旬、11 月下旬至年底,价格段收益大约 +18%、+22%、+39%);空头大约 15 个交易日,贡献约一成。2009 年 -25.2%,买入持有 +34.4%,反弹后半段这套规则已经不在多头里。2013 年 -13.2%(买入持有 +36.7%),2024 年 -22.1%(买入持有 +44.3%):上涨趋势里,冲出上轨就被拿去放空。
S7 月频多空 · 六个月动量符号¶
全程在市,波动 37.4%,和买入持有一样,年化 -9.3%,期末 $16,239,最大回撤 95.9%。2008、2009、2010 三年分别是 -65.6%、-47.4%、-40.0%。六个月符号在急跌里还是多头,等到跌完翻成空头时,反弹已经开始。2013 年 +36.7%,与买入持有相同,那一年它是多头;2024 与 2025 也与买入持有同为 +44.3% 和 +37.3%。空头占了 32.4% 的时间,胜率 20.0%,盈亏比 3.47,利润因子 0.25:做对的多头年份留下了,做错的空头把本金打穿了。
五、放在一起看¶
对数净值上,深色虚线的买入持有在后半段拉开距离,终点在 100 万美元上方。紫色月频动量是主动方案里最高的一条。红色只做空和橙色六个月多空在 2009 年掉到起点下方,之后没有再回来。
方向 × 频度这张图里七个点全是红的:三种方向、三种频度都跑输买入持有。点的大小是超额的绝对值,只做空和月频六个月符号偏离最大。日频只做多的格子里有两套方案(S1 与 S3),图上错开画了。
颜色在 ±80% 处饱和,格子里的数字是实际收益。S6 的 2008 年是 +123%,S5 与 S7 的 2008 年都是 -66%。2019 年买入持有 +47%,S4 是 +42%,S1 只有 +17%。2022 年买入持有 -13%,S5 的空头做到 +8%,S7 做到 +7%。
S3 胜率最高、持仓最短、成本柱最高;S2 利润因子最高、换手最低;S1 盈亏比最高,胜率却只有 18.5%。胜率和年化收益在这七套里不是一回事。
六、复现与产物¶
| 路径 | 内容 |
|---|---|
seed_data/US.JPM_bars.csv |
冻结未复权日线 |
seed_data/US.JPM_actions.csv |
冻结现金股息 |
seed_data/manifest.json |
种子与源 parquet 的 SHA-256 |
outputs/scheme_performance_summary.csv |
绩效总表 |
outputs/phase_returns.csv |
六段行情的累计收益 |
outputs/round_trips.csv |
各方案完整交易 |
outputs/lab_report.json |
成本假设、搜索规模、分年收益、每套一句结论 |
figures/01–05 |
前 7 套的对比图 |
figures/06_s1–06_s7 |
前 7 套各自的价格、仓位、净值与回撤 |
figures/07_s8_s9_vs_benchmark.png |
S3、S5、S8、S9 与买入持有 |
figures/06_s8、06_s9 |
两套混合各自的价格、仓位、净值与回撤 |
这间实验室不进入正式尝试预算,也不连接模拟盘。
七、事后混合:S8 与 S9¶
S3 在超卖时做多,S5 在均线下行时做空。同一天两边都想交易,就是「下行趋势里又超卖」。评估期 4,718 个交易日里这样的冲突日有 222 天(4.7%)。两套混合都只用原来的信号,权重仍是 -1、0、+1,差别只有冲突日听谁的。没有再搜阈值。
| 编号 | 冲突日 | 其余日子 |
|---|---|---|
S8 |
做空(S5 压过 S3) |
谁给出仓位就听谁 |
S9 |
做多(S3 压过 S5) |
谁给出仓位就听谁 |
7.1 绩效¶
| 方案 | 年化 | 相对买入持有 | 夏普 | 最大回撤 | 期末净值 |
|---|---|---|---|---|---|
BM 买入持有 |
14.3% | 0 | 0.54 | 67.7% | $1,221,373 |
S3 只做 RSI(2) |
4.7% | -9.6% | 0.33 | 35.6% | $234,340 |
S5 只做空 |
-11.3% | -25.6% | -0.35 | 90.9% | $10,644 |
S8 下行优先 |
-11.0% | -25.3% | -0.28 | 91.8% | $11,250 |
S9 超卖优先 |
-3.2% | -17.5% | 0.02 | 70.7% | $54,316 |
两套都没有打赢买入持有,年化、夏普和期末净值都低于基准。S9 也低于单独的 S3(4.7%,期末 $234,340)。S8 和单独的 S5 几乎是同一条亏损路径,期末只多出约 600 美元。
| 方案 | 完整交易 | 胜率 | 盈亏比 | 利润因子 | 平均持仓 | 在市 | 年化换手 | 年均成本 + 融券 |
|---|---|---|---|---|---|---|---|---|
S8 |
244 | 48.0% | 0.53 | 0.27 | 5.5 日 | 多 13.9% / 空 14.8% | 26.1x | 1.38% |
S9 |
319 | 58.3% | 0.66 | 0.84 | 4.2 日 | 多 18.6% / 空 10.1% | 34.1x | 1.76% |
S8 的空头时间与 S5 相同(14.8%),多头只留下 S3 里不和下行空头重叠的 13.9%。S9 的多头时间与 S3 相同(18.6%),空头是 S5 里不和超卖多头重叠的 10.1%。
7.2 为什么补不回买入持有¶
2008 年 S5 做空 126 天,S3 做多 58 天,重叠 41 天。S8 把重叠的那些天判给空头,全年 -70.1%,比 S5 的 -66.2% 更深。S9 把重叠判给多头,仍要在其余约 85 个交易日做空,全年 -24.4%;单独的 S3 这一年是 +30.5%。2008–2009 两套混合的累计收益是 -75.2%(S8)和 -46.8%(S9),买入持有是 +0.5%,S3 是 +39.1%。
空头袖套在冲突日之外依然亏钱,所以把超卖反弹接回来,也补不回这段下行做空。两套混合的换手都高于单独的 S3(23.6 倍):S9 年化换手 34.1 倍,成本和融券每年合计拖走 1.76 个百分点。在市时间仍只有 28.7%,长牛里的复利大部分还是空仓错过的。














