{
  "season": "2025-26",
  "gw": 33,
  "title": "Gameweek 33 reconstructive replay",
  "deadline": "2026-04-18T10:00:00Z",
  "status": "completed",
  "datasetKind": "historical-replay",
  "provenance": {
    "modelVersion": "live_faithful_option_value",
    "frozenAt": "2026-04-18T10:00:00Z",
    "snapshotHash": "sha256:6e0ea9229f1220ff6c4c3e035c5b527ce1a92f5fe9a72a5836631507d0a63a87",
    "datasetId": "fpl-lab-2025-26-gw33-replay",
    "solverEngine": "FPL lab reconstructive replay",
    "executionTimestamp": "2026-04-18T10:00:00Z",
    "solverParameters": {
      "horizonWeeks": 5,
      "decayRate": 0.85,
      "hitPenalty": 4,
      "riskAversion": 0.15,
      "freeTransferConservationWeight": 0.8,
      "maxPlayersPerClub": 3,
      "teamBudgetCap": 100
    },
    "isDemoSample": false,
    "datasetKind": "historical-replay",
    "limitations": [
      "Fixtures come from the final season export, so mid-season revisions are not in this snapshot.",
      "The cutoff is reconstructed as first kickoff minus 90 minutes, not the live FPL deadline clock.",
      "No private manager state (exact bank, selling prices, chip timing) was archived at the time.",
      "Press and injury notes were not locked before the deadline.",
      "Prices are not exact pre-deadline quotes.",
      "Raw community xP tables were not used as the pre-deadline forecast."
    ]
  },
  "validatedPlan": {
    "armId": "optimiser",
    "armName": "Optimiser (forecast)",
    "formation": "4-4-2",
    "bank": 0.3,
    "hitCost": 0,
    "freeTransfersAvailable": 3,
    "chipUsed": "none",
    "captain": {
      "id": "player:2025-26:430",
      "webName": "Haaland",
      "fullName": "Erling Haaland",
      "team": "MCI",
      "position": "FWD",
      "cost": 14.7,
      "projectedMinutes": 172.6,
      "expectedPoints": 14.01,
      "realisedPoints": 13,
      "opponent": "BUR (A)",
      "isHome": false,
      "fixtureDifficulty": 2,
      "selectedByPercent": 62.5,
      "isCaptain": true,
      "multiplier": 2
    },
    "viceCaptain": {
      "id": "player:2025-26:82",
      "webName": "Semenyo",
      "fullName": "Antoine Semenyo",
      "team": "MCI",
      "position": "MID",
      "cost": 8,
      "projectedMinutes": 168.6,
      "expectedPoints": 11.28,
      "realisedPoints": 5,
      "opponent": "BUR (A)",
      "isHome": false,
      "fixtureDifficulty": 2,
      "selectedByPercent": 46.2,
      "isViceCaptain": true
    },
    "startingXI": [
      {
        "id": "player:2025-26:470",
        "webName": "Dúbravka",
        "fullName": "Martin Dúbravka",
        "team": "BUR",
        "position": "GKP",
        "cost": 4,
        "projectedMinutes": 176.2,
        "expectedPoints": 4.98,
        "realisedPoints": 4,
        "opponent": "MCI (H)",
        "isHome": true,
        "fixtureDifficulty": 4,
        "selectedByPercent": 25.7
      },
      {
        "id": "player:2025-26:260",
        "webName": "Guéhi",
        "fullName": "Marc Guéhi",
        "team": "MCI",
        "position": "DEF",
        "cost": 5.1,
        "projectedMinutes": 173,
        "expectedPoints": 9.44,
        "realisedPoints": 8,
        "opponent": "BUR (A)",
        "isHome": false,
        "fixtureDifficulty": 2,
        "selectedByPercent": 32.6
      },
      {
        "id": "player:2025-26:226",
        "webName": "Chalobah",
        "fullName": "Trevoh Chalobah",
        "team": "CHE",
        "position": "DEF",
        "cost": 5.4,
        "projectedMinutes": 106.2,
        "expectedPoints": 5.07,
        "realisedPoints": 2,
        "opponent": "BHA (A)",
        "isHome": false,
        "fixtureDifficulty": 4,
        "selectedByPercent": 8.8
      },
      {
        "id": "player:2025-26:5",
        "webName": "Gabriel",
        "fullName": "Gabriel dos Santos Magalhães",
        "team": "ARS",
        "position": "DEF",
        "cost": 7.3,
        "projectedMinutes": 78.7,
        "expectedPoints": 5.07,
        "realisedPoints": 0,
        "opponent": "MCI (A)",
        "isHome": false,
        "fixtureDifficulty": 5,
        "selectedByPercent": 45.4
      },
      {
        "id": "player:2025-26:348",
        "webName": "Rodon",
        "fullName": "Joe Rodon",
        "team": "LEE",
        "position": "DEF",
        "cost": 3.9,
        "projectedMinutes": 135.4,
        "expectedPoints": 4.96,
        "realisedPoints": 1,
        "opponent": "BOU (A)",
        "isHome": false,
        "fixtureDifficulty": 4,
        "selectedByPercent": 3
      },
      {
        "id": "player:2025-26:82",
        "webName": "Semenyo",
        "fullName": "Antoine Semenyo",
        "team": "MCI",
        "position": "MID",
        "cost": 8,
        "projectedMinutes": 168.6,
        "expectedPoints": 11.28,
        "realisedPoints": 5,
        "opponent": "BUR (A)",
        "isHome": false,
        "fixtureDifficulty": 2,
        "selectedByPercent": 46.2,
        "isViceCaptain": true
      },
      {
        "id": "player:2025-26:783",
        "webName": "Groß",
        "fullName": "Pascal Groß",
        "team": "BHA",
        "position": "MID",
        "cost": 5.6,
        "projectedMinutes": 159.2,
        "expectedPoints": 8.15,
        "realisedPoints": 16,
        "opponent": "CHE (H)",
        "isHome": true,
        "fixtureDifficulty": 3,
        "selectedByPercent": 3
      },
      {
        "id": "player:2025-26:173",
        "webName": "Wieffer",
        "fullName": "Mats Wieffer",
        "team": "BHA",
        "position": "MID",
        "cost": 4.8,
        "projectedMinutes": 139.6,
        "expectedPoints": 7.38,
        "realisedPoints": 2,
        "opponent": "CHE (H)",
        "isHome": true,
        "fixtureDifficulty": 3,
        "selectedByPercent": 0.3
      },
      {
        "id": "player:2025-26:449",
        "webName": "B.Fernandes",
        "fullName": "Bruno Borges Fernandes",
        "team": "MUN",
        "position": "MID",
        "cost": 10.4,
        "projectedMinutes": 84,
        "expectedPoints": 5.8,
        "realisedPoints": 6,
        "opponent": "CHE (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 48
      },
      {
        "id": "player:2025-26:430",
        "webName": "Haaland",
        "fullName": "Erling Haaland",
        "team": "MCI",
        "position": "FWD",
        "cost": 14.7,
        "projectedMinutes": 172.6,
        "expectedPoints": 14.01,
        "realisedPoints": 13,
        "opponent": "BUR (A)",
        "isHome": false,
        "fixtureDifficulty": 2,
        "selectedByPercent": 62.5,
        "isCaptain": true,
        "multiplier": 2
      },
      {
        "id": "player:2025-26:249",
        "webName": "João Pedro",
        "fullName": "João Pedro Junqueira de Jesus",
        "team": "CHE",
        "position": "FWD",
        "cost": 7.4,
        "projectedMinutes": 153.2,
        "expectedPoints": 10.21,
        "realisedPoints": 0,
        "opponent": "BHA (A)",
        "isHome": false,
        "fixtureDifficulty": 4,
        "selectedByPercent": 34.8
      }
    ],
    "bench": [
      {
        "id": "player:2025-26:670",
        "webName": "Roefs",
        "fullName": "Robin Roefs",
        "team": "SUN",
        "position": "GKP",
        "cost": 4.8,
        "projectedMinutes": 54.5,
        "expectedPoints": 2.09,
        "realisedPoints": 1,
        "opponent": "AVL (A)",
        "isHome": false,
        "fixtureDifficulty": 4,
        "selectedByPercent": 8,
        "benchOrder": 1
      },
      {
        "id": "player:2025-26:47",
        "webName": "Rogers",
        "fullName": "Morgan Rogers",
        "team": "AVL",
        "position": "MID",
        "cost": 7.3,
        "projectedMinutes": 81.7,
        "expectedPoints": 4.49,
        "realisedPoints": 9,
        "opponent": "SUN (H)",
        "isHome": true,
        "fixtureDifficulty": 2,
        "selectedByPercent": 20.2,
        "benchOrder": 2
      },
      {
        "id": "player:2025-26:8",
        "webName": "J.Timber",
        "fullName": "Jurriën Timber",
        "team": "ARS",
        "position": "DEF",
        "cost": 6,
        "projectedMinutes": 59,
        "expectedPoints": 3.15,
        "realisedPoints": 0,
        "opponent": "MCI (A)",
        "isHome": false,
        "fixtureDifficulty": 5,
        "selectedByPercent": 15.2,
        "benchOrder": 3
      },
      {
        "id": "player:2025-26:252",
        "webName": "Marc Guiu",
        "fullName": "Marc Guiu Paz",
        "team": "CHE",
        "position": "FWD",
        "cost": 4,
        "projectedMinutes": 11.8,
        "expectedPoints": 0.65,
        "realisedPoints": 1,
        "opponent": "BHA (A)",
        "isHome": false,
        "fixtureDifficulty": 4,
        "selectedByPercent": 5.2,
        "benchOrder": 4
      }
    ],
    "transfersIn": [
      {
        "id": "player:2025-26:173",
        "webName": "Wieffer",
        "fullName": "Mats Wieffer",
        "team": "BHA",
        "position": "MID",
        "cost": 4.8,
        "projectedMinutes": 139.6,
        "expectedPoints": 7.38,
        "realisedPoints": 2,
        "opponent": "CHE (H)",
        "isHome": true,
        "fixtureDifficulty": 3,
        "selectedByPercent": 0.3
      },
      {
        "id": "player:2025-26:430",
        "webName": "Haaland",
        "fullName": "Erling Haaland",
        "team": "MCI",
        "position": "FWD",
        "cost": 14.7,
        "projectedMinutes": 172.6,
        "expectedPoints": 14.01,
        "realisedPoints": 13,
        "opponent": "BUR (A)",
        "isHome": false,
        "fixtureDifficulty": 2,
        "selectedByPercent": 62.5
      },
      {
        "id": "player:2025-26:783",
        "webName": "Groß",
        "fullName": "Pascal Groß",
        "team": "BHA",
        "position": "MID",
        "cost": 5.6,
        "projectedMinutes": 159.2,
        "expectedPoints": 8.15,
        "realisedPoints": 16,
        "opponent": "CHE (H)",
        "isHome": true,
        "fixtureDifficulty": 3,
        "selectedByPercent": 3
      }
    ],
    "transfersOut": [
      {
        "id": "player:2025-26:119",
        "webName": "Mbeumo",
        "fullName": "Bryan Mbeumo",
        "team": "MUN",
        "position": "MID",
        "cost": 8.3,
        "projectedMinutes": 64.4,
        "expectedPoints": 3.74,
        "realisedPoints": null,
        "opponent": "CHE (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 15
      },
      {
        "id": "player:2025-26:136",
        "webName": "Thiago",
        "fullName": "Igor Thiago Nascimento Rodrigues",
        "team": "BRE",
        "position": "FWD",
        "cost": 7.2,
        "projectedMinutes": 81.6,
        "expectedPoints": 5.16,
        "realisedPoints": null,
        "opponent": "FUL (H)",
        "isHome": true,
        "fixtureDifficulty": 3,
        "selectedByPercent": 30.2
      },
      {
        "id": "player:2025-26:450",
        "webName": "Cunha",
        "fullName": "Matheus Santos Carneiro da Cunha",
        "team": "MUN",
        "position": "MID",
        "cost": 8.1,
        "projectedMinutes": 76.2,
        "expectedPoints": 4.25,
        "realisedPoints": null,
        "opponent": "CHE (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 8.7
      }
    ],
    "transferActions": [
      {
        "playerIn": {
          "id": "player:2025-26:173",
          "webName": "Wieffer",
          "team": "BHA",
          "position": "MID",
          "cost": 4.9,
          "expectedPoints": 7.38
        },
        "playerOut": {
          "id": "player:2025-26:119",
          "webName": "Mbeumo",
          "team": "MUN",
          "position": "MID",
          "sellPrice": 8.6,
          "expectedPoints": 3.74
        },
        "netCostDelta": -3.7,
        "netXPDelta3GW": 3.64,
        "rationale": "Selected by this approach at the reconstructed cutoff."
      },
      {
        "playerIn": {
          "id": "player:2025-26:430",
          "webName": "Haaland",
          "team": "MCI",
          "position": "FWD",
          "cost": 14.4,
          "expectedPoints": 14.01
        },
        "playerOut": {
          "id": "player:2025-26:136",
          "webName": "Thiago",
          "team": "BRE",
          "position": "FWD",
          "sellPrice": 7.2,
          "expectedPoints": 5.16
        },
        "netCostDelta": 7.2,
        "netXPDelta3GW": 8.85,
        "rationale": "Selected by this approach at the reconstructed cutoff."
      },
      {
        "playerIn": {
          "id": "player:2025-26:783",
          "webName": "Groß",
          "team": "BHA",
          "position": "MID",
          "cost": 5.5,
          "expectedPoints": 8.15
        },
        "playerOut": {
          "id": "player:2025-26:450",
          "webName": "Cunha",
          "team": "MUN",
          "position": "MID",
          "sellPrice": 8,
          "expectedPoints": 4.25
        },
        "netCostDelta": -2.5,
        "netXPDelta3GW": 3.9,
        "rationale": "Selected by this approach at the reconstructed cutoff."
      }
    ],
    "projectedSquadTotalXP": 100.4,
    "realisedSquadTotalPoints": 79
  },
  "arms": [
    {
      "id": "baseline",
      "name": "Template (roll transfers)",
      "shortLabel": "Template",
      "category": "Heuristic",
      "description": "No transfers",
      "objectiveEP": 82,
      "realisedPoints": 61,
      "varianceScore": 0,
      "transfersCount": 0,
      "hits": 0,
      "captain": "João Pedro",
      "viceCaptain": "Palmer",
      "chip": "none",
      "formation": "4-4-2",
      "decisionDeltaVsBaseline": 0,
      "realisedRankEffect": "61 pts net",
      "solverRuntimeMs": 0
    },
    {
      "id": "optimiser",
      "name": "Optimiser (forecast)",
      "shortLabel": "Optimiser",
      "category": "Mixed-Integer Linear (ILP)",
      "description": "Mbeumo → Wieffer, Thiago → Haaland, Cunha → Groß",
      "objectiveEP": 100.4,
      "realisedPoints": 79,
      "varianceScore": 0,
      "transfersCount": 3,
      "hits": 0,
      "captain": "Haaland",
      "viceCaptain": "Semenyo",
      "chip": "none",
      "formation": "4-4-2",
      "decisionDeltaVsBaseline": 18,
      "realisedRankEffect": "79 pts net",
      "solverRuntimeMs": 0
    },
    {
      "id": "agent",
      "name": "Evidence-informed",
      "shortLabel": "Evidence",
      "category": "Multi-Objective Agent",
      "description": "Mbeumo → Wieffer, Thiago → Haaland, Cunha → Groß",
      "objectiveEP": 100.4,
      "realisedPoints": 79,
      "varianceScore": 0,
      "transfersCount": 3,
      "hits": 0,
      "captain": "Haaland",
      "viceCaptain": "Semenyo",
      "chip": "none",
      "formation": "4-4-2",
      "decisionDeltaVsBaseline": 18,
      "realisedRankEffect": "79 pts net",
      "solverRuntimeMs": 0
    }
  ],
  "summaryAnalysis": {
    "executiveSummary": "Reconstructive replay for 2025/26 Gameweek 33. The optimiser captained Haaland (vice Semenyo), formation 4-4-2, and made 3 transfers (Mbeumo out, Wieffer in; Thiago out, Haaland in; Cunha out, Groß in). It scored 79 net points after hits. Pre-cutoff objective was 100.4 expected points.",
    "keyTradeoffs": [
      "Transfers: Mbeumo to Wieffer; Thiago to Haaland; Cunha to Groß.",
      "Evidence-informed finished +0 points versus the optimiser this week.",
      "Fixtures come from the final season export, so mid-season revisions are not in this snapshot.",
      "The cutoff is reconstructed as first kickoff minus 90 minutes, not the live FPL deadline clock.",
      "No private manager state (exact bank, selling prices, chip timing) was archived at the time."
    ],
    "shadowPrices": {
      "budgetPerMillionXP": 0,
      "transferMarginalValueXP": 0,
      "benchPointsExpectancy": 0
    },
    "divergenceNotes": "This is a reconstructive historical replay, not a live two-hour freeze. Inputs were rebuilt after the season; see Methods and the limitations on this page."
  }
}