{
  "report_version": "1.0",
  "report_date": "2026-11-11",
  "generated_utc": "2026-11-11T15:30:47.939575+00:00",
  "application_version": "2.3.0",
  "engine_version": "1.1.0",
  "rule_version": "public_backtest_v1.1",
  "dataset_version": "2026-11-11-r2",
  "scope": "来源一致性、数据修订、特征重算、账户引擎独立复算、策略解释与界面保护；不构成无缺陷认证。",
  "headline_findings": [
    "9处SPX值按公开来源优先级协调，其中2处有额外文件支持，7处仍应描述为供应商差异。",
    "修订影响15个日收益和110个20日波动值；所核查的两个期间MA200交易日期与方向均未改变。",
    "MA200在两个期间均低于买入持有收益；2015—2025回撤较小，2010—2014并未更小。",
    "固定本金分批投入支持按月或按交易日及1—10000期；新增工资等外部入金尚未实现。"
  ],
  "checks": {
    "data": {
      "passed": 32,
      "total": 32,
      "evidence": "docs/audit-data.json"
    },
    "unit": {
      "passed": 42,
      "total": 42,
      "command": "node --test tests/*.test.mjs",
      "observed_on": "2026-11-11"
    },
    "independent": {
      "passed": 25,
      "total": 25,
      "evidence": "tests/independent_audit_results.json"
    },
    "historical_account_diagnostics": {
      "passed": true,
      "evidence": "docs/audit-engine-after.json"
    },
    "browser": {
      "status": "verified_selected_workflows",
      "observed_count": 16,
      "evidence": "docs/audit-ui.json",
      "environment": "Chromium browser against managed local preview; mobile simulated in 375 CSS pixel iframe, not physical device",
      "observed": [
        "Built-in r2 market hash verifies and baseline calculation completes.",
        "Editing DCA immediately disables manifest, report and result exports until rerun.",
        "36-month plan executes exactly 36 instalments and spends $100,000 fee-inclusive principal.",
        "756-session plan executes exactly 756 instalments and spends $100,000 fee-inclusive principal.",
        "10,000-session plan over 1,258 sessions spends only $12,580 and retains $87,420 principal.",
        "Empty unused DCA periods does not prevent running other selected strategies.",
        "Synthetic filtered probability CSV imports, generates 1,258 correctly timed instructions and applies.",
        "Editing probability threshold invalidates applied custom instructions and disables stale exports.",
        "Invalid probability file gives error and explicitly preserves last successful input.",
        "Test-window MA200 shows 75 trades and 535 close-of-day cash sessions.",
        "Trade CSV contains signal date, SPX close, MA200, target and cause.",
        "Manifest and HTML summary preserve monthly/36 config and r2 market hash.",
        "Importing manifest restores monthly/36 and test dates, requires rerun, disables stale exports.",
        "Method route opens and browser Back restores backtest.",
        "375px mobile dark/light layout has scrollWidth=clientWidth; DCA controls are usable.",
        "60-month plan completes 60 instalments in validation window."
      ],
      "limitations": [
        "UI checks cover selected workflows, not every browser, assistive technology or arbitrary file.",
        "Synthetic probability fixture tests interaction only; it is not an actual HMM model or evidence of investment skill."
      ]
    }
  },
  "data_coverage": {
    "rows": 9067,
    "first_date": "1990-01-02",
    "last_date": "2025-12-31",
    "split_counts": {
      "train": 5043,
      "validation": 1258,
      "test": 2766
    },
    "valid_feature_rows": 9064,
    "valid_feature_split_counts": {
      "train": 5040,
      "validation": 1258,
      "test": 2766
    },
    "missing_vix_dates": [
      "1991-03-01",
      "1997-01-31",
      "1997-11-26"
    ],
    "vix_source_counts": {
      "CBOE": 9063,
      "MISSING": 3,
      "FRED_VIXCLS": 1
    },
    "vix_fred_fallback_dates": [
      "1999-12-31"
    ],
    "spy_rows": 8288,
    "spy_first_date": "1993-01-29",
    "cash_rate_max_age_days": 4,
    "sequence_lengths": {
      "1": 294,
      "2": 1497,
      "3": 207,
      "4": 3042,
      "5": 1258,
      "6": 2766
    }
  },
  "spx_external_overlap": {
    "rows": 2296,
    "start": "2016-11-11",
    "end": "2025-12-31",
    "note": "FRED distributes S&P DJI data; ten-year availability. Compares independently retrieved channel, not independent index construction."
  },
  "source_reconciliation": {
    "policy": "优先采用S&P DJI经FRED分发的当前历史收盘；保留原Yahoo值、来源和逐项理由。",
    "additionally_corroborated_dates": [
      "2019-08-12",
      "2021-08-11"
    ],
    "vendor_disagreement_count": 7,
    "entries": [
      {
        "date": "2018-11-29",
        "field": "spx_close",
        "original_value": "2737.80004882812",
        "reconciled_value": "2737.76",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "供应商冲突：按发布方S&P DJI经FRED分发的当前历史收盘优先；未另找到该日更正公告，不据此断言Yahoo必然错误。",
        "evidence_url": "https://fred.stlouisfed.org/series/SP500"
      },
      {
        "date": "2019-08-12",
        "field": "spx_close",
        "original_value": "2882.69995117188",
        "reconciled_value": "2883.75",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "Cboe公告C2019081302明确列示S&P DJI重算后收盘结算值2883.75，与FRED一致。",
        "evidence_url": "https://cdn.cboe.com/resources/release_notes/2019/Corrected-Closing-Settlement-Prices-for-Certain-SP-Indices-II.pdf"
      },
      {
        "date": "2020-05-11",
        "field": "spx_close",
        "original_value": "2930.18994140625",
        "reconciled_value": "2930.32",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "供应商冲突：按发布方S&P DJI经FRED分发的当前历史收盘优先；未另找到该日更正公告，不据此断言Yahoo必然错误。",
        "evidence_url": "https://fred.stlouisfed.org/series/SP500"
      },
      {
        "date": "2020-10-02",
        "field": "spx_close",
        "original_value": "3348.419921875",
        "reconciled_value": "3348.44",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "供应商冲突：按发布方S&P DJI经FRED分发的当前历史收盘优先；未另找到该日更正公告，不据此断言Yahoo必然错误。",
        "evidence_url": "https://fred.stlouisfed.org/series/SP500"
      },
      {
        "date": "2020-10-05",
        "field": "spx_close",
        "original_value": "3408.60009765625",
        "reconciled_value": "3408.63",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "供应商冲突：按发布方S&P DJI经FRED分发的当前历史收盘优先；未另找到该日更正公告，不据此断言Yahoo必然错误。",
        "evidence_url": "https://fred.stlouisfed.org/series/SP500"
      },
      {
        "date": "2020-10-06",
        "field": "spx_close",
        "original_value": "3360.96997070312",
        "reconciled_value": "3360.95",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "供应商冲突：按发布方S&P DJI经FRED分发的当前历史收盘优先；未另找到该日更正公告，不据此断言Yahoo必然错误。",
        "evidence_url": "https://fred.stlouisfed.org/series/SP500"
      },
      {
        "date": "2020-10-07",
        "field": "spx_close",
        "original_value": "3419.43994140625",
        "reconciled_value": "3419.45",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "供应商冲突：按发布方S&P DJI经FRED分发的当前历史收盘优先；未另找到该日更正公告，不据此断言Yahoo必然错误。",
        "evidence_url": "https://fred.stlouisfed.org/series/SP500"
      },
      {
        "date": "2020-10-09",
        "field": "spx_close",
        "original_value": "3477.13989257812",
        "reconciled_value": "3477.13",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "供应商冲突：按发布方S&P DJI经FRED分发的当前历史收盘优先；未另找到该日更正公告，不据此断言Yahoo必然错误。",
        "evidence_url": "https://fred.stlouisfed.org/series/SP500"
      },
      {
        "date": "2021-08-11",
        "field": "spx_close",
        "original_value": "4442.41015625",
        "reconciled_value": "4447.70",
        "original_source": "Yahoo Finance ^GSPC frozen snapshot",
        "selected_source": "FRED SP500 / S&P Dow Jones Indices",
        "reason": "FRED值4447.70与Morgan Stanley于SEC归档、引用Bloomberg的当日SPX收盘一致；Yahoo同期报道也为4447.70。",
        "evidence_url": "https://www.sec.gov/Archives/edgar/data/895421/000183988221011292/ms2219_fwp-07048.htm"
      }
    ]
  },
  "feature_impact": {
    "threshold": 1e-12,
    "changed_counts": {
      "return_1d": 15,
      "volatility_20d": 110
    },
    "changed_dates": {
      "return_1d": [
        "2018-11-29",
        "2018-11-30",
        "2019-08-12",
        "2019-08-13",
        "2020-05-11",
        "2020-05-12",
        "2020-10-02",
        "2020-10-05",
        "2020-10-06",
        "2020-10-07",
        "2020-10-08",
        "2020-10-09",
        "2020-10-12",
        "2021-08-11",
        "2021-08-12"
      ],
      "volatility_20d": [
        "2018-11-29",
        "2018-11-30",
        "2018-12-03",
        "2018-12-04",
        "2018-12-06",
        "2018-12-07",
        "2018-12-10",
        "2018-12-11",
        "2018-12-12",
        "2018-12-13",
        "2018-12-14",
        "2018-12-17",
        "2018-12-18",
        "2018-12-19",
        "2018-12-20",
        "2018-12-21",
        "2018-12-24",
        "2018-12-26",
        "2018-12-27",
        "2018-12-28",
        "2018-12-31",
        "2019-08-12",
        "2019-08-13",
        "2019-08-14",
        "2019-08-15",
        "2019-08-16",
        "2019-08-19",
        "2019-08-20",
        "2019-08-21",
        "2019-08-22",
        "2019-08-23",
        "2019-08-26",
        "2019-08-27",
        "2019-08-28",
        "2019-08-29",
        "2019-08-30",
        "2019-09-03",
        "2019-09-04",
        "2019-09-05",
        "2019-09-06",
        "2019-09-09",
        "2019-09-10",
        "2020-05-11",
        "2020-05-12",
        "2020-05-13",
        "2020-05-14",
        "2020-05-15",
        "2020-05-18",
        "2020-05-19",
        "2020-05-20",
        "2020-05-21",
        "2020-05-22",
        "2020-05-26",
        "2020-05-27",
        "2020-05-28",
        "2020-05-29",
        "2020-06-01",
        "2020-06-02",
        "2020-06-03",
        "2020-06-04",
        "2020-06-05",
        "2020-06-08",
        "2020-06-09",
        "2020-10-02",
        "2020-10-05",
        "2020-10-06",
        "2020-10-07",
        "2020-10-08",
        "2020-10-09",
        "2020-10-12",
        "2020-10-13",
        "2020-10-14",
        "2020-10-15",
        "2020-10-16",
        "2020-10-19",
        "2020-10-20",
        "2020-10-21",
        "2020-10-22",
        "2020-10-23",
        "2020-10-26",
        "2020-10-27",
        "2020-10-28",
        "2020-10-29",
        "2020-10-30",
        "2020-11-02",
        "2020-11-03",
        "2020-11-04",
        "2020-11-05",
        "2020-11-06",
        "2021-08-11",
        "2021-08-12",
        "2021-08-13",
        "2021-08-16",
        "2021-08-17",
        "2021-08-18",
        "2021-08-19",
        "2021-08-20",
        "2021-08-23",
        "2021-08-24",
        "2021-08-25",
        "2021-08-26",
        "2021-08-27",
        "2021-08-30",
        "2021-08-31",
        "2021-09-01",
        "2021-09-02",
        "2021-09-03",
        "2021-09-07",
        "2021-09-08",
        "2021-09-09"
      ]
    },
    "ma_trade_dates_and_sides_unchanged_in_audited_periods": true,
    "spy_and_cash_unchanged": true
  },
  "adjusted_price_snapshot": {
    "changed_rows": 7021,
    "compared_rows": 8288,
    "max_absolute_dollars": 0.000244140625,
    "max_relative": 1.5312373513414624e-06,
    "policy": "Frozen original snapshot retained. Differences in fresh Yahoo adjusted-price floats are disclosed, not silently replaced; not a second-vendor audit."
  },
  "benchmark_configuration": {
    "initialCash": 100000,
    "feeRate": 0.0005,
    "cashInterest": true,
    "dcaFrequency": "monthly",
    "dcaPeriods": 12,
    "external_cashflows": false,
    "end_forced_liquidation": false
  },
  "cash_days_definition": "cashDays统计收盘份额为零的交易日；卖出日仍承担上一收盘至当日开盘的股票价格变动，不能解释为全天无股票风险。",
  "benchmark_results": [
    {
      "requested_period": [
        "2010-01-01",
        "2014-12-31"
      ],
      "actual_period": [
        "2010-01-04",
        "2014-12-31"
      ],
      "market_days": 1258,
      "independent_ma_max_account_difference_usd": 6.402842700481415e-10,
      "strategies": [
        {
          "id": "buy_hold",
          "finalEquity": 202348.7867550575,
          "totalReturn": 1.0234878675505747,
          "cagr": 0.15173828397156508,
          "sharpe": 0.9650830889484387,
          "maxDrawdown": 0.18605468790974755,
          "volatility": 0.15863949593809376,
          "turnover": 0.14466917356666187,
          "totalFees": 49.97501249375313,
          "tradeCount": 1,
          "avgStockWeight": 1,
          "stockDays": 1258,
          "cashDays": 0,
          "finalEquityNoFee": 202449.961148435,
          "averageStockWeight": 1,
          "cashOnlyDays": 0,
          "name": "买入并持有"
        },
        {
          "id": "ma200",
          "finalEquity": 152199.1301355584,
          "totalReturn": 0.5219913013555839,
          "cagr": 0.08783267184976307,
          "sharpe": 0.7590475122713445,
          "maxDrawdown": 0.18613177285953664,
          "volatility": 0.1192864986996642,
          "turnover": 4.387146698083973,
          "totalFees": 1245.1793610019654,
          "tradeCount": 25,
          "avgStockWeight": 0.8553259141494436,
          "stockDays": 1076,
          "cashDays": 182,
          "finalEquityNoFee": 154113.54041483384,
          "averageStockWeight": 0.8553259141494436,
          "cashOnlyDays": 182,
          "name": "MA200 趋势"
        },
        {
          "id": "dca12",
          "finalEquity": 200775.86536900076,
          "totalReturn": 1.0077586536900078,
          "cagr": 0.1499382058321801,
          "sharpe": 1.0389163263792667,
          "maxDrawdown": 0.18596638204714977,
          "volatility": 0.14368044176382247,
          "turnover": 0.14566373660627052,
          "totalFees": 49.97501249375312,
          "tradeCount": 12,
          "avgStockWeight": 0.9095561505191985,
          "stockDays": 1258,
          "cashDays": 0,
          "finalEquityNoFee": 200876.22399886325,
          "averageStockWeight": 0.9095561505191985,
          "cashOnlyDays": 0,
          "name": "按月分批投入 12 期"
        }
      ],
      "most_missed_rallies": [
        {
          "exitDate": "2010-05-21",
          "reentryDate": "2010-06-16",
          "stockReturnWhileOut": 0.05202517680676855,
          "calendarDays": 26
        },
        {
          "exitDate": "2010-08-12",
          "reentryDate": "2010-09-14",
          "stockReturnWhileOut": 0.04505276532212377,
          "calendarDays": 33
        },
        {
          "exitDate": "2012-06-04",
          "reentryDate": "2012-06-07",
          "stockReturnWhileOut": 0.039567203080088875,
          "calendarDays": 3
        },
        {
          "exitDate": "2014-10-14",
          "reentryDate": "2014-10-22",
          "stockReturnWhileOut": 0.03179032582289598,
          "calendarDays": 8
        }
      ],
      "largest_avoided_falls": [
        {
          "exitDate": "2012-01-03",
          "reentryDate": "2012-01-04",
          "stockReturnWhileOut": -0.004383157078209687,
          "calendarDays": 1
        }
      ]
    },
    {
      "requested_period": [
        "2015-01-01",
        "2025-12-31"
      ],
      "actual_period": [
        "2015-01-02",
        "2025-12-31"
      ],
      "market_days": 2766,
      "independent_ma_max_account_difference_usd": 9.022187441587448e-10,
      "strategies": [
        {
          "id": "buy_hold",
          "finalEquity": 397704.0195586875,
          "totalReturn": 2.9770401955868753,
          "cagr": 0.1337714764657867,
          "sharpe": 0.6809027470267018,
          "maxDrawdown": 0.33717255595576867,
          "volatility": 0.1779009834073997,
          "turnover": 0.04612066044908132,
          "totalFees": 49.97501249375313,
          "tradeCount": 1,
          "avgStockWeight": 1,
          "stockDays": 2766,
          "cashDays": 0,
          "finalEquityNoFee": 397902.87156846677,
          "averageStockWeight": 1,
          "cashOnlyDays": 0,
          "name": "买入并持有"
        },
        {
          "id": "ma200",
          "finalEquity": 237063.43527494778,
          "totalReturn": 1.370634352749478,
          "cagr": 0.08166094345831687,
          "sharpe": 0.5554259924853046,
          "maxDrawdown": 0.2052391408209826,
          "volatility": 0.11700947800391857,
          "turnover": 6.139205995206076,
          "totalFees": 4761.780707840689,
          "tradeCount": 75,
          "avgStockWeight": 0.8065798987707882,
          "stockDays": 2231,
          "cashDays": 535,
          "finalEquityNoFee": 246122.07257574782,
          "averageStockWeight": 0.8065798987707882,
          "cashOnlyDays": 535,
          "name": "MA200 趋势"
        },
        {
          "id": "dca12",
          "finalEquity": 396995.0306106691,
          "totalReturn": 2.969950306106691,
          "cagr": 0.13358751603979524,
          "sharpe": 0.6899159032452477,
          "maxDrawdown": 0.3371481037210827,
          "volatility": 0.17446092826086862,
          "turnover": 0.046207097498880884,
          "totalFees": 49.97501249375312,
          "tradeCount": 12,
          "avgStockWeight": 0.9587691823642884,
          "stockDays": 2766,
          "cashDays": 0,
          "finalEquityNoFee": 397193.52038964274,
          "averageStockWeight": 0.9587691823642884,
          "cashOnlyDays": 0,
          "name": "按月分批投入 12 期"
        }
      ],
      "most_missed_rallies": [
        {
          "exitDate": "2020-02-28",
          "reentryDate": "2020-03-03",
          "stockReturnWhileOut": 0.07204691194827695,
          "calendarDays": 4
        },
        {
          "exitDate": "2020-03-06",
          "reentryDate": "2020-05-28",
          "stockReturnWhileOut": 0.0453401792273489,
          "calendarDays": 83
        },
        {
          "exitDate": "2022-01-24",
          "reentryDate": "2022-02-01",
          "stockReturnWhileOut": 0.04316818725671734,
          "calendarDays": 8
        },
        {
          "exitDate": "2018-12-06",
          "reentryDate": "2019-02-13",
          "stockReturnWhileOut": 0.040298146099915444,
          "calendarDays": 69
        }
      ],
      "largest_avoided_falls": [
        {
          "exitDate": "2022-04-11",
          "reentryDate": "2022-12-01",
          "stockReturnWhileOut": -0.07180169686091298,
          "calendarDays": 234
        },
        {
          "exitDate": "2020-06-12",
          "reentryDate": "2020-06-15",
          "stockReturnWhileOut": -0.033155814005162876,
          "calendarDays": 3
        },
        {
          "exitDate": "2018-04-03",
          "reentryDate": "2018-04-04",
          "stockReturnWhileOut": -0.008189614692861169,
          "calendarDays": 1
        },
        {
          "exitDate": "2018-10-12",
          "reentryDate": "2018-10-15",
          "stockReturnWhileOut": -0.004407633697966595,
          "calendarDays": 3
        }
      ]
    }
  ],
  "sensitivity": {
    "engineVersion": "1.1.0",
    "createdUtc": "2026-11-11T15:20:22.670Z",
    "note": "Baseline reconstructs the original SPX closes from the explicit ledger; other fields retain the frozen published snapshot. Sensitivity checks of data changes; not evidence that historical publication vintages are reconstructed.",
    "periods": [
      {
        "startDate": "2010-01-01",
        "endDate": "2014-12-31",
        "baseline": [
          {
            "id": "buy_hold",
            "metrics": {
              "finalEquity": 202348.7867550575,
              "totalReturn": 1.0234878675505747,
              "cagr": 0.15173828397156508,
              "sharpe": 0.9650830889484387,
              "maxDrawdown": 0.18605468790974755,
              "volatility": 0.15863949593809376,
              "turnover": 0.14466917356666187,
              "totalFees": 49.97501249375313,
              "tradeCount": 1,
              "avgStockWeight": 1,
              "stockDays": 1258,
              "cashDays": 0
            },
            "tradeCount": 1
          },
          {
            "id": "ma200",
            "metrics": {
              "finalEquity": 152199.1301355584,
              "totalReturn": 0.5219913013555839,
              "cagr": 0.08783267184976307,
              "sharpe": 0.7590475122713445,
              "maxDrawdown": 0.18613177285953664,
              "volatility": 0.1192864986996642,
              "turnover": 4.387146698083973,
              "totalFees": 1245.1793610019654,
              "tradeCount": 25,
              "avgStockWeight": 0.8553259141494436,
              "stockDays": 1076,
              "cashDays": 182
            },
            "tradeCount": 25
          },
          {
            "id": "dca12",
            "metrics": {
              "finalEquity": 200775.86536900076,
              "totalReturn": 1.0077586536900078,
              "cagr": 0.1499382058321801,
              "sharpe": 1.0389163263792667,
              "maxDrawdown": 0.18596638204714977,
              "volatility": 0.14368044176382247,
              "turnover": 0.14566373660627052,
              "totalFees": 49.97501249375312,
              "tradeCount": 12,
              "avgStockWeight": 0.9095561505191985,
              "stockDays": 1258,
              "cashDays": 0
            },
            "tradeCount": 12
          }
        ],
        "scenarios": {
          "publisher_spx_reconciliation": [
            {
              "id": "buy_hold",
              "finalEquity": 202348.7867550575,
              "finalEquityDifference": 0,
              "cagrDifference": 0,
              "sharpeDifference": 0,
              "maxDrawdownDifference": 0,
              "tradeCount": 1,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "ma200",
              "finalEquity": 152199.1301355584,
              "finalEquityDifference": 0,
              "cagrDifference": 0,
              "sharpeDifference": 0,
              "maxDrawdownDifference": 0,
              "tradeCount": 25,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "dca12",
              "finalEquity": 200775.86536900076,
              "finalEquityDifference": 0,
              "cagrDifference": 0,
              "sharpeDifference": 0,
              "maxDrawdownDifference": 0,
              "tradeCount": 12,
              "tradeDatesAndSidesUnchanged": true
            }
          ],
          "fresh_yahoo_adjusted_float": [
            {
              "id": "buy_hold",
              "finalEquity": 202348.87817895852,
              "finalEquityDifference": 0.09142390103079379,
              "cagrDifference": 1.0430140751083172e-07,
              "sharpeDifference": 1.7616686115440316e-06,
              "maxDrawdownDifference": 2.79763662125454e-07,
              "tradeCount": 1,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "ma200",
              "finalEquity": 152199.21969010538,
              "finalEquityDifference": 0.08955454698298126,
              "cagrDifference": 1.2829648787793246e-07,
              "sharpeDifference": 1.8183156216267093e-06,
              "maxDrawdownDifference": -1.528467930000943e-07,
              "tradeCount": 25,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "dca12",
              "finalEquity": 200775.89745794068,
              "finalEquityDifference": 0.032088939915411174,
              "cagrDifference": 3.683796578890508e-08,
              "sharpeDifference": 9.56313916278262e-07,
              "maxDrawdownDifference": 2.796436057161955e-07,
              "tradeCount": 12,
              "tradeDatesAndSidesUnchanged": true
            }
          ],
          "cash_second_prior_observation": [
            {
              "id": "buy_hold",
              "finalEquity": 202348.7867550575,
              "finalEquityDifference": 0,
              "cagrDifference": 0,
              "sharpeDifference": -4.0034819700718316e-05,
              "maxDrawdownDifference": 0,
              "tradeCount": 1,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "ma200",
              "finalEquity": 152200.29768819874,
              "finalEquityDifference": 1.1675526403414551,
              "cagrDifference": 1.6726395704047547e-06,
              "sharpeDifference": -4.086266414726758e-05,
              "maxDrawdownDifference": -3.5676062342115955e-06,
              "tradeCount": 25,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "dca12",
              "finalEquity": 200775.7802763319,
              "finalEquityDifference": -0.08509266885812394,
              "cagrDifference": -9.768604258830749e-08,
              "sharpeDifference": -4.611011766542106e-05,
              "maxDrawdownDifference": 1.2915435865235025e-07,
              "tradeCount": 12,
              "tradeDatesAndSidesUnchanged": true
            }
          ]
        }
      },
      {
        "startDate": "2015-01-01",
        "endDate": "2025-12-31",
        "baseline": [
          {
            "id": "buy_hold",
            "metrics": {
              "finalEquity": 397704.0195586875,
              "totalReturn": 2.9770401955868753,
              "cagr": 0.1337714764657867,
              "sharpe": 0.6809027470267018,
              "maxDrawdown": 0.33717255595576867,
              "volatility": 0.1779009834073997,
              "turnover": 0.04612066044908132,
              "totalFees": 49.97501249375313,
              "tradeCount": 1,
              "avgStockWeight": 1,
              "stockDays": 2766,
              "cashDays": 0
            },
            "tradeCount": 1
          },
          {
            "id": "ma200",
            "metrics": {
              "finalEquity": 237063.43527494778,
              "totalReturn": 1.370634352749478,
              "cagr": 0.08166094345831687,
              "sharpe": 0.5554259924853046,
              "maxDrawdown": 0.2052391408209826,
              "volatility": 0.11700947800391857,
              "turnover": 6.139205995206076,
              "totalFees": 4761.780707840689,
              "tradeCount": 75,
              "avgStockWeight": 0.8065798987707882,
              "stockDays": 2231,
              "cashDays": 535
            },
            "tradeCount": 75
          },
          {
            "id": "dca12",
            "metrics": {
              "finalEquity": 396995.0306106691,
              "totalReturn": 2.969950306106691,
              "cagr": 0.13358751603979524,
              "sharpe": 0.6899159032452477,
              "maxDrawdown": 0.3371481037210827,
              "volatility": 0.17446092826086862,
              "turnover": 0.046207097498880884,
              "totalFees": 49.97501249375312,
              "tradeCount": 12,
              "avgStockWeight": 0.9587691823642884,
              "stockDays": 2766,
              "cashDays": 0
            },
            "tradeCount": 12
          }
        ],
        "scenarios": {
          "publisher_spx_reconciliation": [
            {
              "id": "buy_hold",
              "finalEquity": 397704.0195586875,
              "finalEquityDifference": 0,
              "cagrDifference": 0,
              "sharpeDifference": 0,
              "maxDrawdownDifference": 0,
              "tradeCount": 1,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "ma200",
              "finalEquity": 237063.43527494778,
              "finalEquityDifference": 0,
              "cagrDifference": 0,
              "sharpeDifference": 0,
              "maxDrawdownDifference": 0,
              "tradeCount": 75,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "dca12",
              "finalEquity": 396995.0306106691,
              "finalEquityDifference": 0,
              "cagrDifference": 0,
              "sharpeDifference": 0,
              "maxDrawdownDifference": 0,
              "tradeCount": 12,
              "tradeDatesAndSidesUnchanged": true
            }
          ],
          "fresh_yahoo_adjusted_float": [
            {
              "id": "buy_hold",
              "finalEquity": 397704.12711299304,
              "finalEquityDifference": 0.107554305519443,
              "cagrDifference": 2.788435016221058e-08,
              "sharpeDifference": 9.802717659823657e-08,
              "maxDrawdownDifference": 1.4765616118683766e-07,
              "tradeCount": 1,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "ma200",
              "finalEquity": 237063.7619799111,
              "finalEquityDifference": 0.32670496331411414,
              "cagrDifference": 1.3556552747040485e-07,
              "sharpeDifference": 1.4201996345608592e-06,
              "maxDrawdownDifference": -6.94036512705054e-08,
              "tradeCount": 75,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "dca12",
              "finalEquity": 396995.0277192689,
              "finalEquityDifference": -0.0028914001886732876,
              "cagrDifference": -7.508367261266358e-10,
              "sharpeDifference": -6.389586848509765e-08,
              "maxDrawdownDifference": 1.4765257494442352e-07,
              "tradeCount": 12,
              "tradeDatesAndSidesUnchanged": true
            }
          ],
          "cash_second_prior_observation": [
            {
              "id": "buy_hold",
              "finalEquity": 397704.0195586875,
              "finalEquityDifference": 0,
              "cagrDifference": 0,
              "sharpeDifference": -1.0444771801898511e-05,
              "maxDrawdownDifference": 0,
              "tradeCount": 1,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "ma200",
              "finalEquity": 237053.88812107136,
              "finalEquityDifference": -9.547153876425,
              "cagrDifference": -3.961646135364205e-06,
              "sharpeDifference": -4.591275858234489e-05,
              "maxDrawdownDifference": 7.903146213372736e-05,
              "tradeCount": 75,
              "tradeDatesAndSidesUnchanged": true
            },
            {
              "id": "dca12",
              "finalEquity": 396995.03375695314,
              "finalEquityDifference": 0.0031462840270251036,
              "cagrDifference": 8.170244480965039e-10,
              "sharpeDifference": -1.0548346257355234e-05,
              "maxDrawdownDifference": -9.625698127457838e-09,
              "tradeCount": 12,
              "tradeDatesAndSidesUnchanged": true
            }
          ]
        }
      }
    ]
  },
  "engine_edge_fixes": [
    {
      "id": "ma_float_equality",
      "change": "MA比较采用相对1e-12容差，避免等值因浮点加法误差触发交易。"
    },
    {
      "id": "initial_cash_cent_precision",
      "change": "直接调用引擎与导入设置均拒绝超过两位小数的初始本金。"
    },
    {
      "id": "full_liquidation_zero_shares",
      "change": "全额清仓记录精确零份额，避免极小浮点余量误计持股或现金天数。"
    }
  ],
  "ui_and_contract_changes": [
    "分批投入频率与期数可调；显示已执行期数与未投入本金；短回测不压缩计划。",
    "概率规则、数据或日期变更使旧指令失效；重新生成后方可送入回测。",
    "设置、输入或草稿变化后旧结果禁止导出，避免旧成绩伪装新实验。",
    "文件上传先解析并校验，成功后才替换有效状态；过期异步读取不覆盖新选择。",
    "CSV导入仓位字段为target_weight，含费预算字段为cash_budget，不能用内部变量weight/budget替代。"
  ],
  "limitations": [
    "SPX第二下载渠道只覆盖2016-11-11至2025-12-31的2296个交易日；FRED转发S&P DJI数据，不是独立编制另一个指数。",
    "没有完成全历史SPY第二供应商复权与OHLC独立复核；重新下载同一Yahoo来源仅检验一致性。",
    "Cboe与FRED VIX同源。现代VIX方法于2003年推出，1990年起的早期序列为回溯计算；当前历史版本不等于当时可得档案。",
    "现金利率只验证观测日期早于交易日，未验证每个历史发布时间或数据版本；DGS3MO为年化收益率代理，并非真实国债持有收益。",
    "SPY复权开盘与收盘为含分红收益代理，不再另加分红；模拟份额非真实券商股数。费用和6.5小时日内计息为简化假设。",
    "未提供小组HMM训练代码和概率数据，不能审定模型训练是否泄漏未来信息，也不能认证预测有效。",
    "有限样例与自动检查不能证明所有输入、所有浏览器和所有市场情形均无缺陷；本报告不是投资收益或专业合规认证。"
  ],
  "group_actions": [
    "全组替换为r2市场表与三特征表，并保留旧版本和修订记录。",
    "模型组以修订后特征重新生成概率；固定模型不必因测试数据变化重估训练参数，但过滤状态与策略结果仍应重跑；定期重训方案也按冻结流程重跑。",
    "预先固定主要指标、候选策略、成本和样本划分；已经看过测试成绩后的新增试验标为探索分析。",
    "逐笔核对关键进出场日期、理由、费用和仓位，并区分金额增长与真实投资收益。",
    "若加入工资定投，先统一所有策略的外部现金流，再实现TWR/MWR等适配指标，不能直接与固定本金账户比期末金额。"
  ],
  "primary_references": [
    {
      "title": "Cboe VIX 历史与方法",
      "url": "https://www.cboe.com/tradable-products/vix/vix-historical-data"
    },
    {
      "title": "FRED SP500 及 S&P DJI 来源",
      "url": "https://fred.stlouisfed.org/series/SP500"
    },
    {
      "title": "FRED DGS3MO 收益率定义",
      "url": "https://fred.stlouisfed.org/series/DGS3MO"
    },
    {
      "title": "Investor.gov 定投定义",
      "url": "https://www.investor.gov/introduction-investing/investing-basics/glossary/dollar-cost-averaging"
    },
    {
      "title": "Vanguard 已有本金的分批投入",
      "url": "https://investor.vanguard.com/investor-resources-education/online-trading/dollar-cost-averaging-vs-lump-sum"
    },
    {
      "title": "Meb Faber 均线模型原作者说明",
      "url": "https://mebfaber.com/timing-model/"
    },
    {
      "title": "CFA Institute GIPS 现金流与收益计量",
      "url": "https://www.gipsstandards.org/standards/gips-standards-for-firms/gips-standards-handbook-for-firms/"
    },
    {
      "title": "statsmodels 过滤与平滑概率",
      "url": "https://www.statsmodels.org/stable/examples/notebooks/generated/markov_autoregression.html"
    },
    {
      "title": "William Sharpe 夏普比率原文",
      "url": "https://web.stanford.edu/~wfsharpe/art/sr/SR.htm"
    },
    {
      "title": "Bailey 等 回测过拟合研究",
      "url": "https://www.davidhbailey.com/dhbpapers/backtest-prob.pdf"
    }
  ],
  "production_sha256": {
    "market.csv": "def85f0bfb30c1554d14ed4156304b5cbeabcfff5f081ae4e6f99cdbb0e9ba7a",
    "three_features.csv": "29c29b07e23a992055c8bfad3af31549a652c877ccbed558853f1ed10cf54507"
  },
  "evidence_files": [
    {
      "path": "docs/audit-data.json",
      "sha256": "a25821c6f463e86d382a196814bff38273696a73e23f0f6b3e6c24904f5fd6ef"
    },
    {
      "path": "docs/audit-data-revision.json",
      "sha256": "5fb87ff53fa3c1a3f80864bf30e48d381ccb9a5adf2eae44fabd0b3759dcbb40"
    },
    {
      "path": "docs/audit-data-impact.json",
      "sha256": "1afb766e4de24a03aef0a1fc5c2655bfe96b9564108fb22f65a0323d89a14a64"
    },
    {
      "path": "docs/audit-engine-after.json",
      "sha256": "11293ce4bca36c043aa3bcddcaf5f3f7e53f3277fdeefd453470a062c54c607b"
    },
    {
      "path": "tests/independent_audit_results.json",
      "sha256": "5c9b3807b38b0d505a076fb76a57ff8522ee1c1258c00f2c51fe094032255501"
    },
    {
      "path": "docs/audit-ui.json",
      "sha256": "c8e78502c4d575a0e53f1261aa40413582a06098f1e300fe1dd9401bfe404b91"
    }
  ]
}
