{
  "apiVersion": "1",
  "generatedAt": "2026-11-14T02:28:24.265Z",
  "mode": "published-snapshot",
  "live": false,
  "data": {
    "schemaVersion": 1,
    "asOf": "2026-11-11T02:00:00Z",
    "status": "experimental",
    "validated": false,
    "dataAudit": {
      "UFC": {
        "bouts": 8988,
        "events": 796,
        "boutsWithPairedStrikingStats": 8967,
        "firstEvent": "1994-03-11T00:00:00+00:00",
        "lastEvent": "2026-11-07T00:00:00+00:00"
      },
      "PFL": {
        "bouts": 229,
        "events": 22,
        "boutsWithPairedStrikingStats": 227,
        "firstEvent": "2025-12-05T00:00:00-05:00",
        "lastEvent": "2026-10-16T23:00:00-04:00"
      }
    },
    "sourceCrosswalk": {
      "matchedBouts": 3495,
      "conflictingBoutsNotEnriched": 192,
      "unmatchedSecondaryExcluded": true
    },
    "datasetSha256": "fdef336996ad8513dfdcaab16c5890da667ecd3fa8be4d2c9544dc068caa3221",
    "availabilityLimitation": "Retrospective snapshots retrieved now; original publication/correction times unavailable. Backtests reconstruct prior-event statistics, not audited point-in-time archives.",
    "method": "Separate promotion logistic models; prior-event-day statistics; 60/10/10/20 chronological partitions; tuning then temperature calibration then untouched test; 1000 event-day bootstrap resamples.",
    "models": {
      "UFC": {
        "promotion": "UFC",
        "status": "experimental_retrospective",
        "eligibleBouts": 3883,
        "decisiveBouts": 8831,
        "split": {
          "train": {
            "bouts": 1884,
            "days": 426,
            "first": "1994-03-11",
            "last": "2019-06-01"
          },
          "tune": {
            "bouts": 414,
            "days": 79,
            "first": "2019-06-08",
            "last": "2021-04-17"
          },
          "calibrate": {
            "bouts": 515,
            "days": 79,
            "first": "2021-04-24",
            "last": "2023-03-04"
          },
          "test": {
            "bouts": 1070,
            "days": 159,
            "first": "2023-03-11",
            "last": "2026-11-07"
          }
        },
        "minPriorDecisiveBouts": 3,
        "minRecentStatBouts": 2,
        "validated": false,
        "deploymentApproved": false,
        "reason": "Research evaluation only; no prospective validation or audited historical publication-time archive.",
        "chosenC": 0.01,
        "temperature": 1.4008994775011783,
        "test": {
          "bouts": 1070,
          "brier": 0.23944973315512,
          "logLoss": 0.6717030584682041,
          "accuracy": 0.5803738317757009,
          "calibrationBins": [
            {
              "lower": 0.2,
              "count": 4,
              "meanProbability": 0.281168559817667,
              "winFrequency": 0.5
            },
            {
              "lower": 0.3,
              "count": 100,
              "meanProbability": 0.3674487097402148,
              "winFrequency": 0.27
            },
            {
              "lower": 0.4,
              "count": 432,
              "meanProbability": 0.4576545750885071,
              "winFrequency": 0.45601851851851855
            },
            {
              "lower": 0.5,
              "count": 435,
              "meanProbability": 0.5446801015717115,
              "winFrequency": 0.5701149425287356
            },
            {
              "lower": 0.6,
              "count": 95,
              "meanProbability": 0.6327590823371468,
              "winFrequency": 0.6210526315789474
            },
            {
              "lower": 0.7,
              "count": 4,
              "meanProbability": 0.7265291649552336,
              "winFrequency": 1
            }
          ]
        },
        "baselines": {
          "coinFlip": {
            "bouts": 1070,
            "brier": 0.25,
            "logLoss": 0.6931471805599453,
            "accuracy": 0.5018691588785047,
            "calibrationBins": [
              {
                "lower": 0.5,
                "count": 1070,
                "meanProbability": 0.5,
                "winFrequency": 0.5018691588785047
              }
            ]
          },
          "elo": {
            "bouts": 1070,
            "brier": 0.2459436784858613,
            "logLoss": 0.6849140178444784,
            "accuracy": 0.5439252336448598,
            "calibrationBins": [
              {
                "lower": 0.3,
                "count": 42,
                "meanProbability": 0.3766285269535261,
                "winFrequency": 0.35714285714285715
              },
              {
                "lower": 0.4,
                "count": 515,
                "meanProbability": 0.4627776319938228,
                "winFrequency": 0.4679611650485437
              },
              {
                "lower": 0.5,
                "count": 470,
                "meanProbability": 0.536434764134325,
                "winFrequency": 0.5404255319148936
              },
              {
                "lower": 0.6,
                "count": 42,
                "meanProbability": 0.6217662803658248,
                "winFrequency": 0.6190476190476191
              },
              {
                "lower": 0.7,
                "count": 1,
                "meanProbability": 0.7197133160537166,
                "winFrequency": 1
              }
            ]
          }
        },
        "brierDifference95CI": {
          "vsCoinFlip": [
            -0.014677334766161346,
            -0.006174945639510675
          ],
          "vsElo": [
            -0.010428932941187675,
            -0.0021332075068310865
          ]
        },
        "testCoverage": 0.5529715762273901,
        "testEventDays": 159,
        "researchGatePassed": false,
        "gate": {
          "baseline": "elo-tuned-v1",
          "params": {
            "k": 64,
            "new_boost": 1,
            "tau": 4,
            "finish_bonus": 0.25,
            "inact_rate": 0.1
          },
          "baselineSource": "ufcstats-mirror",
          "mirrorError": null,
          "difference": "modelMinusBaseline",
          "rule": "Pass only if every holdout bout matches walk-forward elo-tuned-v1, n>=200, events>=20, and the upper bound of the event-cluster 95% CI for (model - tuned Elo) log loss is < 0. Brier is reported with the same interval and is not part of the pass rule. validated stays false unless this passes.",
          "minBouts": 200,
          "minEvents": 20,
          "n": 1070,
          "events": 159,
          "holdoutBouts": 1070,
          "matched": 1070,
          "unmatched": 0,
          "matchRate": 1,
          "matchDetail": {
            "boutId": 1070,
            "nameAndDate": 0,
            "nameAndDateWindow": 0,
            "outcomeDisagreements": 0,
            "ambiguous": 0
          },
          "unmatchedBoutIds": [],
          "model": {
            "logLoss": 0.6717030584682041,
            "brier": 0.23944973315512
          },
          "eloTuned": {
            "logLoss": 0.6609557428086501,
            "brier": 0.2342632160840803
          },
          "logLossDifference": 0.010747315659554002,
          "logLossDifference95CI": [
            0.0004533568617174272,
            0.020650211339645858
          ],
          "brierDifference": 0.0051865170710397035,
          "brierDifference95CI": [
            0.00018710164314714658,
            0.009986025807219629
          ],
          "bootstrapDraws": 2000,
          "bootstrapSeed": 71,
          "cluster": "event",
          "blockers": [
            "upper 95% CI of (model - elo-tuned-v1) log loss is not < 0"
          ],
          "passed": false
        },
        "marketComparison": {
          "informational": true,
          "requiredForGate": false,
          "n": 0,
          "reason": "Market comparison failed: TypeError: paired_difference_ci() missing 1 required positional argument: 'events'"
        }
      },
      "PFL": {
        "promotion": "PFL",
        "status": "insufficient_history",
        "eligibleBouts": 0,
        "decisiveBouts": 227,
        "split": {
          "train": {
            "bouts": 0,
            "days": 0,
            "first": "2025-12-05",
            "last": "2026-06-13"
          },
          "tune": {
            "bouts": 0,
            "days": 0,
            "first": "2026-06-28",
            "last": "2026-07-10"
          },
          "calibrate": {
            "bouts": 0,
            "days": 0,
            "first": "2026-07-19",
            "last": "2026-07-26"
          },
          "test": {
            "bouts": 0,
            "days": 0,
            "first": "2026-08-08",
            "last": "2026-10-17"
          }
        },
        "minPriorDecisiveBouts": 3,
        "minRecentStatBouts": 2,
        "validated": false,
        "deploymentApproved": false,
        "reason": "Too few eligible bouts/classes in one or more chronological partitions."
      }
    },
    "modelVersion": "ufc-logistic-v1-d0286496ceca",
    "collection": {
      "ufcstats": "796 completed event pages, validated via Scrapy browser-cache replay. Live crawl returned a loading page.",
      "pfl": "Detailed cached official statistics for 22 completed events. Scrapy respects robots restrictions on the statistics feed; public event metadata is collected separately.",
      "sportsDataIO": "Excluded: trial data may be scrambled."
    },
    "candidateModels": {
      "FightMatrix": {
        "enabled": false,
        "researchGatePassed": false,
        "checkedAt": "2026-11-11",
        "reason": "Not enabled: the published-model refit did not beat tuned Elo with sufficient confidence on its 1,070-bout holdout. Existing experimental UFC estimates remain available.",
        "holdoutBouts": 1070,
        "eventDays": 159,
        "modelLogLoss": 0.6586688812261089,
        "tunedEloLogLoss": 0.6609557428086501,
        "logLossDifference95CI": [
          -0.019702954975962313,
          0.01613134441089912
        ],
        "prospectivelyValidated": false
      }
    }
  }
}
