{
  "season": "2025-26",
  "gw": 13,
  "title": "Gameweek 13 reconstructive replay",
  "deadline": "2025-11-29T13:30:00Z",
  "status": "completed",
  "datasetKind": "historical-replay",
  "provenance": {
    "modelVersion": "live_faithful_option_value",
    "frozenAt": "2025-11-29T13:30:00Z",
    "snapshotHash": "sha256:49b5ea37407c5f36befeacefbb8860b52632e0e5e9abf2b981b17f46694bc4dc",
    "datasetId": "fpl-lab-2025-26-gw13-replay",
    "solverEngine": "FPL lab reconstructive replay",
    "executionTimestamp": "2025-11-29T13:30: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": "3-5-2",
    "bank": 0.5,
    "hitCost": 0,
    "freeTransfersAvailable": 5,
    "chipUsed": "none",
    "captain": {
      "id": "player:2025-26:381",
      "webName": "M.Salah",
      "fullName": "Mohamed Salah",
      "team": "LIV",
      "position": "MID",
      "cost": 14,
      "projectedMinutes": 88.7,
      "expectedPoints": 7.4,
      "realisedPoints": 0,
      "opponent": "WHU (A)",
      "isHome": false,
      "fixtureDifficulty": 3,
      "selectedByPercent": 15.2,
      "isCaptain": true,
      "multiplier": 2
    },
    "viceCaptain": {
      "id": "player:2025-26:256",
      "webName": "Muñoz",
      "fullName": "Daniel Muñoz Mejía",
      "team": "CRY",
      "position": "DEF",
      "cost": 5.9,
      "projectedMinutes": 87.8,
      "expectedPoints": 5.24,
      "realisedPoints": 1,
      "opponent": "MUN (H)",
      "isHome": true,
      "fixtureDifficulty": 3,
      "selectedByPercent": 9.2,
      "isViceCaptain": true
    },
    "startingXI": [
      {
        "id": "player:2025-26:220",
        "webName": "Sánchez",
        "fullName": "Robert Lynch Sánchez",
        "team": "CHE",
        "position": "GKP",
        "cost": 4.8,
        "projectedMinutes": 88.2,
        "expectedPoints": 3.63,
        "realisedPoints": 3,
        "opponent": "ARS (H)",
        "isHome": true,
        "fixtureDifficulty": 4,
        "selectedByPercent": 10.3
      },
      {
        "id": "player:2025-26:256",
        "webName": "Muñoz",
        "fullName": "Daniel Muñoz Mejía",
        "team": "CRY",
        "position": "DEF",
        "cost": 5.9,
        "projectedMinutes": 87.8,
        "expectedPoints": 5.24,
        "realisedPoints": 1,
        "opponent": "MUN (H)",
        "isHome": true,
        "fixtureDifficulty": 3,
        "selectedByPercent": 9.2,
        "isViceCaptain": true
      },
      {
        "id": "player:2025-26:8",
        "webName": "J.Timber",
        "fullName": "Jurriën Timber",
        "team": "ARS",
        "position": "DEF",
        "cost": 6,
        "projectedMinutes": 83.7,
        "expectedPoints": 4.98,
        "realisedPoints": 2,
        "opponent": "CHE (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 15.2
      },
      {
        "id": "player:2025-26:5",
        "webName": "Gabriel",
        "fullName": "Gabriel dos Santos Magalhães",
        "team": "ARS",
        "position": "DEF",
        "cost": 7.3,
        "projectedMinutes": 68,
        "expectedPoints": 4.35,
        "realisedPoints": 0,
        "opponent": "CHE (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 45.4
      },
      {
        "id": "player:2025-26:381",
        "webName": "M.Salah",
        "fullName": "Mohamed Salah",
        "team": "LIV",
        "position": "MID",
        "cost": 14,
        "projectedMinutes": 88.7,
        "expectedPoints": 7.4,
        "realisedPoints": 0,
        "opponent": "WHU (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 15.2,
        "isCaptain": true,
        "multiplier": 2
      },
      {
        "id": "player:2025-26:119",
        "webName": "Mbeumo",
        "fullName": "Bryan Mbeumo",
        "team": "MUN",
        "position": "MID",
        "cost": 8.3,
        "projectedMinutes": 88.7,
        "expectedPoints": 4.96,
        "realisedPoints": 1,
        "opponent": "CRY (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 15
      },
      {
        "id": "player:2025-26:387",
        "webName": "Szoboszlai",
        "fullName": "Dominik Szoboszlai",
        "team": "LIV",
        "position": "MID",
        "cost": 7.1,
        "projectedMinutes": 83.1,
        "expectedPoints": 4.49,
        "realisedPoints": 3,
        "opponent": "WHU (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 15.1
      },
      {
        "id": "player:2025-26:384",
        "webName": "Gakpo",
        "fullName": "Cody Gakpo",
        "team": "LIV",
        "position": "MID",
        "cost": 7.3,
        "projectedMinutes": 69.6,
        "expectedPoints": 4.41,
        "realisedPoints": 14,
        "opponent": "WHU (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 5.6
      },
      {
        "id": "player:2025-26:82",
        "webName": "Semenyo",
        "fullName": "Antoine Semenyo",
        "team": "BOU",
        "position": "MID",
        "cost": 8,
        "projectedMinutes": 70,
        "expectedPoints": 4.33,
        "realisedPoints": 1,
        "opponent": "SUN (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 46.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": 79.4,
        "expectedPoints": 4.76,
        "realisedPoints": 1,
        "opponent": "ARS (H)",
        "isHome": true,
        "fixtureDifficulty": 4,
        "selectedByPercent": 34.8
      },
      {
        "id": "player:2025-26:714",
        "webName": "Woltemade",
        "fullName": "Nick Woltemade",
        "team": "NEW",
        "position": "FWD",
        "cost": 6.7,
        "projectedMinutes": 72.1,
        "expectedPoints": 4.03,
        "realisedPoints": 7,
        "opponent": "EVE (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 6.5
      }
    ],
    "bench": [
      {
        "id": "player:2025-26:470",
        "webName": "Dúbravka",
        "fullName": "Martin Dúbravka",
        "team": "BUR",
        "position": "GKP",
        "cost": 4,
        "projectedMinutes": 85.6,
        "expectedPoints": 2.88,
        "realisedPoints": 1,
        "opponent": "BRE (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 25.7,
        "benchOrder": 1
      },
      {
        "id": "player:2025-26:72",
        "webName": "Senesi",
        "fullName": "Marcos Senesi Barón",
        "team": "BOU",
        "position": "DEF",
        "cost": 5.2,
        "projectedMinutes": 82.7,
        "expectedPoints": 3.39,
        "realisedPoints": 2,
        "opponent": "SUN (A)",
        "isHome": false,
        "fixtureDifficulty": 3,
        "selectedByPercent": 22,
        "benchOrder": 2
      },
      {
        "id": "player:2025-26:348",
        "webName": "Rodon",
        "fullName": "Joe Rodon",
        "team": "LEE",
        "position": "DEF",
        "cost": 3.9,
        "projectedMinutes": 83.9,
        "expectedPoints": 2.35,
        "realisedPoints": 0,
        "opponent": "MCI (A)",
        "isHome": false,
        "fixtureDifficulty": 5,
        "selectedByPercent": 3,
        "benchOrder": 3
      },
      {
        "id": "player:2025-26:252",
        "webName": "Marc Guiu",
        "fullName": "Marc Guiu Paz",
        "team": "CHE",
        "position": "FWD",
        "cost": 4,
        "projectedMinutes": 11.7,
        "expectedPoints": 0.66,
        "realisedPoints": 0,
        "opponent": "ARS (H)",
        "isHome": true,
        "fixtureDifficulty": 4,
        "selectedByPercent": 5.2,
        "benchOrder": 4
      }
    ],
    "transfersIn": [
      {
        "id": "player:2025-26:256",
        "webName": "Muñoz",
        "fullName": "Daniel Muñoz Mejía",
        "team": "CRY",
        "position": "DEF",
        "cost": 5.9,
        "projectedMinutes": 87.8,
        "expectedPoints": 5.24,
        "realisedPoints": 1,
        "opponent": "MUN (H)",
        "isHome": true,
        "fixtureDifficulty": 3,
        "selectedByPercent": 9.2
      }
    ],
    "transfersOut": [
      {
        "id": "player:2025-26:568",
        "webName": "Pedro Porro",
        "fullName": "Pedro Porro Sauceda",
        "team": "TOT",
        "position": "DEF",
        "cost": 5.2,
        "projectedMinutes": 61.6,
        "expectedPoints": 2.79,
        "realisedPoints": null,
        "opponent": "FUL (H)",
        "isHome": true,
        "fixtureDifficulty": 3,
        "selectedByPercent": 11.7
      }
    ],
    "transferActions": [
      {
        "playerIn": {
          "id": "player:2025-26:256",
          "webName": "Muñoz",
          "team": "CRY",
          "position": "DEF",
          "cost": 5.8,
          "expectedPoints": 5.24
        },
        "playerOut": {
          "id": "player:2025-26:568",
          "webName": "Pedro Porro",
          "team": "TOT",
          "position": "DEF",
          "sellPrice": 5.5,
          "expectedPoints": 2.79
        },
        "netCostDelta": 0.3,
        "netXPDelta3GW": 2.45,
        "rationale": "Selected by this approach at the reconstructed cutoff."
      }
    ],
    "projectedSquadTotalXP": 67.2,
    "realisedSquadTotalPoints": 36
  },
  "arms": [
    {
      "id": "baseline",
      "name": "Template (roll transfers)",
      "shortLabel": "Template",
      "category": "Heuristic",
      "description": "No transfers",
      "objectiveEP": 57.7,
      "realisedPoints": 32,
      "varianceScore": 0,
      "transfersCount": 0,
      "hits": 0,
      "captain": "M.Salah",
      "viceCaptain": "João Pedro",
      "chip": "none",
      "formation": "5-3-2",
      "decisionDeltaVsBaseline": 0,
      "realisedRankEffect": "32 pts net",
      "solverRuntimeMs": 0
    },
    {
      "id": "optimiser",
      "name": "Optimiser (forecast)",
      "shortLabel": "Optimiser",
      "category": "Mixed-Integer Linear (ILP)",
      "description": "Pedro Porro → Muñoz",
      "objectiveEP": 67.2,
      "realisedPoints": 36,
      "varianceScore": 0,
      "transfersCount": 1,
      "hits": 0,
      "captain": "M.Salah",
      "viceCaptain": "Muñoz",
      "chip": "none",
      "formation": "3-5-2",
      "decisionDeltaVsBaseline": 4,
      "realisedRankEffect": "36 pts net",
      "solverRuntimeMs": 0
    },
    {
      "id": "agent",
      "name": "Evidence-informed",
      "shortLabel": "Evidence",
      "category": "Multi-Objective Agent",
      "description": "Pedro Porro → Muñoz",
      "objectiveEP": 67.2,
      "realisedPoints": 36,
      "varianceScore": 0,
      "transfersCount": 1,
      "hits": 0,
      "captain": "M.Salah",
      "viceCaptain": "Muñoz",
      "chip": "none",
      "formation": "3-5-2",
      "decisionDeltaVsBaseline": 4,
      "realisedRankEffect": "36 pts net",
      "solverRuntimeMs": 0
    }
  ],
  "summaryAnalysis": {
    "executiveSummary": "Reconstructive replay for 2025/26 Gameweek 13. The optimiser captained M.Salah (vice Muñoz), formation 3-5-2, and made one transfer (Pedro Porro out, Muñoz in). It scored 36 net points after hits. Pre-cutoff objective was 67.2 expected points.",
    "keyTradeoffs": [
      "Transfers: Pedro Porro to Muñoz.",
      "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."
  }
}