{
  "season": "2026-27",
  "gw": 1,
  "arm": "baseline",
  "armMeta": {
    "id": "baseline",
    "name": "Template Baseline (Rolling Horizon Heuristic)",
    "shortLabel": "Baseline Heuristic",
    "category": "Heuristic",
    "description": "Greedy point-expectation squad following top 10k consensus ownership and 3-gameweek unweighted rolling EV.",
    "objectiveEP": 62.4,
    "realisedPoints": 68,
    "varianceScore": 14.2,
    "transfersCount": 0,
    "hits": 0,
    "captain": "Haaland",
    "viceCaptain": "Saka",
    "chip": "none",
    "formation": "3-4-3",
    "decisionDeltaVsBaseline": 0,
    "realisedRankEffect": "Top 18% percentile",
    "solverRuntimeMs": 18
  },
  "provenance": {
    "modelVersion": "v2.4.1-rc3",
    "frozenAt": "2026-08-14T15:30:00Z",
    "snapshotHash": "sha256:8f4c2e9a1b0d745e99812458c067e2a9b311fc90d813476fa33c79e652a9ef01",
    "datasetId": "fpl-ep-202627-gw1-freeze",
    "solverEngine": "Highs-MILP-v1.7.2",
    "executionTimestamp": "2026-08-14T15:32:11Z",
    "solverParameters": {
      "horizonWeeks": 5,
      "decayRate": 0.85,
      "hitPenalty": 4,
      "riskAversion": 0.15,
      "freeTransferConservationWeight": 0.8,
      "maxPlayersPerClub": 3,
      "teamBudgetCap": 100
    },
    "isDemoSample": true,
    "datasetKind": "illustrative-sample"
  },
  "formation": "3-4-3",
  "bankRemaining": 0.5,
  "hitCost": 0,
  "captainSelection": {
    "player": {
      "id": "p_haaland_mci",
      "webName": "Haaland",
      "fullName": "Erling Haaland",
      "team": "MCI",
      "position": "FWD",
      "cost": 15,
      "projectedMinutes": 88,
      "expectedPoints": 8.72,
      "realisedPoints": 13,
      "isCaptain": true,
      "multiplier": 2,
      "opponent": "CHE (A)",
      "isHome": false,
      "fixtureDifficulty": 3,
      "xGI": 0.94,
      "cleanSheetProbability": 0.32,
      "selectedByPercent": 54.2
    },
    "candidateComparison": [
      {
        "player": "Haaland",
        "team": "MCI",
        "opponent": "CHE (A)",
        "xP": 8.72,
        "ceiling90th": 15.4,
        "realised": 13,
        "selectionReason": "Dominant volume baseline, highest penalty equity in league (xGI > 0.90)."
      },
      {
        "player": "Palmer",
        "team": "CHE",
        "opponent": "MCI (H)",
        "xP": 6.84,
        "ceiling90th": 14.1,
        "realised": 3,
        "selectionReason": "Direct set-piece and penalty monopolist with high open-play assist conversion."
      },
      {
        "player": "Saka",
        "team": "ARS",
        "opponent": "WOL (H)",
        "xP": 7.15,
        "ceiling90th": 13.8,
        "realised": 12,
        "selectionReason": "Elite home game metrics, corner duties, high conversion against low blocks."
      },
      {
        "player": "Salah",
        "team": "LIV",
        "opponent": "IPS (A)",
        "xP": 7.89,
        "ceiling90th": 14.8,
        "realised": 14,
        "selectionReason": "Alternative premium anchor; excluded from base squad due to £12.5m structural trade-offs."
      }
    ]
  },
  "startingXI": [
    {
      "id": "p_raya_ars",
      "webName": "Raya",
      "fullName": "David Raya",
      "team": "ARS",
      "position": "GKP",
      "cost": 5.5,
      "projectedMinutes": 90,
      "expectedPoints": 4.58,
      "realisedPoints": 6,
      "opponent": "WOL (H)",
      "isHome": true,
      "fixtureDifficulty": 2,
      "cleanSheetProbability": 0.51,
      "selectedByPercent": 24.5
    },
    {
      "id": "p_saliba_ars",
      "webName": "Saliba",
      "fullName": "William Saliba",
      "team": "ARS",
      "position": "DEF",
      "cost": 6,
      "projectedMinutes": 90,
      "expectedPoints": 4.82,
      "realisedPoints": 6,
      "opponent": "WOL (H)",
      "isHome": true,
      "fixtureDifficulty": 2,
      "cleanSheetProbability": 0.51,
      "selectedByPercent": 38.2
    },
    {
      "id": "p_gvardiol_mci",
      "webName": "Gvardiol",
      "fullName": "Joško Gvardiol",
      "team": "MCI",
      "position": "DEF",
      "cost": 6,
      "projectedMinutes": 85,
      "expectedPoints": 4.41,
      "realisedPoints": 6,
      "opponent": "CHE (A)",
      "isHome": false,
      "fixtureDifficulty": 3,
      "cleanSheetProbability": 0.35,
      "selectedByPercent": 31.7
    },
    {
      "id": "p_munoz_cry",
      "webName": "Muñoz",
      "fullName": "Daniel Muñoz",
      "team": "CRY",
      "position": "DEF",
      "cost": 5,
      "projectedMinutes": 90,
      "expectedPoints": 4.15,
      "realisedPoints": 2,
      "opponent": "BRE (A)",
      "isHome": false,
      "fixtureDifficulty": 2,
      "cleanSheetProbability": 0.28,
      "selectedByPercent": 12.4
    },
    {
      "id": "p_saka_ars",
      "webName": "Saka",
      "fullName": "Bukayo Saka",
      "team": "ARS",
      "position": "MID",
      "cost": 10,
      "projectedMinutes": 89,
      "expectedPoints": 7.15,
      "realisedPoints": 12,
      "isViceCaptain": true,
      "opponent": "WOL (H)",
      "isHome": true,
      "fixtureDifficulty": 2,
      "xGI": 0.81,
      "cleanSheetProbability": 0.48,
      "selectedByPercent": 33.1
    },
    {
      "id": "p_palmer_che",
      "webName": "Palmer",
      "fullName": "Cole Palmer",
      "team": "CHE",
      "position": "MID",
      "cost": 10.5,
      "projectedMinutes": 87,
      "expectedPoints": 6.84,
      "realisedPoints": 3,
      "opponent": "MCI (H)",
      "isHome": true,
      "fixtureDifficulty": 4,
      "xGI": 0.72,
      "cleanSheetProbability": 0.18,
      "selectedByPercent": 42.6
    },
    {
      "id": "p_son_tot",
      "webName": "Son",
      "fullName": "Heung-min Son",
      "team": "TOT",
      "position": "MID",
      "cost": 10,
      "projectedMinutes": 86,
      "expectedPoints": 6.32,
      "realisedPoints": 2,
      "opponent": "LEI (A)",
      "isHome": false,
      "fixtureDifficulty": 2,
      "xGI": 0.69,
      "cleanSheetProbability": 0.31,
      "selectedByPercent": 15.3
    },
    {
      "id": "p_eze_cry",
      "webName": "Eze",
      "fullName": "Eberechi Eze",
      "team": "CRY",
      "position": "MID",
      "cost": 7,
      "projectedMinutes": 88,
      "expectedPoints": 5.42,
      "realisedPoints": 2,
      "opponent": "BRE (A)",
      "isHome": false,
      "fixtureDifficulty": 2,
      "xGI": 0.58,
      "cleanSheetProbability": 0.28,
      "selectedByPercent": 34
    },
    {
      "id": "p_rogers_avl",
      "webName": "Rogers",
      "fullName": "Morgan Rogers",
      "team": "AVL",
      "position": "MID",
      "cost": 5,
      "projectedMinutes": 82,
      "expectedPoints": 4.12,
      "realisedPoints": 2,
      "opponent": "WHU (A)",
      "isHome": false,
      "fixtureDifficulty": 3,
      "xGI": 0.41,
      "cleanSheetProbability": 0.25,
      "selectedByPercent": 14.8
    },
    {
      "id": "p_haaland_mci",
      "webName": "Haaland",
      "fullName": "Erling Haaland",
      "team": "MCI",
      "position": "FWD",
      "cost": 15,
      "projectedMinutes": 88,
      "expectedPoints": 8.72,
      "realisedPoints": 13,
      "isCaptain": true,
      "multiplier": 2,
      "opponent": "CHE (A)",
      "isHome": false,
      "fixtureDifficulty": 3,
      "xGI": 0.94,
      "cleanSheetProbability": 0.32,
      "selectedByPercent": 54.2
    },
    {
      "id": "p_isen_new",
      "webName": "Isak",
      "fullName": "Alexander Isak",
      "team": "NEW",
      "position": "FWD",
      "cost": 8.5,
      "projectedMinutes": 86,
      "expectedPoints": 6.24,
      "realisedPoints": 5,
      "opponent": "SOU (H)",
      "isHome": true,
      "fixtureDifficulty": 2,
      "xGI": 0.74,
      "cleanSheetProbability": 0.41,
      "selectedByPercent": 57.1
    }
  ],
  "bench": [
    {
      "id": "p_valdimarsson_bre",
      "webName": "Valdimarsson",
      "fullName": "Hákon Valdimarsson",
      "team": "BRE",
      "position": "GKP",
      "cost": 4,
      "projectedMinutes": 0,
      "expectedPoints": 0,
      "realisedPoints": 0,
      "benchOrder": 1,
      "opponent": "CRY (H)",
      "isHome": true,
      "fixtureDifficulty": 3
    },
    {
      "id": "p_joao_pedro_bha",
      "webName": "Joao Pedro",
      "fullName": "Joao Pedro",
      "team": "BHA",
      "position": "FWD",
      "cost": 5.5,
      "projectedMinutes": 75,
      "expectedPoints": 4.22,
      "realisedPoints": 5,
      "benchOrder": 2,
      "opponent": "EVE (A)",
      "isHome": false,
      "fixtureDifficulty": 2
    },
    {
      "id": "p_barco_bha",
      "webName": "Barco",
      "fullName": "Valentín Barco",
      "team": "BHA",
      "position": "DEF",
      "cost": 4,
      "projectedMinutes": 20,
      "expectedPoints": 1.45,
      "realisedPoints": 0,
      "benchOrder": 3,
      "opponent": "EVE (A)",
      "isHome": false,
      "fixtureDifficulty": 2
    },
    {
      "id": "p_faes_lei",
      "webName": "Faes",
      "fullName": "Wout Faes",
      "team": "LEI",
      "position": "DEF",
      "cost": 4,
      "projectedMinutes": 90,
      "expectedPoints": 2.1,
      "realisedPoints": 1,
      "benchOrder": 4,
      "opponent": "TOT (H)",
      "isHome": true,
      "fixtureDifficulty": 4
    }
  ],
  "transfers": [],
  "solverConstraints": [
    {
      "name": "Total Squad Budget",
      "expression": "Σ (c_i * x_i) ≤ B",
      "value": "£99.5m / £100.0m",
      "slack": "£0.5m",
      "binding": false
    },
    {
      "name": "Squad Roster Cardinality",
      "expression": "Σ x_i = 15",
      "value": "15 players",
      "slack": "0",
      "binding": true
    },
    {
      "name": "Starting XI Formation Min Defenders",
      "expression": "Σ (pos_DEF * s_i) ≥ 3",
      "value": "3 defenders",
      "slack": "0",
      "binding": true
    },
    {
      "name": "Club Roster Limit",
      "expression": "Σ (club_k * x_i) ≤ 3 ∀ k",
      "value": "ARS: 3, MCI: 2, CHE: 1",
      "slack": "ARS binding (3/3)",
      "binding": true
    },
    {
      "name": "Transfer Hit Boundary",
      "expression": "Penalty = 4.0 * max(0, T - FT)",
      "value": "Hits: 0",
      "slack": "1 FT buffer",
      "binding": false
    },
    {
      "name": "Expected Minutes Filter",
      "expression": "E[min_i] ≥ 60 for Starting XI",
      "value": "Min starting: 75 min",
      "slack": "15 min margin",
      "binding": false
    }
  ],
  "sensitivityAnalysis": [
    {
      "scenario": "Haaland Minutes Reduction (Down to 65 min)",
      "condition": "E[min] drops from 89 to 65",
      "optimalArmShift": "Shifts captaincy to Palmer; reallocates £2.0m to upgrade bench",
      "expectedPointsDelta": -2.3
    },
    {
      "scenario": "Arsenal Clean Sheet Probability Drift (-15%)",
      "condition": "Raya + Saliba CS expectation reduced to 34%",
      "optimalArmShift": "Downgrade Saliba to Robinson; upgrade Rogers to Semenyo",
      "expectedPointsDelta": -1.1
    },
    {
      "scenario": "Zero Bank Policy (Deploy All £0.5m Bank)",
      "condition": "Hard budget equality constraint B_used = 100.0",
      "optimalArmShift": "Upgrade Muñoz (£5.0m) to Porro (£5.5m)",
      "expectedPointsDelta": 0.65
    }
  ]
}