{
  "version": "m03-research-0.34.0",
  "rules": {
    "model": "m03-risk-parity-v1",
    "researchVersion": "m03-research-0.34.0",
    "experimentVersion": "research-experiment-0.34.0",
    "validationVersion": "m03-validation-0.34.0",
    "module": "M03",
    "sourceId": "ext_risk_parity_portfolio_v1",
    "sourceSha256": "7c24a41d42320952d9e42d2189749529a4b4f65fc66b28390624fa1efa334436",
    "horizon": "1d",
    "strategies": [
      "C01",
      "C02",
      "C03",
      "C04",
      "C06"
    ],
    "underlyingVersion": "research-0.26.0",
    "underlyingRules": [
      {
        "allocation": 0.4,
        "stopAtr": 2.1,
        "targetAtr": 4.2,
        "id": "C01",
        "name": "三币均线趋势",
        "entry": "EMA11 > EMA65 且 ADX14 ≥ 21；空仓时满足即可入场，不要求当根金叉。",
        "exit": "EMA11 ≤ EMA65，或入场固定 ATR 止损 / 止盈。",
        "provenance": "采用附件 Var01 的 11 / 65、ATR14、2.1 / 4.2、ADX21；EMA 类型、ADX 窗口及执行顺序为本次补充。4h / 日线为新适配版本，未复现原 1h 收益。源波动率目标和杠杆未启用。",
        "parameters": {
          "fast_ema": 11,
          "slow_ema": 65,
          "adx_window": 14,
          "adx_min": 21,
          "atr_window": 14,
          "stop_atr": 2.1,
          "target_atr": 4.2
        }
      },
      {
        "allocation": 0.4,
        "stopAtr": 2,
        "targetAtr": null,
        "id": "C02",
        "name": "Donchian 突破",
        "entry": "收盘价 > 前 20 根最高价；通道排除当前 K 线。",
        "exit": "收盘价 < 前 10 根最低价，或入场固定 2 ATR 止损。",
        "provenance": "原卡只有通用趋势模板。通道 20 / 10 与 ATR14、2 ATR 止损采用上轮拟议定义；不是原附件回测的复现。",
        "parameters": {
          "entry_window_bars": 20,
          "exit_window_bars": 10,
          "atr_window": 14,
          "stop_atr": 2
        }
      },
      {
        "allocation": 0.4,
        "stopAtr": 2,
        "targetAtr": null,
        "id": "C03",
        "name": "布林带趋势突破",
        "entry": "收盘价 > 前一期 20 根收盘价均值 + 2 倍总体标准差，且前一期相对带宽较再前一期严格扩张。",
        "exit": "收盘价 ≤ 前一期中轨，或入场固定 2 ATR 止损。",
        "provenance": "源卡缺少布林参数；20 根、2 倍总体标准差、滞后带宽扩张和中轨退出均为补充定义。未复现源 1h 回测；统一 40% 仓位、无杠杆。",
        "parameters": {
          "band_window_bars": 20,
          "band_multiplier": 2,
          "band_lag_bars": 1,
          "atr_window": 14,
          "stop_atr": 2
        }
      },
      {
        "allocation": 0.4,
        "stopAtr": 2,
        "targetAtr": null,
        "id": "C04",
        "name": "时间序列动量",
        "entry": "每个 UTC 日收盘，6 天及 22 天对数收益均 > 0 时偏多；4h 使用 36 / 132 根，只在 UTC 日末更新。",
        "exit": "每日任一动量 ≤ 0 时退出；固定 2 ATR 止损每根观察。",
        "provenance": "6 / 22 天和每日调仓沿用源 Var01。逐币双窗口同向判别与 ATR 止损为补充，不使用源 top_n 排名、波动过滤或 50% 单币仓位；统一为 40%，无杠杆。",
        "parameters": {
          "short_days": 6,
          "long_days": 22,
          "rebalance": "UTC_daily_close",
          "atr_window": 14,
          "stop_atr": 2
        }
      },
      {
        "allocation": 0.4,
        "stopAtr": 2,
        "targetAtr": null,
        "id": "C06",
        "name": "成交量确认动量",
        "entry": "收盘突破前 20 天（20 根）最高价，且成交量 > 前 20 根均量 × 1.2；两个窗口都排除当前 K 线。",
        "exit": "收盘跌破前 10 天（10 根）最低价，或入场固定 2 ATR 止损。",
        "provenance": "20 天、均量 20 根、1.2 倍沿用原卡；价格通道、10 天退出与 ATR 止损为补充。原仓位上限 50%，对比实验统一为 40%。",
        "parameters": {
          "entry_window_bars": 20,
          "exit_window_bars": 10,
          "volume_window_bars": 20,
          "volume_multiplier": 1.2,
          "atr_window": 14,
          "stop_atr": 2
        }
      }
    ],
    "warmupBars": 260,
    "covarianceDays": 30,
    "minBars": 320,
    "minActiveDays": 5,
    "varianceEpsilon": 1e-12,
    "shrinkage": 0.1,
    "ridgeAnnualVolPct": 1,
    "targetVolPct": 20,
    "maxSleevePct": 40,
    "turnoverThresholdPct": 2,
    "solverTolerance": 1e-8,
    "solverMaxIterations": 10000,
    "annualDays": 365.25,
    "scope": "single asset, single venue, five frozen fixed-parameter strategy NAV sleeves; hypothetical research capital only",
    "covariance": "sample covariance of last 30 daily NET simple returns; exclude sleeves with fewer than 5 nonzero returns or variance <= 1e-12; require at least two eligible sleeves",
    "regularization": "0.9 * sample covariance + 0.1 * diagonal(sample covariance) + (0.01^2 / 365.25) * identity",
    "solver": "cyclical positive-root coordinate descent of 0.5*x^T*S*x - sum((1/n)*log(x_i)); normalize; require max relative risk-share error <= 1e-8",
    "allocation": "scale the entire normalized vector by min(1, 0.20/annualVol, 0.40/maxWeight), leaving cash; no individual clipping, no leverage",
    "timing": "observe Sunday UTC daily close, execute at NEXT daily close after that day return; unchanged old allocation earns the intervening day; new weights affect subsequent returns",
    "costModel": "virtual strategy NAV units; embedded strategy fees/slippage plus additive turnover proxy feeBps+slippageBps on absolute sleeve transfers; solve post-cost equity self-consistently; no exchange-order claim",
    "rebalance": "weekly, full target if risky-leg absolute weight change > 2pp; force removal of ineligible sleeves; no weekly execution on terminal day; terminal redemption always",
    "failure": "insufficient eligible sleeves or ERC solver failure means ERC cash; equal and inverse-vol comparisons use same eligible universe; stress uses frozen base-cost ERC targets",
    "sourceBacktestAvailable": false,
    "blindOutOfSample": false,
    "productionEnabled": false,
    "executionAllowed": false,
    "references": [
      "https://arxiv.org/abs/1311.4057",
      "https://arxiv.org/abs/1902.05710"
    ],
    "underlyingSizing": {
      "targetVolPct": 40,
      "maxPositionPct": 40,
      "lookbackDays": 20,
      "rebalance": "daily",
      "thresholdPct": 2
    }
  },
  "dataset": "existing frozen Binance daily files; local manifest SHA-256 checks",
  "fetchedNow": false,
  "blindOutOfSample": false,
  "sourceMetricsReproduced": false,
  "crossAssetPortfolio": false,
  "executionAllowed": false,
  "costs": {
    "feeBps": 10,
    "slippageBps": 5
  },
  "results": [
    {
      "asset": "BTC",
      "source": {
        "asset": "BTC",
        "horizon": "1d",
        "url": "/research/market/BTC-1d.json",
        "sha256": "85defac0801f2f884fae5290d0cb14e2cd9bdfc3d4ba0d4e0f35306bffc36591",
        "bars": 1358,
        "start": 1672531200000,
        "end": 1789862399999,
        "fetchedAt": "2026-09-20T23:08:44.257249+00:00"
      },
      "definitionHash": "973b938da916375a202cee7da2891df42119b7c6c27e9bd4fdae7c2e1ec78686",
      "resultHash": "fc937c828105b871d5622673c276c6b858496fd4dbf52b7ff3fa039aa680c2eb",
      "sleeveSeriesHash": "576340474ab9fd1fdc4c6de239f565a86a43e61707518d11401c432a1145738d",
      "plansHash": "2d434e86b52bb0a189101f9f3dc36b218a5509bda2a5f59c8ed0ac51d50368b3",
      "start": 1697587200000,
      "end": 1789862400000,
      "days": 1068,
      "diagnostics": {
        "scheduled": 152,
        "cashOnlyDecisions": 32,
        "solverFailures": 0,
        "maxSolverError": 9.99322002925851e-9
      },
      "stats": {
        "erc": {
          "totalReturnPct": 17.250964517506688,
          "maxDrawdownPct": -18.78690624254702,
          "realizedVolPct": 10.973678751907395,
          "averageAllocatedPct": 74.309566447923,
          "averageExposurePct": 16.554627537810152,
          "transferTurnoverPct": 4724.2547327872935,
          "embeddedFeePct": 2.5428526540378567,
          "embeddedSlippagePct": 1.2715175529682212,
          "transferFeePct": 4.724254732787291,
          "transferSlippagePct": 2.3621273663936453,
          "rebalances": 117
        },
        "equal": {
          "totalReturnPct": 16.696878417970908,
          "maxDrawdownPct": -18.7168562405442,
          "realizedVolPct": 11.09367917533732,
          "averageAllocatedPct": 75.69620456007812,
          "averageExposurePct": 16.892101491576184,
          "transferTurnoverPct": 3717.4969715860875,
          "embeddedFeePct": 2.5187963684322483,
          "embeddedSlippagePct": 1.2594966749531638,
          "transferFeePct": 3.7174969715860886,
          "transferSlippagePct": 1.8587484857930443,
          "rebalances": 52
        },
        "inverse": {
          "totalReturnPct": 17.829538391904535,
          "maxDrawdownPct": -18.441304608808153,
          "realizedVolPct": 11.035258330229926,
          "averageAllocatedPct": 74.68112711775726,
          "averageExposurePct": 16.63711874475189,
          "transferTurnoverPct": 4655.798943549691,
          "embeddedFeePct": 2.5160432259957224,
          "embeddedSlippagePct": 1.2581135081125414,
          "transferFeePct": 4.655798943549694,
          "transferSlippagePct": 2.327899471774847,
          "rebalances": 116
        },
        "stress": {
          "totalReturnPct": 6.909852115673459,
          "maxDrawdownPct": -21.76065753627501,
          "realizedVolPct": 10.988840803668614,
          "averageAllocatedPct": 74.30879907031435,
          "averageExposurePct": 16.53938449816751,
          "transferTurnoverPct": 4508.638268876906,
          "embeddedFeePct": 4.864403818663811,
          "embeddedSlippagePct": 2.432548632688721,
          "transferFeePct": 9.017276537753808,
          "transferSlippagePct": 4.508638268876904,
          "rebalances": 118
        }
      }
    },
    {
      "asset": "ETH",
      "source": {
        "asset": "ETH",
        "horizon": "1d",
        "url": "/research/market/ETH-1d.json",
        "sha256": "477cc34260047d2d42baa3f1def858ba90289f7604674f6517348243a26d3c93",
        "bars": 1358,
        "start": 1672531200000,
        "end": 1789862399999,
        "fetchedAt": "2026-09-20T23:08:44.495911+00:00"
      },
      "definitionHash": "973b938da916375a202cee7da2891df42119b7c6c27e9bd4fdae7c2e1ec78686",
      "resultHash": "d30e6856bac9bfffdd0767b75211eb25bc3fe1563e1ad290005b815b6bac108a",
      "sleeveSeriesHash": "64cf4e561b8d7cf7a83abb7d912758314e9eee283c220e6e7eb550a8317da695",
      "plansHash": "8e245bc0dba31146b3baaab81414539abf502ae4bfaf88209f539f361f0509e8",
      "start": 1697587200000,
      "end": 1789862400000,
      "days": 1068,
      "diagnostics": {
        "scheduled": 152,
        "cashOnlyDecisions": 43,
        "solverFailures": 0,
        "maxSolverError": 9.808547085654595e-9
      },
      "stats": {
        "erc": {
          "totalReturnPct": 10.890404140591158,
          "maxDrawdownPct": -20.09098405211026,
          "realizedVolPct": 12.245000660869206,
          "averageAllocatedPct": 65.42932713470239,
          "averageExposurePct": 12.811532459369124,
          "transferTurnoverPct": 3896.859713241942,
          "embeddedFeePct": 2.4949142872799657,
          "embeddedSlippagePct": 1.247511122093782,
          "transferFeePct": 3.896859713241942,
          "transferSlippagePct": 1.948429856620971,
          "rebalances": 103
        },
        "equal": {
          "totalReturnPct": 11.228500371421106,
          "maxDrawdownPct": -20.455248675366377,
          "realizedVolPct": 12.612543977186109,
          "averageAllocatedPct": 67.07067921156565,
          "averageExposurePct": 13.100556733631514,
          "transferTurnoverPct": 3265.7827059784017,
          "embeddedFeePct": 2.485692228638737,
          "embeddedSlippagePct": 1.2429120664489643,
          "transferFeePct": 3.265782705978402,
          "transferSlippagePct": 1.632891352989201,
          "rebalances": 58
        },
        "inverse": {
          "totalReturnPct": 10.577700517297416,
          "maxDrawdownPct": -20.17655937940005,
          "realizedVolPct": 12.290411403194941,
          "averageAllocatedPct": 65.70071681040103,
          "averageExposurePct": 12.847420993011673,
          "transferTurnoverPct": 3768.1027246773524,
          "embeddedFeePct": 2.4310124890083635,
          "embeddedSlippagePct": 1.2155632829112004,
          "transferFeePct": 3.768102724677353,
          "transferSlippagePct": 1.8840513623386765,
          "rebalances": 104
        },
        "stress": {
          "totalReturnPct": 1.811353756496871,
          "maxDrawdownPct": -25.176576899673286,
          "realizedVolPct": 12.253060475223746,
          "averageAllocatedPct": 65.42785716772656,
          "averageExposurePct": 12.800446868753895,
          "transferTurnoverPct": 3733.3072644111035,
          "embeddedFeePct": 4.782051897692312,
          "embeddedSlippagePct": 2.391233098034458,
          "transferFeePct": 7.4666145288222046,
          "transferSlippagePct": 3.7333072644111023,
          "rebalances": 103
        }
      }
    },
    {
      "asset": "SOL",
      "source": {
        "asset": "SOL",
        "horizon": "1d",
        "url": "/research/market/SOL-1d.json",
        "sha256": "ed2f18b8fbf04151f585da95c4128f98ee53f318a94146dbfe0378ccf34670a9",
        "bars": 1358,
        "start": 1672531200000,
        "end": 1789862399999,
        "fetchedAt": "2026-09-20T23:08:44.411946+00:00"
      },
      "definitionHash": "973b938da916375a202cee7da2891df42119b7c6c27e9bd4fdae7c2e1ec78686",
      "resultHash": "ef43dcd40e3427ae35234ca3a2056bc89a1ba84c46d593c7aa6346d58b54ff28",
      "sleeveSeriesHash": "fd50cbe6735887f92009e3232b8b3e3b1ab32e2bc12a01da9beb70c27647b122",
      "plansHash": "8c683b08be00798f9045b7b94f281734992960f46b11de115999234645d577b0",
      "start": 1697587200000,
      "end": 1789862400000,
      "days": 1068,
      "diagnostics": {
        "scheduled": 152,
        "cashOnlyDecisions": 42,
        "solverFailures": 0,
        "maxSolverError": 9.976805520617305e-9
      },
      "stats": {
        "erc": {
          "totalReturnPct": 9.239432509357314,
          "maxDrawdownPct": -27.626974976896356,
          "realizedVolPct": 14.937818300059522,
          "averageAllocatedPct": 61.693887877069,
          "averageExposurePct": 10.972407345210414,
          "transferTurnoverPct": 5280.737988686614,
          "embeddedFeePct": 2.4058914187838445,
          "embeddedSlippagePct": 1.202995424841784,
          "transferFeePct": 5.280737988686611,
          "transferSlippagePct": 2.6403689943433055,
          "rebalances": 107
        },
        "equal": {
          "totalReturnPct": 12.073609863821659,
          "maxDrawdownPct": -26.517970744819696,
          "realizedVolPct": 15.089879886826504,
          "averageAllocatedPct": 61.97302233646389,
          "averageExposurePct": 11.223617624339658,
          "transferTurnoverPct": 4577.086363694592,
          "embeddedFeePct": 2.455452512766072,
          "embeddedSlippagePct": 1.2277871870073238,
          "transferFeePct": 4.577086363694592,
          "transferSlippagePct": 2.288543181847296,
          "rebalances": 75
        },
        "inverse": {
          "totalReturnPct": 9.620160357306744,
          "maxDrawdownPct": -27.581923890341454,
          "realizedVolPct": 15.047411553995593,
          "averageAllocatedPct": 62.09855265834261,
          "averageExposurePct": 11.106512430259691,
          "transferTurnoverPct": 5174.086140300819,
          "embeddedFeePct": 2.372469006074989,
          "embeddedSlippagePct": 1.1862862420164828,
          "transferFeePct": 5.174086140300818,
          "transferSlippagePct": 2.587043070150409,
          "rebalances": 108
        },
        "stress": {
          "totalReturnPct": 0.23873251372683058,
          "maxDrawdownPct": -32.600316695240274,
          "realizedVolPct": 14.991842142897866,
          "averageAllocatedPct": 61.69336022892974,
          "averageExposurePct": 10.964266686163073,
          "transferTurnoverPct": 5080.704177241942,
          "embeddedFeePct": 4.638374733247469,
          "embeddedSlippagePct": 2.3193874464476494,
          "transferFeePct": 10.161408354483893,
          "transferSlippagePct": 5.080704177241946,
          "rebalances": 107
        }
      }
    }
  ]
}
