1 · 三组并行结构
不押单一情景, 而是把同一套宏观判断 fork 出三种 tilt:
- Base — 风险平价中性 + view 弱融合. 起点波动 ≤ 8%.
- Bull — 在 base 上对最确信的 2-3 个 view 加权. 单仓位上限 30%, 波动 ≤ 12%.
- Bear — 不赌反向, 是 base 失效时的 defensive. 高现金 + 长债 + 黄金, 波动 ≤ 6%.
三条 NAV 同时跑, 等于公开把"view 是否真的有 alpha"摆在桌面: 若 Bull 长期跑赢 Base, 我的 view 在创造价值; 若都跑输 60/40 baseline, 框架要修.
2 · 资产宇宙
10 个 ETF 覆盖 5 个核心资产类:
- 权益: A 股大盘 (沪深 300) + 中盘 (中证 500) + 港股 (恒生) + 美股 (SPY) + 纳指 (QQQ)
- 利率: 国内 10Y 国债 + 美债 20Y+ (TLT)
- 信用: 国内城投债
- 商品: 黄金
- 现金: 货基代理
参考变量 (不下单, 仅作 view 输入 + 归因因子): USD/CNY, DXY, UST 10Y/2Y yield, VIX.
3 · 月度纪律 (写死, 不灵活)
- 每月第 1 个交易日 rebalance, 中途不动 (除非触发硬止损)
- 单次最多调整 3 个仓位
- 单仓位上限 30%, 任一资产类总上限 50%, 现金下限 5%
- 每次 rebalance 必须写下: 触发理由 / 预期 / 失效条件 → git commit 留时间戳
4 · 归因 (月度)
每月把超额收益 (vs Base / vs 60/40) 归到:
- 资产类配置 (Brinson allocation effect)
- 单券选择 (selection — 本组合主要用宽基 ETF, 该项贡献小)
- 宏观因子: 利率方向 / 美元方向 / 风险偏好 (VIX) / 信用利差
5 · Baseline 对照
三组 NAV 同时跟 3 个 baseline 比:
- 60/40 (60% 股 / 40% 债)
- 等权 (10 个资产各 10%)
- 纯风险平价 (无 view, 仅历史波动反向加权)
没 baseline 就没 alpha. 长期跑不赢 baseline = view 没价值 = 框架推倒重来.
6 · 数据流
- 价格: yfinance (海外 + A 股 ETF 通过 .SS suffix) + akshare (国内补充)
- GitHub Actions: 工作日 17:30 SGT 自动 fetch + 算 NAV, commit 回写
- 每日 NAV 用上月 rebalance 的单位数 (units count) × 当日收盘价
- 海外资产 v1 暂不汇率折算 (用本币), v2 加入 USD/CNY 调整
7 · 已知简化 (v1)
诚实声明本版本的局限:
- 无交易费 / 滑点 (实盘扣 ~10-20bp/年)
- 海外资产用本币计算, 未做 USD/CNY 调整 (会高估或低估)
- 无再投资 (分红假设自动 reinvest)
- 用 ETF 代理资产, 非真实底层 (跟踪误差被忽略)
v2 路径见 GitHub roadmap.