跳转至

摩根大通单股策略实验室(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%。慢均线在危机里反复站上又跌破,空仓没有换成更浅的回撤。

S1 日频 200 日均线

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%。

S2 周频 52 周突破

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%。

S3 日频 RSI(2)

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 这次月内崩溃。

S4 月频十二个月动量

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 的亏损。

S5 日频只做空

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%):上涨趋势里,冲出上轨就被拿去放空。

S6 周频布林多空

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:做对的多头年份留下了,做错的空头把本金打穿了。

S7 月频六个月动量符号


五、放在一起看

净值与回撤

对数净值上,深色虚线的买入持有在后半段拉开距离,终点在 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%。胜率和年化收益在这七套里不是一回事。


六、复现与产物

uv run python -m knowledge.Labs.jpm_lab.run_lab
路径 内容
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%,长牛里的复利大部分还是空仓错过的。

S8 与 S9 对照买入持有

S8 下行优先

S9 超卖优先