{
  "title": "Kronos x402 API — Track Record Methodology",
  "what_is_measured": {
    "metric": "Directional hit-rate",
    "description": "Each served forecast predicts whether the asset price will be higher or lower than the current close at the given horizon (1h, 4h, 24h). A forecast is a 'hit' if: up_prob > 0.5 AND the actual close at horizon was above the forecast-time close; OR up_prob ≤ 0.5 AND the actual close was below or equal to the forecast-time close."
  },
  "how_scored": {
    "process": "The /api/cron/evaluate endpoint runs on a scheduled cron (currently every 30 min). For each un-scored forecast row in the 'forecasts' table, it fetches the realized OHLCV candle from Binance at the forecast horizon (e.g. 1 hour after the forecast was generated), then computes the hit/miss outcome and stores it in the 'outcomes' table.",
    "scoring_lag": "Outcomes for 1h forecasts appear ~1h after the forecast; 24h forecasts ~24h later. The cron runs every 30 min so there is up to ~30 min additional lag.",
    "data_source": "Binance OHLCV klines (same source used to generate forecasts)."
  },
  "accuracy": {
    "available": true,
    "sample_size": 26292,
    "hit_rate": 0.5343,
    "note": "n=26292 cache-served forecasts scored. Thin sample — treat as preliminary; do not draw firm conclusions yet."
  },
  "funding_extremes_track_record": {
    "window": "last 90 days",
    "signals_detected": 43,
    "signals_scored": 43,
    "overall_reversal_rate_24h": 0.5116,
    "note": "Based on 43 scored extremes in the last 90 days. Honest and unaudited.",
    "methodology": "A 'reversal' for extreme_positive/critical_positive (crowded longs) = price lower at T+24h. For extreme_negative/critical_negative (crowded shorts) = price higher at T+24h. Scored automatically by /api/cron/evaluate-funding-signals from Binance 1h klines."
  },
  "volatility_track_record": {
    "window": "last 90 days",
    "scored_estimates": 0,
    "estimator_mae_ranking": [],
    "note": "No scored estimates yet — will populate after estimates age window_days",
    "methodology": "Each served vol estimate is logged to volatility_estimates. After window_days, the realized vol over that exact window is computed from Binance daily candles and stored in volatility_outcomes. Best estimator = argmin MAE over last 30 scored outcomes per (asset, window), returned in the /api/v1/volatility endpoint as best_estimator."
  },
  "what_is_NOT_measured": [
    "Paid/live forecasts are tracked separately (small sample, not headline).",
    "Internal R&D forecasts (source='internal') are NEVER included in any customer-facing figure.",
    "We do not report blended paid+cache figures — paid n is too small to be meaningful and blending would be misleading."
  ],
  "caveats": [
    "This model is early-stage. Sample sizes are thin — any percentage should be treated as preliminary.",
    "All forecasts are from a single market regime (mid-2025 to present). Regime-change behaviour is untested.",
    "Directional hit-rate does not account for magnitude or transaction costs. A 54% hit-rate does not imply profitability.",
    "Past performance does not guarantee future results.",
    "Not financial advice."
  ],
  "calibration": {
    "live_reliability_diagram": [
      {
        "bucket": "[0–0.2]",
        "predicted_avg": 0.1161,
        "actual_up_rate": 0.5074,
        "n": 4334
      },
      {
        "bucket": "(0.2–0.4]",
        "predicted_avg": 0.3115,
        "actual_up_rate": 0.5575,
        "n": 5444
      },
      {
        "bucket": "(0.4–0.6]",
        "predicted_avg": 0.5125,
        "actual_up_rate": 0.5735,
        "n": 6673
      },
      {
        "bucket": "(0.6–0.8]",
        "predicted_avg": 0.7042,
        "actual_up_rate": 0.5801,
        "n": 6577
      },
      {
        "bucket": "(0.8–1]",
        "predicted_avg": 0.8877,
        "actual_up_rate": 0.6685,
        "n": 3264
      }
    ],
    "n_calibration_points": 26292,
    "stored_fit": {
      "method": "binned",
      "n_total": 5000,
      "brier_before": 0.333177983599997,
      "brier_after": 0.248223684368011,
      "fitted_at": "2026-07-27T02:00:07.379437+00:00"
    }
  },
  "directional_edge": {
    "description": "Per-asset trailing scored hit-rate over served (cache/paid) forecasts, last 90d. 'established' is true only when the one-sided 95% lower confidence bound on hit-rate exceeds 0.5 (hit_rate - 1.96*sqrt(p*(1-p)/n) > 0.5) with n>=50; null means insufficient sample (edge unproven); false means direction not proven better than coin-flip.",
    "assets": {
      "BTC-USD": {
        "established": false,
        "trailing_hit_rate": 0.449,
        "n": 1000,
        "window": "90d"
      },
      "ETH-USD": {
        "established": false,
        "trailing_hit_rate": 0.518,
        "n": 1000,
        "window": "90d"
      },
      "SOL-USD": {
        "established": false,
        "trailing_hit_rate": 0.509,
        "n": 1000,
        "window": "90d"
      }
    }
  },
  "live_stats_url": "https://kronossignals.com/api/stats",
  "generated_at": "2026-07-27T07:24:09.281Z",
  "disclaimer": "Track record is computed automatically by the Kronos evaluate cron from actual Binance OHLCV data. Figures are honest and unaudited. Not financial advice."
}