{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "6215d85b",
   "metadata": {},
   "source": [
    "# Live CLV Strategy -- Sandbox\n",
    "\n",
    "Faithful backtest of the **production strategy** (the one `live_monitor.py` runs 24/7 and that the\n",
    "Kalshi bankroll tracker follows). Reproduces ~$1,370 on $1,000 over the live_data window.\n",
    "\n",
    "**The rule, in one paragraph:** for every pre-kickoff snapshot we know Pinnacle's margin-removed fair\n",
    "probability (`pin_fair_*`) and each book's closing-line value (CLV) vs that fair. A signal **fires the\n",
    "first time** a side's CLV enters the band **[5%, 12%)** -- 5% is the minimum edge, and >=12% has been\n",
    "-ROI (a long-shot trap, audited 2026-05-23). We bet **home or away only (never the draw)**, taking the\n",
    "**Kalshi ask** (or B365 price). If *both* sides fire on a match we keep only the **higher-CLV** side.\n",
    "Sizing is **fractional Kelly** (0.25x, capped at 25% of bankroll, $1 floor) using `pin_fair` as p_win,\n",
    "compounding off the running bankroll.\n",
    "\n",
    "Everything you'd want to tweak lives in the **PARAMETERS** cell -- change a knob, re-run all cells.\n",
    "The full bet-by-bet log is written to **`strategy_bets.csv`**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f4732261",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:52.020271Z",
     "iopub.status.busy": "2026-06-06T15:52:52.019295Z",
     "iopub.status.idle": "2026-06-06T15:52:53.180372Z",
     "shell.execute_reply": "2026-06-06T15:52:53.180372Z"
    }
   },
   "outputs": [],
   "source": [
    "import os, math\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from scipy import stats\n",
    "import warnings; warnings.filterwarnings('ignore')\n",
    "os.chdir(r'C:\\Users\\lirse\\OneDrive\\Desktop\\scripts\\clv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "908ccf40",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:53.183301Z",
     "iopub.status.busy": "2026-06-06T15:52:53.183301Z",
     "iopub.status.idle": "2026-06-06T15:52:53.188204Z",
     "shell.execute_reply": "2026-06-06T15:52:53.188204Z"
    }
   },
   "outputs": [],
   "source": [
    "# ============================ PARAMETERS (play here) ============================\n",
    "BOOK         = 'kalshi'        # which book to execute on: 'kalshi' (the live-tracked leg) or 'b365'\n",
    "EDGE_LO      = 0.05            # signal fires when CLV first enters [EDGE_LO, EDGE_HI)\n",
    "EDGE_HI      = 0.12            # >=12% CLV excluded (long-shot trap, -ROI in audit)\n",
    "SIDES        = ['home', 'away']   # production bets home/away only -- the draw is never backed\n",
    "KELLY_MULT   = 0.25           # fractional-Kelly multiplier (0.25 = quarter Kelly)\n",
    "MAX_BET_PCT  = 0.25           # hard cap on stake as a fraction of bankroll\n",
    "MIN_STAKE    = 1.0            # $ floor on any non-zero stake (matches live _kelly_stake)\n",
    "BANKROLL0    = 1000.0         # starting bankroll\n",
    "EXCLUDE_LEAGUES = []  # 2026-06-17: no longer excluding USL/BSA   # set to [] to include every league\n",
    "CSV_OUT      = 'E:/soccer/research/strategy_bets.csv'   # bet-by-bet log written here\n",
    "# ==============================================================================="
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "53ed4aad",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:53.191114Z",
     "iopub.status.busy": "2026-06-06T15:52:53.191114Z",
     "iopub.status.idle": "2026-06-06T15:52:54.162328Z",
     "shell.execute_reply": "2026-06-06T15:52:54.161353Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loaded 186,350 snapshots across 40 dates, 28 leagues\n"
     ]
    }
   ],
   "source": [
    "# ---- load every live_data snapshot CSV into one frame ----\n",
    "dfs = [pd.read_csv('E:/soccer/live_data/' + f) for f in os.listdir('E:/soccer/live_data')\n",
    "       if f.endswith('.csv') and f != 'E:/soccer/research/test.csv']\n",
    "df = pd.concat(dfs, ignore_index=True)\n",
    "# timestamps are mixed-format and a few rows are corrupted -> coerce bad ones to NaT and drop\n",
    "df['ts'] = pd.to_datetime(df['timestamp'], format='mixed', errors='coerce')\n",
    "df = df[df['ts'].notna()]\n",
    "print(f\"loaded {len(df):,} snapshots across {df['game_date'].nunique()} dates, {df['league'].nunique()} leagues\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "5f3d45a4",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.166236Z",
     "iopub.status.busy": "2026-06-06T15:52:54.166236Z",
     "iopub.status.idle": "2026-06-06T15:52:54.199574Z",
     "shell.execute_reply": "2026-06-06T15:52:54.198593Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "14,285 pre-kickoff snapshots after league filter\n"
     ]
    }
   ],
   "source": [
    "# ---- keep only pre-kickoff snapshots (elapsed < 0 = minutes before KO), drop excluded leagues ----\n",
    "pre = df[(df['status'] == 'PRE') & (df['elapsed'] < 0)].copy()\n",
    "if EXCLUDE_LEAGUES:\n",
    "    pre = pre[~pre['league'].isin(EXCLUDE_LEAGUES)]\n",
    "print(f\"{len(pre):,} pre-kickoff snapshots after league filter\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5ae0876a",
   "metadata": {},
   "source": [
    "## Build signals\n",
    "\n",
    "A side's signal fires the **first** time its CLV is inside the band before kickoff. Taking the earliest\n",
    "qualifying snapshot is the *causal* choice -- it's exactly the moment `live_monitor` would have acted, with\n",
    "no peeking at later prices."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1276a533",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.203475Z",
     "iopub.status.busy": "2026-06-06T15:52:54.202498Z",
     "iopub.status.idle": "2026-06-06T15:52:54.223006Z",
     "shell.execute_reply": "2026-06-06T15:52:54.222057Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "387 raw side-signals (kalshi CLV in [5%, 12%))\n"
     ]
    }
   ],
   "source": [
    "# ---- first time each side's CLV enters [EDGE_LO, EDGE_HI) ----\n",
    "GAME = ['game_date', 'home', 'away']          # unique fixture key\n",
    "entries = []\n",
    "for side in SIDES:\n",
    "    clv_col = f'clv_{BOOK}_{side}'\n",
    "    q = pre[(pre[clv_col] >= EDGE_LO) & (pre[clv_col] < EDGE_HI)].copy()\n",
    "    q = q.sort_values('ts').drop_duplicates(GAME, keep='first')   # earliest qualifying snapshot per game\n",
    "    q['side'] = side\n",
    "    q['clv']  = q[clv_col]\n",
    "    entries.append(q)\n",
    "sig = pd.concat(entries, ignore_index=True)\n",
    "print(f\"{len(sig)} raw side-signals ({BOOK} CLV in [{EDGE_LO:.0%}, {EDGE_HI:.0%}))\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "dd986f6d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.225937Z",
     "iopub.status.busy": "2026-06-06T15:52:54.225937Z",
     "iopub.status.idle": "2026-06-06T15:52:54.236697Z",
     "shell.execute_reply": "2026-06-06T15:52:54.236697Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "370 signals after both-sides dedupe\n"
     ]
    }
   ],
   "source": [
    "# ---- both-sides dedupe: if HOME and AWAY both fire on a match, keep the higher-CLV side ----\n",
    "# (both firing == a synthetic 'no draw' call; the smaller CLV is noise on the same mispricing)\n",
    "sig = sig.sort_values('clv', ascending=False).drop_duplicates(GAME, keep='first')\n",
    "sig = sig.sort_values('ts').reset_index(drop=True)\n",
    "print(f\"{len(sig)} signals after both-sides dedupe\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ad493e18",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.239607Z",
     "iopub.status.busy": "2026-06-06T15:52:54.239607Z",
     "iopub.status.idle": "2026-06-06T15:52:54.271851Z",
     "shell.execute_reply": "2026-06-06T15:52:54.271851Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "365 settled bets | win rate 26.3% | flat ROI +18.6%\n"
     ]
    }
   ],
   "source": [
    "# ---- settle outcomes & compute flat (1-unit) net returns ----\n",
    "SIDE_LETTER = {'home': 'H', 'away': 'A'}       # ftr is 'H'/'D'/'A'\n",
    "def executed_odds(row):\n",
    "    # Kalshi: pay the ASK -> decimal odds = 1/ask.  B365: the decimal price itself.\n",
    "    if BOOK == 'kalshi':\n",
    "        ask = row[f'kalshi_{row.side}_ask']\n",
    "        return 1.0 / ask if ask and ask > 0 else np.nan\n",
    "    return row[f'b365_{row.side}']\n",
    "\n",
    "sig['ask']   = sig.apply(lambda r: r[f'kalshi_{r.side}_ask'] if BOOK == 'kalshi' else np.nan, axis=1)\n",
    "sig['odds']  = sig.apply(executed_odds, axis=1)\n",
    "sig['p_win'] = sig.apply(lambda r: r[f'pin_fair_{r.side}'], axis=1)     # Pinnacle fair prob = our p_win\n",
    "sig['won']   = (sig['ftr'] == sig['side'].map(SIDE_LETTER)).astype(int)\n",
    "sig = sig.dropna(subset=['odds', 'p_win', 'ftr']).reset_index(drop=True)\n",
    "sig['net']   = np.where(sig['won'] == 1, sig['odds'] - 1, -1.0)         # +odds-1 on a win, -1 on a loss\n",
    "print(f\"{len(sig)} settled bets | win rate {sig['won'].mean():.1%} | flat ROI {sig['net'].mean():+.1%}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "c980926f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.274762Z",
     "iopub.status.busy": "2026-06-06T15:52:54.274762Z",
     "iopub.status.idle": "2026-06-06T15:52:54.315795Z",
     "shell.execute_reply": "2026-06-06T15:52:54.315795Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "final bankroll: $1,389.13  (+38.9% from $1,000)\n"
     ]
    }
   ],
   "source": [
    "# ---- fractional-Kelly compounding off the running bankroll (matches live _kelly_stake) ----\n",
    "def kelly_fraction(p, odds):\n",
    "    b = odds - 1\n",
    "    f = max((p * b - (1 - p)) / b, 0.0)        # standard Kelly; for binary = (p - ask)/(1 - ask)\n",
    "    return min(f * KELLY_MULT, MAX_BET_PCT)     # quarter-Kelly, capped\n",
    "\n",
    "br = BANKROLL0\n",
    "fracs, stakes, equity = [], [], []\n",
    "for _, r in sig.iterrows():\n",
    "    frac  = kelly_fraction(r.p_win, r.odds)\n",
    "    stake = round(frac * br, 2)\n",
    "    if stake > 0:\n",
    "        stake = max(stake, MIN_STAKE)           # $1 floor\n",
    "    br += stake * (r.odds - 1) if r.won else -stake\n",
    "    fracs.append(round(frac, 4)); stakes.append(stake); equity.append(round(br, 2))\n",
    "sig['kelly_frac'] = fracs\n",
    "sig['stake']      = stakes\n",
    "sig['bankroll']   = equity\n",
    "print(f\"final bankroll: ${br:,.2f}  ({br / BANKROLL0 - 1:+.1%} from ${BANKROLL0:,.0f})\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "f77b04dd",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.318705Z",
     "iopub.status.busy": "2026-06-06T15:52:54.318705Z",
     "iopub.status.idle": "2026-06-06T15:52:54.356787Z",
     "shell.execute_reply": "2026-06-06T15:52:54.356787Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "wrote 365 bets -> strategy_bets.csv\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ts</th>\n",
       "      <th>game_date</th>\n",
       "      <th>league</th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>side</th>\n",
       "      <th>ftr</th>\n",
       "      <th>won</th>\n",
       "      <th>clv</th>\n",
       "      <th>p_win</th>\n",
       "      <th>ask</th>\n",
       "      <th>odds</th>\n",
       "      <th>kelly_frac</th>\n",
       "      <th>stake</th>\n",
       "      <th>net</th>\n",
       "      <th>bankroll</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2026-04-22 00:01:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>E0</td>\n",
       "      <td>Burnley</td>\n",
       "      <td>Manchester City</td>\n",
       "      <td>home</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>6.3</td>\n",
       "      <td>0.0587</td>\n",
       "      <td>0.06</td>\n",
       "      <td>16.667</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1000.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2026-04-22 00:01:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>E1</td>\n",
       "      <td>Birmingham</td>\n",
       "      <td>Preston</td>\n",
       "      <td>away</td>\n",
       "      <td>H</td>\n",
       "      <td>0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>0.1846</td>\n",
       "      <td>0.18</td>\n",
       "      <td>5.556</td>\n",
       "      <td>0.0014</td>\n",
       "      <td>1.41</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>998.59</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2026-04-22 00:01:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>MLS</td>\n",
       "      <td>San Jose</td>\n",
       "      <td>Austin</td>\n",
       "      <td>away</td>\n",
       "      <td>H</td>\n",
       "      <td>0</td>\n",
       "      <td>6.5</td>\n",
       "      <td>0.1550</td>\n",
       "      <td>0.15</td>\n",
       "      <td>6.667</td>\n",
       "      <td>0.0015</td>\n",
       "      <td>1.48</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>997.11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2026-04-22 00:01:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>MLS</td>\n",
       "      <td>Los Angeles F</td>\n",
       "      <td>Colorado</td>\n",
       "      <td>away</td>\n",
       "      <td>D</td>\n",
       "      <td>0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.1505</td>\n",
       "      <td>0.15</td>\n",
       "      <td>6.667</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>1.00</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>996.11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2026-04-22 02:02:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>SP1</td>\n",
       "      <td>Barcelona</td>\n",
       "      <td>Celta Vigo</td>\n",
       "      <td>away</td>\n",
       "      <td>H</td>\n",
       "      <td>0</td>\n",
       "      <td>11.7</td>\n",
       "      <td>0.1019</td>\n",
       "      <td>0.10</td>\n",
       "      <td>10.000</td>\n",
       "      <td>0.0005</td>\n",
       "      <td>1.00</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>995.11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2026-04-22 02:02:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>E1</td>\n",
       "      <td>Charlton</td>\n",
       "      <td>Ipswich</td>\n",
       "      <td>home</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>6.2</td>\n",
       "      <td>0.1865</td>\n",
       "      <td>0.18</td>\n",
       "      <td>5.556</td>\n",
       "      <td>0.0020</td>\n",
       "      <td>1.97</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>993.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2026-04-22 04:03:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>G1</td>\n",
       "      <td>Panserraikos</td>\n",
       "      <td>Atromitos Athinon</td>\n",
       "      <td>home</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>5.5</td>\n",
       "      <td>0.3649</td>\n",
       "      <td>0.35</td>\n",
       "      <td>2.857</td>\n",
       "      <td>0.0057</td>\n",
       "      <td>5.70</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>987.44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2026-04-22 06:04:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>E1</td>\n",
       "      <td>Middlesbrough</td>\n",
       "      <td>Sheffield Wednesday</td>\n",
       "      <td>away</td>\n",
       "      <td>H</td>\n",
       "      <td>0</td>\n",
       "      <td>5.7</td>\n",
       "      <td>0.0583</td>\n",
       "      <td>0.06</td>\n",
       "      <td>16.667</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>987.44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2026-04-22 06:04:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>MLS</td>\n",
       "      <td>Atlanta</td>\n",
       "      <td>New England</td>\n",
       "      <td>home</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>0.4695</td>\n",
       "      <td>0.45</td>\n",
       "      <td>2.222</td>\n",
       "      <td>0.0089</td>\n",
       "      <td>8.74</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>978.70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2026-04-22 09:05:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>MLS</td>\n",
       "      <td>Toronto</td>\n",
       "      <td>Philadelphia</td>\n",
       "      <td>away</td>\n",
       "      <td>D</td>\n",
       "      <td>0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>0.3430</td>\n",
       "      <td>0.33</td>\n",
       "      <td>3.030</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>4.73</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>973.97</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   ts   game_date league           home                 away  \\\n",
       "0 2026-04-22 00:01:00  2026-04-22     E0        Burnley      Manchester City   \n",
       "1 2026-04-22 00:01:00  2026-04-22     E1     Birmingham              Preston   \n",
       "2 2026-04-22 00:01:00  2026-04-22    MLS       San Jose               Austin   \n",
       "3 2026-04-22 00:01:00  2026-04-22    MLS  Los Angeles F             Colorado   \n",
       "4 2026-04-22 02:02:00  2026-04-22    SP1      Barcelona           Celta Vigo   \n",
       "5 2026-04-22 02:02:00  2026-04-22     E1       Charlton              Ipswich   \n",
       "6 2026-04-22 04:03:00  2026-04-22     G1   Panserraikos    Atromitos Athinon   \n",
       "7 2026-04-22 06:04:00  2026-04-22     E1  Middlesbrough  Sheffield Wednesday   \n",
       "8 2026-04-22 06:04:00  2026-04-22    MLS        Atlanta          New England   \n",
       "9 2026-04-22 09:05:00  2026-04-22    MLS        Toronto         Philadelphia   \n",
       "\n",
       "   side ftr  won   clv   p_win   ask    odds  kelly_frac  stake  net  bankroll  \n",
       "0  home   A    0   6.3  0.0587  0.06  16.667      0.0000   0.00 -1.0   1000.00  \n",
       "1  away   H    0   5.2  0.1846  0.18   5.556      0.0014   1.41 -1.0    998.59  \n",
       "2  away   H    0   6.5  0.1550  0.15   6.667      0.0015   1.48 -1.0    997.11  \n",
       "3  away   D    0   7.0  0.1505  0.15   6.667      0.0001   1.00 -1.0    996.11  \n",
       "4  away   H    0  11.7  0.1019  0.10  10.000      0.0005   1.00 -1.0    995.11  \n",
       "5  home   A    0   6.2  0.1865  0.18   5.556      0.0020   1.97 -1.0    993.14  \n",
       "6  home   A    0   5.5  0.3649  0.35   2.857      0.0057   5.70 -1.0    987.44  \n",
       "7  away   H    0   5.7  0.0583  0.06  16.667      0.0000   0.00 -1.0    987.44  \n",
       "8  home   A    0   5.2  0.4695  0.45   2.222      0.0089   8.74 -1.0    978.70  \n",
       "9  away   D    0   5.2  0.3430  0.33   3.030      0.0048   4.73 -1.0    973.97  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ---- write the full bet-by-bet log to CSV ----\n",
    "cols = ['ts', 'game_date', 'league', 'home', 'away', 'side', 'ftr', 'won',\n",
    "        'clv', 'p_win', 'ask', 'odds', 'kelly_frac', 'stake', 'net', 'bankroll']\n",
    "bets = sig[cols].copy()\n",
    "bets['clv']   = (bets['clv'] * 100).round(1)     # CLV as a percentage\n",
    "bets['p_win'] = bets['p_win'].round(4)\n",
    "bets['odds']  = bets['odds'].round(3)\n",
    "bets.to_csv(CSV_OUT, index=False)\n",
    "print(f\"wrote {len(bets)} bets -> {CSV_OUT}\")\n",
    "bets.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "98c30faa",
   "metadata": {},
   "source": [
    "## Results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "123f60e7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.359716Z",
     "iopub.status.busy": "2026-06-06T15:52:54.359716Z",
     "iopub.status.idle": "2026-06-06T15:52:54.369482Z",
     "shell.execute_reply": "2026-06-06T15:52:54.368506Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "=== Strategy Summary ===\n",
      "Book / band:    kalshi  CLV [5%, 12%)\n",
      "Bets:           365\n",
      "Win rate:       26.3%\n",
      "Flat 1u P&L:    +67.8 units   (+18.6% ROI/bet)\n",
      "Final bankroll: $1,389.13   (+38.9%)\n",
      "Avg ROI/bet:    +18.58% flat   |   +0.0901% compounded (per-bet growth rate)\n",
      "\n",
      "bets per league:\n",
      "league\n",
      "MLS    45\n",
      "SP2    34\n",
      "P1     27\n",
      "SP1    23\n",
      "E0     23\n",
      "G1     22\n",
      "I1     22\n",
      "E2     20\n",
      "E1     20\n",
      "N1     18\n",
      "F1     17\n",
      "D2     16\n",
      "D1     13\n",
      "NO1    12\n",
      "B1     11\n",
      "SC0    11\n",
      "SE1    11\n",
      "T1     10\n",
      "I2      9\n",
      "AR1     1\n"
     ]
    }
   ],
   "source": [
    "print('=== Strategy Summary ===')\n",
    "print(f'Book / band:    {BOOK}  CLV [{EDGE_LO:.0%}, {EDGE_HI:.0%})')\n",
    "print(f'Bets:           {len(sig)}')\n",
    "print(f'Win rate:       {sig.won.mean():.1%}')\n",
    "print(f'Flat 1u P&L:    {sig.net.sum():+.1f} units   ({sig.net.mean():+.1%} ROI/bet)')\n",
    "print(f'Final bankroll: ${sig.bankroll.iloc[-1]:,.2f}   ({sig.bankroll.iloc[-1] / BANKROLL0 - 1:+.1%})')\n",
    "# avg ROI/bet: flat mean is order-free; growth rate is the count-independent compounded version\n",
    "growth = (sig.bankroll.iloc[-1] / BANKROLL0) ** (1 / len(sig)) - 1\n",
    "print(f'Avg ROI/bet:    {sig.net.mean():+.2%} flat   |   {growth:+.4%} compounded (per-bet growth rate)')\n",
    "print()\n",
    "print('bets per league:')\n",
    "print(sig.groupby('league').size().sort_values(ascending=False).to_string())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4c2466d0",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.372411Z",
     "iopub.status.busy": "2026-06-06T15:52:54.372411Z",
     "iopub.status.idle": "2026-06-06T15:52:54.381201Z",
     "shell.execute_reply": "2026-06-06T15:52:54.381201Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "mean net/bet: +0.1858   95% CI [-0.043, +0.414]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "z = +1.59   one-sided p = 0.0557   ->  not significant at 5%\n",
      "\n",
      "Note: returns are skewed (mostly -1, rare big longshot wins), so treat z/p as rough; the CI and bet count are the honest read.\n"
     ]
    }
   ],
   "source": [
    "# ---- significance on NET returns (H0: mean = 0 = breakeven), one-sided ----\n",
    "net = sig['net']\n",
    "z = net.mean() / (net.std(ddof=1) / np.sqrt(len(net)))\n",
    "p = 1 - stats.norm.cdf(z)\n",
    "lo, hi = net.mean() - 1.96 * stats.sem(net), net.mean() + 1.96 * stats.sem(net)\n",
    "print(f'mean net/bet: {net.mean():+.4f}   95% CI [{lo:+.3f}, {hi:+.3f}]')\n",
    "print(f'z = {z:+.2f}   one-sided p = {p:.4f}   ->  {\"SIGNIFICANT\" if p < 0.05 else \"not significant\"} at 5%')\n",
    "print()\n",
    "print('Note: returns are skewed (mostly -1, rare big longshot wins), so treat z/p as rough; '\n",
    "      'the CI and bet count are the honest read.')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "8feaafc7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:54.386083Z",
     "iopub.status.busy": "2026-06-06T15:52:54.385106Z",
     "iopub.status.idle": "2026-06-06T15:52:55.280480Z",
     "shell.execute_reply": "2026-06-06T15:52:55.279497Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "plotly not installed -> chart saved to strategy_equity.png\n"
     ]
    },
    {
     "data": {
      "image/png": "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IvD398e8efMQGRkJDw8P9O7dW71ykMqhQ4fQr18/BAQEYNWqVQxAiMikOBKEiIiIiIiIiCwCa4IQERERERERkUVgCEJEREREREREFoE1QXSkVCrx+PFj5M+fHwqFwtTdISIiIiIiIqK3JEnCq1ev4OfnByurjMd7MATR0ePHj+Hv72/qbhARERERERFRBh48eIDChQtneJwhiI7y588PQLyhLi4uJu6NbpRKJcLDw+Hl5ZVpEkZ5C++75eE9t0y875aH99wy8b5bJt53y8N7nnMxMTHw9/dXf3bPCEMQHammwLi4uJhVCJKQkAAXFxf+IlkQ3nfLw3tumXjfLQ/vuWXifbdMvO+Wh/dcf95VvoLvLhERERERERFZBIYgRERERERERGQRGIIQERERERERkUVgTRA9SklJQVJSkqm7oaZUKpGUlISEhATOKzMxW1tbWFtbm7obREREREREFo0hiB5IkoSnT58iKirK1F3RIkkSlEolXr169c7iMGR4bm5u8PX15b0gIiIiIiIyEYYgeqAKQLy9veHo6JhrPuRKkoTk5GTY2Njkmj5ZIkmS8Pr1azx//hwAULBgQRP3iIiIiIiIyDIxBMmhlJQUdQDi6elp6u5oYQiSe+TLlw8A8Pz5c3h7e3NqDBERERERkQmwUEQOqWqAODo6mrgnlNupfkZyU90YIiIiIiIiS8IQRE840oLehT8jREREREREpsUQhIiIiIiIiIgsAkMQC9awYUOMHDky248/ePAgFAqFTqvi6HLupEmTUKVKlWz3R1/u3r0LhUKBsLAwU3eFiIiIiIiI9IghCOUaY8eOxb59+0zdDfj7++PJkyeoUKECgKyFPURERERERJR7cXUYyjWcnZ3h7Oxs6m7A2toavr6+pu4GERERERER6RlHgpDajh074OrqijVr1gAAfvvtN1SrVg358+eHr68vevTogefPn2f4+Hv37iE4OBju7u5wcnJC+fLlsXPnTq1zzpw5g2rVqsHR0RHvv/8+rl27pj6my3SYS5cuoWXLlnB2doaPjw969eqFiIgI9fG4uDj07t0bzs7OKFiwIH788cc0034UCgU2b96sdV03Nzf8+uuvALSnw9y9exeNGjUCALi7u0OhUKBv375YvXo1PD098ebNG63rtGvXDr169cr0NRAREREREZFpMAQhAEBISAi6d++ONWvWoGfP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9uwZfH191ef8+++/Wo9TrR6jOic948ePx+jRo9XbMTEx8Pf3h5eXF1xcXPT4KgxHqVRCoVDAy8uLv0gWhPfd8vCeWyZT3HfFnTta21bx8SjQuTOQT45GXDp0gIu3t1H6Y2n4u26ZeN8tE++75eE9zzkHzVplmTDrEKRq1aqwtbXFvn370LFjRwDAtWvXcP/+fdSuXRsAULt2bUyZMgXPnz+H99v/Kdu7dy9cXFxQrly5DK9tb28Pe3v7NPutrKzM6odSoVCYXZ8p53jfLQ/vuWUy6n1PSQGuXRPtYsWA/PmB8+ehUC2LCwAVKsDKz8/wfbFg/F23TLzvlon33fLwnueMru+bSUOQ2NhY3Lx5U719584dhIWFwcPDAwEBAYiMjMT9+/fx+PFjACLgAMQIDl9fX7i6umLAgAEYPXo0PDw84OLiguHDh6N27dqoVasWAKBZs2YoV64cevXqhRkzZuDp06f43//+h6FDh6YbchAREVE67t4VBVABoHJlYPFiYPBgYMsW+RwujUtERES5nEkjptOnTyMoKAhBQUEAgNGjRyMoKAhff/01AGDr1q0ICgpC69atAQDdunVDUFAQFi9erL7GTz/9hDZt2qBjx46oX78+fH19sXHjRvVxa2trbN++HdbW1qhduzY++ugj9O7dG99++60RXykREZGZu3pVbpctC3h7A5s2ASEhou3mJkIRIiIiolzMpCNBGjZsKCrIZ6Bv377o27dvptdwcHDAwoULsXDhwgzPCQwMxM6dO7PbTSIiIkodggCAQgF07w506QIkJwMcYUlERES5nFnXBCEiIiIjSS8EUbG2Fl9EREREuRwrrhAREdG7aYYgZcqYrh9EREREOcAQhIiIiDInSXIIEhAAODmZtj9ERERE2cQQhIiIiDL39CkQHS3aqafCEBEREZkRhiBERESUuczqgRARERGZEYYgRERElDmGIERERJRHMAQhIiKizF25IrcZghAREZEZYwhCREREmeNIECIiIsojGIIQERHlRps2AT16AHPnArdvm64fSUnAmTOi7e0NFChgur4QERER5RBDECIiotwmMRHo1QtYuxYYORIoXhyoVw+4d8/4fTlyBIiJEe2mTY3//ERERER6xBCEiIgot7l5E4iL09535AhQvTpw+LBx+7J9u9xu08a4z01ERESkZwxBiIiIcptr1+R2/fpA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IiKrYVfxLkQlFEUOU+nUCbh5E9i8WeYK+eYbWe7lJaeCdXSUvThefBH4+GM5DAYArl2TvUaKiuT6pk0yyenf/gY88gjw/ffm37dvX/MBlYasbVv5Q0RERERERHWGPUGoavz8gBUrAJuSj87q1UB+vlyeONE0v0XLlnIIzdq18icmRg6hWbYM8PeX+xQWyvwhxtPEvv66fB+9xjQUhoiIiIiIiCyGQRCqukcflcEPm1Ifn8oM7fDwAKZNk8NgXntNPUZ2tvy3WTO5fcMGQKsFfH2ZN4OIiIiIiIhqBIMgVD3R0cCqVWoQIzISuP/+yr/exQVYvBj46SfTXh+vvSanje3XT+YWuXoVCAio2boTERERERGRVWJOEKq+J5+UM77s3g08/3z1jjFgAHDiBLBoEeDjAzz9tFqmn0GFiIiIiIiIqAYwCEL35qGH5M+9CAgwnWGGiIiIiIiIqBZwOAwRERERERERWQUGQYiIiIiIiIjIKjAIQkRERERERERWgUEQIiIiIiIiIrIKDIIQERERERERkVVgEISIiIiIiIiIrAKDIERERERERERkFRgEISIiIiIiIiKrwCAIEREREREREVkFBkGIiIiIiIiIyCowCEJEREREREREVoFBECIiIiIiIiKyCgyCEBEREREREZFVYBCEiIiIiIiIiKwCgyBEREREREREZBXsLF2BhkIIAQBIT0+3cE0qr7i4GBkZGXB0dISNDeNd1oLtbn3Y5taJ7W592ObWie1undju1odtfu/039X1393LwyBIJWVkZAAAmjVrZuGaEBEREREREZE5GRkZcHd3L7dcERWFSQiAjMxdu3YNrq6uUBTF0tWplPT0dDRr1gxXrlyBm5ubpatDdYTtbn3Y5taJ7W592ObWie1undju1odtfu+EEMjIyEBgYOBde9OwJ0gl2djYoGnTppauRrW4ubnxRrJCbHfrwza3Tmx368M2t05sd+vEdrc+bPN7c7ceIHocbEREREREREREVoFBECIiIiIiIiKyCgyCNGIODg5YsGABHBwcLF0VqkNsd+vDNrdObHfrwza3Tmx368R2tz5s87rDxKhEREREREREZBXYE4SIiIiIiIiIrAKDIERERERERERkFRgEISIiIiIiIiKrwCBII7Z06VK0aNECjo6OCA0NxZEjRyxdJaohCxcuhKIoJj/t2rUzlOfm5mLG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",
      "text/plain": [
       "<Figure size 1100x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Equity curve. Uses plotly if installed (interactive html), else falls back to matplotlib.\n",
    "title = f'Compounded bankroll -- {BOOK} CLV [{EDGE_LO:.0%}, {EDGE_HI:.0%}) strategy'\n",
    "try:\n",
    "    import plotly.graph_objects as go\n",
    "    fig = go.Figure()\n",
    "    fig.add_trace(go.Scatter(y=sig['bankroll'], mode='lines', name=f'{BOOK} equity',\n",
    "                             line=dict(color='red', width=2)))\n",
    "    fig.add_hline(y=BANKROLL0, line_dash='dash', line_color='gray')\n",
    "    fig.update_layout(title=title, xaxis_title='Bet #', yaxis_title='Bankroll ($)',\n",
    "                      hovermode='x unified')\n",
    "    fig.write_html('strategy_equity.html')\n",
    "    print('chart -> strategy_equity.html')\n",
    "    fig.show()\n",
    "except ModuleNotFoundError:\n",
    "    import matplotlib.pyplot as plt\n",
    "    fig, ax = plt.subplots(figsize=(11, 5))\n",
    "    ax.plot(sig['bankroll'].values, color='red', lw=2, label=f'{BOOK} equity')\n",
    "    ax.axhline(BANKROLL0, color='gray', ls='--', lw=1)\n",
    "    ax.set_xlabel('Bet #'); ax.set_ylabel('Bankroll ($)'); ax.set_title(title)\n",
    "    ax.legend(); ax.grid(alpha=0.3); fig.tight_layout()\n",
    "    fig.savefig('E:/soccer/research/strategy_equity.png', dpi=120)\n",
    "    print('plotly not installed -> chart saved to strategy_equity.png')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb57f793",
   "metadata": {},
   "source": [
    "## Rolling-ROI league gate (window-10, warmup-8, skip)\n",
    "\n",
    "A point-in-time experiment layered on top of the baseline bets above. Walk the signals in time\n",
    "order keeping a per-league rolling history of **flat net outcomes**. For each new signal:\n",
    "\n",
    "- **SKIP** (don't bet) until the league has `WARMUP` prior signals -- too little data to judge.\n",
    "- After warmup, look at the league's last `WINDOW` outcomes. If the rolling mean net is\n",
    "  `>= GATE_THRESH` (>=0 = not losing) **BET**; otherwise **BENCH** until it recovers.\n",
    "\n",
    "Every signal's outcome is recorded in the league history *regardless of the decision*, so the gate\n",
    "always sees the full picture and a benched league can re-enter once it turns positive.\n",
    "\n",
    "Audited 2026-06-02: this lifts per-bet growth (~+20%) but is a **wash on terminal wealth** -- the\n",
    "~20% fewer bets cancel the higher per-bet ROI -- and it's badly underpowered at ~15 bets/league.\n",
    "It's here to play with, not (yet) something to wire into the live leg."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "5a1d7ddf",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:55.283400Z",
     "iopub.status.busy": "2026-06-06T15:52:55.283400Z",
     "iopub.status.idle": "2026-06-06T15:52:55.318555Z",
     "shell.execute_reply": "2026-06-06T15:52:55.317578Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "decision\n",
      "SKIP     153\n",
      "BET      139\n",
      "BENCH     73\n"
     ]
    }
   ],
   "source": [
    "# ---- rolling-ROI gate knobs ----\n",
    "WINDOW      = 10     # rolling window of a league's most recent outcomes\n",
    "WARMUP      = 8      # skip a league's first WARMUP signals (noise guard, not a bet)\n",
    "GATE_THRESH = 0.0    # bet only when the rolling mean net >= this (0 = \"not losing\")\n",
    "\n",
    "from collections import deque, defaultdict\n",
    "hist = defaultdict(lambda: deque(maxlen=WINDOW))      # per-league recent net outcomes\n",
    "decisions = []\n",
    "for _, r in sig.iterrows():                            # sig is already time-sorted\n",
    "    h = hist[r['league']]\n",
    "    if len(h) < WARMUP:\n",
    "        decisions.append('SKIP')                       # still learning this league\n",
    "    elif (sum(h) / len(h)) >= GATE_THRESH:\n",
    "        decisions.append('BET')                        # league rolling net is healthy\n",
    "    else:\n",
    "        decisions.append('BENCH')                      # league rolling net is negative\n",
    "    h.append(r['net'])                                 # record outcome AFTER deciding (point-in-time)\n",
    "sig['decision'] = decisions\n",
    "print(sig['decision'].value_counts().to_string())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "d088a28d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:55.321485Z",
     "iopub.status.busy": "2026-06-06T15:52:55.320509Z",
     "iopub.status.idle": "2026-06-06T15:52:55.362501Z",
     "shell.execute_reply": "2026-06-06T15:52:55.361521Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "baseline (no gate):        365 bets, final $1,389.13  (+38.9%)\n",
      "gated (win10/warm8, skip): 139 bets, final $1,178.30  (+17.8%)\n",
      "gated win rate 27.3% | gated flat ROI +37.6%\n",
      "avg ROI/bet (growth rate):  baseline +0.0901%   gated +0.1181%\n",
      "  (153 skipped, 73 benched)\n"
     ]
    }
   ],
   "source": [
    "# ---- re-run fractional-Kelly compounding, but only actually stake the BET rows ----\n",
    "brg = BANKROLL0\n",
    "g_stakes, g_equity = [], []\n",
    "for _, r in sig.iterrows():\n",
    "    if r['decision'] == 'BET':\n",
    "        frac  = kelly_fraction(r.p_win, r.odds)\n",
    "        stake = round(frac * brg, 2)\n",
    "        if stake > 0:\n",
    "            stake = max(stake, MIN_STAKE)              # $1 floor\n",
    "        brg += stake * (r.odds - 1) if r.won else -stake\n",
    "    else:\n",
    "        stake = 0.0                                    # SKIP / BENCH -> no money down\n",
    "    g_stakes.append(stake); g_equity.append(round(brg, 2))\n",
    "sig['stake_gated']    = g_stakes\n",
    "sig['bankroll_gated'] = g_equity\n",
    "\n",
    "bet = sig[sig['decision'] == 'BET']\n",
    "base_final = sig['bankroll'].iloc[-1]\n",
    "print(f\"baseline (no gate):        {len(sig):>3} bets, final ${base_final:,.2f}  ({base_final/BANKROLL0-1:+.1%})\")\n",
    "print(f\"gated (win{WINDOW}/warm{WARMUP}, skip): {len(bet):>3} bets, final ${brg:,.2f}  ({brg/BANKROLL0-1:+.1%})\")\n",
    "if len(bet):\n",
    "    print(f\"gated win rate {bet['won'].mean():.1%} | gated flat ROI {bet['net'].mean():+.1%}\")\n",
    "# per-bet growth rate = count-independent avg ROI/bet -> the fair baseline-vs-gated comparison\n",
    "g_base = (base_final / BANKROLL0) ** (1 / len(sig)) - 1\n",
    "g_gate = (brg / BANKROLL0) ** (1 / len(bet)) - 1 if len(bet) else float(\"nan\")\n",
    "print(f\"avg ROI/bet (growth rate):  baseline {g_base:+.4%}   gated {g_gate:+.4%}\")\n",
    "print(f\"  ({(sig['decision']=='SKIP').sum()} skipped, {(sig['decision']=='BENCH').sum()} benched)\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "ea5be4f2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:55.366405Z",
     "iopub.status.busy": "2026-06-06T15:52:55.365429Z",
     "iopub.status.idle": "2026-06-06T15:52:55.930398Z",
     "shell.execute_reply": "2026-06-06T15:52:55.930398Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "plotly not installed -> chart saved to strategy_gate_equity.png\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEEAAAHqCAYAAADrglBeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8g+/7EAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3gUVdsG8HvTe++QQggEEloISA1FApHeuxRpFhAFBMsnChYEpcgLAiKIgkgVkCYQeigivUsn1PTey57vj3WH3ewmpG/K/bsuLmbOzM6cmdns7jxzznNkQggBIiIiIiIiIqIqTk/XFSAiIiIiIiIiKg8MghARERERERFRtcAgCBERERERERFVCwyCEBEREREREVG1wCAIEREREREREVULDIIQERERERERUbXAIAgRERERERERVQsMghARERERERFRtcAgCBERERERERFVCwyCEFG1J5PJMGvWrFLb3tGjRyGTyXD06NEC15s1axZkMhliYmJKbd+F9csvv0Amk+HcuXNlvi8vLy+MHj1amq9o58fLyws9evQo031UJsrrs3XrVl1XRSvl+0JV3vcYvdChQwd06NBBmn/48CFkMhl++eUXqUzbOaXKoVu3bhg/fnyJtzN69Gh4eXmVvEJUoRT2u74knwErVqyAh4cHMjMzi/V6Il1gEISoErp37x7efPNNeHt7w8TEBFZWVmjTpg0WL16M9PR0XVePqFpLS0vDrFmzXhrkyU9CQgL09PSwf/9+AMD27dthbGzMH5hUZclkMrV/VlZWaN++Pfbs2ZPva65fv47XX38dNWrUgLGxMdzc3DB8+HBcv35dY93yDPrm9fvvv+P7778vk22fPHkSBw4cwIcfflgm2y+s58+f46OPPkLHjh1haWn50iD3qVOn0LZtW5iZmcHFxQWTJ09GSkqK1nXlcjkcHR3x7bffllHty09iYiJmzJiBOnXqwNTUFJ6enhg7diwePXqk66qVyOjRo5GVlYUff/xR11UhKjQGQYgqmT179qBhw4bYvHkzevbsiSVLluCbb76Bh4cHpk+fjvfee0/XVSSq1tLS0jB79uxiB0H++ecfAECLFi0AAKdPn0ZAQACMjY1Lq4pVzq1bt/DTTz/puhqV1qeffqrzAHrnzp2xbt06rF27FjNmzMDdu3fRs2dPKRioatu2bWjatCkOHTqEN954A8uW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YtmyZWLcuHECgJgxY4baa19//XUBQAwbNkwsXbpU9OvXTzRq1EhjmxEREaJmzZrC3d1dfPHFF2L58uWiV69eAoBYtGiRtF5aWpqoW7euMDExETNmzBDff/+9CAwMlLZ55MiRAq+Psu4NGzYUPXv2FEuXLpXqOGLECLV1mzdvLkaPHi0WLVoklixZIrp06SIAiKVLl2q9ls7OzuKTTz4RS5cuFU2bNhUymUxcu3ZNWm/NmjUCgDh79qwQQojo6GjRpEkT4eHhIe7evSutN2rUKGFsbCxq164tRo0aJVasWCHWrl1b6GuprNOoUaOk+SNHjpTq+fnpp58EAHH16lW11//zzz8CgFi7dm2B+/H09BR169YVNjY24qOPPhILFy4UDRs2FHp6euLAgQPSeqmpqaJRo0bC3t5efPLJJ2LFihVi5MiRQiaTiffee08IIURKSopYvny5ACD69u0r1q1bJ9atWycuX75cYB3at28vALz0X/v27QvcTmlQXp+GDRuKRo0aiYULF4qPPvpImJiYiLp164q0tDRp3XfffVd069ZNzJkzR/z4449i7NixQl9fXwwYMEBtm61btxbW1tbi008/FatWrRJz5swRHTt2FMeOHZPWWbt2rZDJZOK1114TS5YsEfPmzRNeXl7CxsZGPHjwQFpP+b5Qlfc9pnx/BwQEiFdffVUsWbJETJs2Tejr64tBgwapvbaw+9XG29tbdOvWTaP8jTfeELa2tiIrK0sIIcSwYcOEkZGRmDp1qli1apWYN2+e6Nmzp/jtt98K3L7yWP38/ETv3r3FsmXLxA8//CCEKPzne/v27dXeN9o+X7WdUwCicePGwtXVVXz55Zfi+++/F97e3sLMzEzExMRI6124cEEYGxsLLy8vMXfuXPH1118LNzc30bhxY41t5geAmDhxolpZQkKC0NfXFy1atFArd3NzE15eXgVuz8vLS9SsWVOaz/t5l58nT54IOzs7YW9vL2bPni3mz58v6tWrJx2L6vuhT58+YtCgQeK7774Ty5cvFwMHDhQAxAcffCCtc+DAAdGkSRPh4OAgfRZs375dCCFEbm6u6NKlizAzMxPvv/+++PHHH8WkSZOEgYGB6N27d4H1FEKIcePGCXt7e43yRo0aif79+0vz27dvF3p6egKA2neAv7+/2t/pqFGjhKenpzSvfJ8EBAQIHx8fMW/e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ja1bt5bbExWi/CxevBhTpkzBw4cPtY5sQUTlo0+fPrh+/brWnAKVzfvvv48ff/wRKSkphc4zVB7CwsLQoUMH/Pvvv1pH8aisunXrBgsLC42uI9XFjBkzsGHDBty9e1frcMLlRSaTYeLEiS9tDZeZmQkvLy989NFHeO+998qpdkQlw5wgRERUJQghsHr1arRv354BEKJylJ6erjZ/584d7N27t8QjEOlC3mOJjY3FunXr0LZt2woVAAEU3UK6dOmCb7/9VtdVKVUdOnTAlClTdF0NnTly5Ahmzpyp0wBIUaxZswaGhoZ46623dF0VokJjThAiIqrUUlNTsXPnThw5cgRXr15VS6JIRGXP29sbo0ePhre3N8LDw7F8+XIYGRnlO5x0RdaqVSt06NAB9evXR2RkJFavXo2kpCTMnDlT11XTKm8C2qqgMr5vStPZs2d1XYUieeuttxgAoUqHQRAiIqrUoqOjMWzYMNjY2OCTTz5Br169dF0lomrltddew4YNGxAREQFjY2O0atUKc+bMqZRdNLp164atW7di5cqVkMlkaNq0KVavXq024g8REVVuzAlCRERERERERNUCc4IQERERERERUbXAIAgRERERERERVQvMCVJIcrkcz549g6WlJWQyma6rQ0RERERERET/EUIgOTkZbm5u0NPLv70HgyCF9OzZM7i7u+u6GkRERERERESUj8ePH6NmzZr5LmcQpJAsLS0BKE6olZWVjmtTOHK5HNHR0XB0dCwwEkZVC6979cNrXj3xulc/vObVE6979cTrXv3wmpdcUlIS3N3dpXv3/DAIUkjKLjBWVlaVKgiSkZEBKysr/iFVI7zu1Q+vefXE61798JpXT7zu1ROve/XDa156Xpa+gmeXiIiIiIiIiKoFBkGIiIiIiIiIqFpgEISIiIiIiIiIqgXmBClFubm5yM7O1nU1JHK5HNnZ2cjIyGC/smpE23U3NDSEvr6+jmtGRERERESkWwyClAIhBCIiIpCQkKDrqqgRQkAulyM5OfmlyWGo6sjvutvY2MDFxYXvBSIiIiIiqrYYBCkFygCIk5MTzMzMKsxNphACOTk5MDAwqDB1orKX97oLIZCWloaoqCgAgKurq45rSEREREREpBsMgpRQbm6uFACxt7fXdXXUMAhSPWm77qampgCAqKgoODk5sWsMERERERFVS0wUUULK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hMmTJ2PYsGGoV68eAgMDdV2tMsEgCBERERERVUiqQRDVJ9TlSdnNBQDOnz+PX375Bbt370ZKSgpSU1MBKFqBKIMUZcHa2hq+vr4AgJSUFPz777/Izs6WusaUZoCobt26sLCwAADcu3cP586dA1A184EoDRgwAB07dsTgwYPL9DpWBnp6eqhTpw4GDx5cZROkMghCREREREQVkjIIYm5uXmotHYqqUaNGqFOnjtrN8cWLF9WGEy2trjAFeeWVV6Tpf/75p9TzgSgZGRmhV69e0vyBAwcQHR2tFgSpSi1BAMDe3h7t2rWrcsdF2jEIQkREREREFU5OTg6Sk5MB6LblgampKYYNG4YPPvgAAQEBABRdYw4fPiytUx5BEC8vL2nUkkePHuHGjRvSstLOl1KnTh00b94cgOI6bNu2DdHR0dJyBguoMmMQhIiIiIiIKpzExERpWhdJUfMyMzNDUFCQNK8M0ADlEwSRyWRqrUGOHTsmTZdFkKhz585S0CUiIgJXr14t0/0RlRcGQYiIiIiIqMLR9cgw2tja2qJWrVpqZfr6+lKwoKw1adJEStSat16lzdDQEP3799fohmRqaqo2dC9RZcMgCBERERERVTiqOS8qShAEAJo2bao27+zsXG7DiBoaGmLEiBEaQZeyapnh4uKC3r17q5WxKwxVdgyCEBERERFRhVMRW4IAQL169WBqairNa2uZUZbMzc0xcuRI2NvbA1Ccm7IYnlfJ398f7dq1k+YdHR3LbF9E5cFA1xUgIiIiIiLKq6LlBFEyMDBAo0aNcObMGQDlkw8kL0tLS4wdOxbXr19HrVq1ynxY1w4dOkAmk+Hp06do27Ztme6LqKwxCEJERERERBWOancYa2trHdZEU5s2bXD//n3IZDI0bNhQJ3UwNTVFs2bNymVfMpkMHTp0KJd9EZU1BkGIiIiIiKjCUXaHsbS0hIFBxbptsbS0xDvvvKPrahBRMTAnCBERERERVSjZ2dlITU0FULG6whBR5ccgCBERERERVSgVNSkqEVV+FatdGRERERERVVu5ublIS0tjEISIygyDIEREREREpHNCCPz888949uwZDA0NpXIGQYioNLE7DBERERER6VxcXByePXsGQJETRIlBECIqTQyCEBERERGRziUmJmqUGRkZwdXVVQe1IaKqit1hiIiIiIhI51TzgHTq1AkuLi6w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jo6O/EOqRnjdqx9e8+qJ17364TWvnrRdd9UHct7e3swLUgXx77364TUvORMTk0KtV+GDIObm5vDx8YGPjw9atmyJOnXqYPXq1fj444/h4uKiEfnOyclBXFwcXFxcAAAuLi6IjIxUW0c5r1xHG2NjYxgbG2uU6+npVao3pUwmq3R1ppLjda9+eM2rJ1736ofXvHrKe93j4+Olco4OU3Xx77364TUvmcKet0p3duVyuZSro1WrVkhISMD58+el5YcPH4ZcLkeLFi2kdY4fPy5l0AaA0NBQ+Pr6MpEUEREREVUqqsPj2tjYQF9fX8c1IiKqXHQaBElJScGlS5dw6dIlAMCDBw9w6dIlPHr0CKmpqfjkk0/w999/Izw8HOfPn8eYMWPw9OlTDBw4EABQv359vPbaaxg/fjz++ecfnDx5EpMmTcKQIUPg5uYGQDHCjJGREcaOHYvr169j06ZNWLx4sVpXFyIiIiKiyiAtLQ1ZWVkAODwuEVFx6LQ7zLlz59CxY0dpXhmYGDVqFFasWIF///0Xv/76K2JiYmBvb4/mzZsjLCwM/v7+0mvWr1+PSZMmoVOnTtDT00P//v3xv//9T1pubW2NAwcOYOLEiQgMDISDgwM+++wzDo9LRERERJWO6sgwDIIQERWdToMgHTp0gBAi3+Xbtm176Tbs7Ozw+++/F7hOo0aNEBYWVuT6ERERERFVJMquMACDIERExVHpcoIQEREREVVXDIIQEZUMgyBERERERJWEcmQYgEEQIqLiYBCEiIiIiKiSULYEkclksLGx0W1liIgqIQZBiIiIiIgqASGElBjV2toaBgY6Te9HRFQpMQhCRERERFQJpKenIzMzEwC7whARFReDIERERERElQCTohIRlRyDIERERERElQCDIEREJccgCBERERFRJcAgCBFRyTEIQkRERERUCTAIQkRUcgyCEBERERFVAqpBEFtbWx3WhIio8mIQhIiIiIioElAGQaysrDg8LhFRMTEIQkRERERUwaWnpyM9PR0AYG9vr+PaEBFVXgyCEBERERFVcPHx8dI0u8IQERUfgyBERERERBVcbGysNM2kqERExccgCBERERFRBafaEoRBECKi4mMQhIiIiIioguPwuEREpYNBECIiIiKiCo4tQYiISgeDIEREREREFZwyJ4ilpSUMDQ11XBsiosqLQRAiIiIiogos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OGeCVGdAwmazERMTw913303jxo0Bs6hqREREtT2miIiI1H3KBBGRus8RBPHzg9at3dsWkQbuwpog1S0kJIS7776bPXv20LRpU7xUGFlEREQuQUEQEanbcnPNwqgAHTuCh4d72yPSwDkyQQICAqwpbKubt7c3CQkJNfJYIiIiUrdpOIyI1G179kBJibmsoTAiblVYWEhmZiagWVpERESkdlIQRETqNtUDEak1qrMoqoiIiEhVUBBEROqexET41a9g2zYFQURqkZquByIiIiJSWaoJIiJ1z513wpo18Oqr0KZN6XYFQUTcqqZmhhERERG5UsoEEZG6JTsb1q0zlzMzzWwQgOBgaNbMfe0SEZcgiDJBREREpDZSEERE6patW0sLoTrr3BlsthpvjoiUUk0QERERqe0UBBGRumXjxvK3ayiMiFsZhsHx48cB8PHxwd/f380tEhERESnLrUGQ5cuXM2HCBJo2bYrNZuObb75x2f/VV18xcuRIwsPDsdlsbN26tcw18vLyeOihhwgPDycwMJApU6Zw4sQJl2NSUlIYN24c/v7+REZG8otf/IKioqJqfGYiUm02bSpdnjq1dHngwJpvi4hYTpw4QU5ODgAxMTHYlJklIiIitZBbgyDZ2dkkJCTwyiuvXHT/wIED+ctf/nLRa/zsZz9j9uzZfPHFFyxbtoxjx44xefJka39xcTHjxo2joKCA1atX89577/Huu+/y9NNPV/nzEZEa4MgE8fKC996DN96Av/8dbr7Zve0SaeAOHjxoLbdu3dqNLRERERG5OLfODjNmzBjGjBlz0f233norAIcOHSp3f0ZGBm+//TYff/wxw4YNA+Cdd96hQ4cOrF27ln79+vH999+ze/duFi1aRJMmTejWrRt//OMf+dWvfsWzzz6Lt7d3lT8vEakmmZmwd6+53LUr+PnBPfe4t00iDYhhGKxbt47CwkL69++Pp2fprxHOQZDY2Fh3NE9ERETksup0TZBNmzZRWFjIiBEjrG3t27enZcuWrFmzBoA1a9bQpUsXmjRpYh0zatQozp07x65du2q8zSJyFbZsAcMwl3v1cm9bRBqgAwcOsGDBApYsWcK8efOs7UVFRRw+fBiARo0aER4e7q4mioiIiFySWzNBrlZqaire3t6EhIS4bG/SpAmpqanWMc4BEMd+x76Lyc/PJz8/31o/d+4cACUl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ERERERFxHxVGlUqLj4/nhhtuKDMNbs+ePS97rp+fH7169eKRRx7h2muvta5RWFgImNPIXnvttdx44434+voSEBBAly5dqv5JiIiIiIiISIOjTBC5Io4ZTr755hsMwyA2Ntaq7VER3t7eDBs2jNatW/Pll19aWR/XXnstnp6exMTE8Nhjj+Hl5YXdrlidiIiIiIiIXD0FQeSKde3alUaNGnHgwAH69u17Rddo3bo19913H8uWLcPf358ePXpY+3x8fKqqqSIiIiIiIiIKgsjVad269VXX7GjUqBHjx4+vohaJiIiIiIiIlE/jDERERERERESkQVAQREREREREREQaBAVBRERERERERKRBUBBERERERERERBoEBUFEREREREREpEFQEEREREREREREGgQFQURERERERESkQVAQREREREREREQaBAVBRERERERERKRBUBBERERERERERBoEBUFEREREREREpEFQEEREREREREREGgQFQURERERERESkQVAQREREREREREQaBAVBRERERERERKRB8HR3A+oKwzAAOHfunJtbUnElJSVkZmbi6+uL3a54V0Ohfm941OcNk/q94VGfN0zq94ZJ/d7wqM+vnuO7uuO7+8UoCFJBmZmZALRo0cLNLRERERERERGR8mRmZhIcHHzR/TbjcmESAczI3LFjx2jUqBE2m83dzamQc+fO0aJFC44cOUJQUJC7myM1RP3e8KjPGyb1e8OjPm+Y1O8Nk/q94VGfXz3DMMjMzKRp06aXzKZRJkgF2e12mjdv7u5mXJGgoCC9kRog9XvDoz5vmNTvDY/6vGFSvzdM6veGR31+dS6VAeKgwUYiIiIiIiIi0iAoCCIiIiIiIiIiDYKCIPWYj48PzzzzDD4+Pu5uitQg9XvDoz5vmNTvDY/6vGFSvzdM6veGR31ec1QYVUREREREREQaBGWCiIiIiIiIiEiDoCCIiIiIiIiIiDQICoKIiIiIiIiISIOgIEg99sorrxATE4Ovry99+/Zl/fr17m6SVJFnn30Wm83m8tO+fXtrf15eHg899BDh4eEEBgYyZcoUTpw44cYWy5VYvnw5EyZMoGnTpthsNr755huX/YZh8PTTTxMdHY2fnx8jRoxg3759LsecOXOGGTNmEBQUREhICHfddRdZWVk1+CykMi7X53fccUeZ9/7o0aNdjlGf1y3PP/88vXv3plGjRkRGRnLDDTeQmJjockxFPtNTUlIYN24c/v7+REZG8otf/IKioqKafCpSCRXp9yFDhpR5v99///0ux6jf65ZXX32Vrl27EhQURFBQEP379+e7776z9uu9Xv9crs/1PncPBUHqqc8++4zHH3+cZ555hs2bN5OQkMCoUaM4efKku5smVaRTp04cP37c+lm5cqW172c/+xmzZ8/miy++YNmyZRw7dozJkye7sbVyJbKzs0lISOCVV14pd/+LL77Iyy+/zGuvvca6desICAhg1KhR5OXlWcfMmDGDXbt2sXDhQubMmcPy5cu59957a+opSCVdrs8BRo8e7fLe/+STT1z2q8/rlmXLlvHQQw+xdu1aFi5cSGFhISNHjiQ7O9s65nKf6cXFxYwbN46CggJWr17Ne++9x7vvvsvTTz/tjqckFVCRfge45557XN7vL774orVP/V73NG/enBdeeIFNmzaxceNGhg0bxsSJE9m1axeg93p9dLk+B73P3cKQeqlPnz7GQw89ZK0XFxcbTZs2NZ5//nk3tkqqyjPPPGMkJCSUuy89Pd3w8vIyvvjiC2vbnj17DMBYs2ZNDbVQqhpgfP3119Z6SUmJERUVZfz1r3+1tqWnpxs+Pj7GJ598YhiGYezevdsAjA0bNljHfPfdd4bNZjOOHj1aY22XK3NhnxuGYdx+++3GxIkTL3qO+rzuO3nypAEYy5YtMwyjYp/p8+bNM+x2u5Gammod8+qrrxpBQUFGfn5+zT4BuSIX9rthGMbgwYONn/70pxc9R/1eP4SGhhpvvfWW3usNiKPPDUPvc3dRJkg9VFBQwKZNmxgxYoS1zW63M2LECNasWePGlklV2rdvH02bNqVNmzbMmDGDlJQUADZt2kRhYaFL/7dv356WLVuq/+uR5ORkUlNTXfo5ODiYvn37Wv28Zs0aQkJC6NWrl3XMiBEjsNvtrFu3rsbbLFVj6dKlREZG0q5dOx544AFOnz5t7VOf130ZGRkAhIWFARX7TF+zZg1dunShSZMm1jGjRo3i3LlzLn9tlNrrwn53+Oijj4iIiKBz58489dRT5OTkWPvU73VbcXExn376KdnZ2fTv31/v9Qbgwj530Pu85nm6uwFS9dLS0iguLnZ5swA0adKEvXv3uqlVUpX69u3Lu+++S7t27Th+/Di///3vufbaa9m5cyepqal4e3sTEhLick6TJk1ITU11T4Olyjn6srz3uWNfamoqkZGRLvs9PT0JCwvTa6GOGj16NJMnT6Z169YcOHCAX//614wZM4Y1a9bg4eGhPq/jSkpKeOyxxxgwYACdO3cGqNBnempqarmfBY59UruV1+8AN998M61ataJp06Zs376dX/3qVyQmJvLVV18B6ve6aseOHfTv35+8vDwCAwP5+uuv6dixI1u3btV7vZ66WJ+D3ufuoiCISB00ZswYa7lr16707duXVq1a8fnnn+Pn5+fGlolIdZo+fbq13KVLF7p27UpsbCxLly5l+PDhbmyZVIWHHnqInTt3utR4kvrvYv3uXMunS5cuREdHM3z4cA4cOEBsbGxNN1OqSLt27di6dSsZGRnMnDmT22+/nWXLlrm7WVKNLtbnHTt21PvcTTQcph6KiIjAw8OjTDXpEydOEBUV5aZWSXUKCQkhPj6e/fv3ExUVRUFBAenp6S7HqP/rF0dfXup9HhUVVaYYclFREWfOnNFroZ5o06YNERER7N+/H1Cf12UPP/wwc+bM4YcffqB58+bW9op8pkdFRZX7WeDYJ7XXxfq9PH379gVweb+r3+seb29v2rZtS8+ePXn++edJSEjgX//6l97r9djF+rw8ep/XDAVB6iFvb2969uzJ4sWLrW0lJSUsXrzYZfyZ1B9ZWVkcOHCA6OhoevbsiZeXl0v/JyYmkpKSov6vR1q3bk1UVJRLP587d45169ZZ/dy/f3/S09PZtGmTdcySJUsoKSmx/pOVuu3HH3/k9OnTREdHA+rzusgwDB5++GG+/vprlixZQuvWrV32V+QzvX///uzYscMlALZw4UKCgoKslGupXS7X7+XZunUrgMv7Xf1e95WUlJCfn6/3egPi6PPy6H1eQ9xdmVWqx6effmr4+PgY7777rrF7927j3nvvNUJCQlwqC0vd9cQTTxhLly41kpOTjVWrVhkjRowwIiIijJMnTxqGYRj333+/0bJlS2PJkiXGxo0bjf79+xv9+/d3c6ulsjIzM40tW7YYW7ZsMQDjpZdeMrZs2WIcPnzYMAzDeOGFF4yQkBBj1qxZxvbt242JEycarVu3NnJzc61rjB492ujevbuxbt06Y+XKlUZcXJxx0003uespyWVcqs8zMzONn//858aaNWuM5ORkY9GiRUaPHj2MuLg4Iy8vz7qG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vLyMbdu2Gfv37zcCAwONZcuWGcnJycapU6cuev5Pf/pTY9iwYS7bKtK+CxUXFxuNGjUyZs+ebRiGYSxYsMCw2+1GYmJiuce/8847BmDs37/f2vbKK68YTZo0uWhbf/jhBwMwzp49a10jODjY2v/MM88Y/v7+xrlz56xtv/jFL4y+ffsahmEYeXl5hr+/v7F69WqX6951113GTTfdVO5jdunSxXj22Wcv2iZnSUlJBmCsWrXK2paWlmb4+fkZn3/+uWEYhvHyyy8bnTp1MgzDML755hujb9++xsSJE41XX33VMAzDGDFihPHrX//aOh8wfvvb31rrWVlZBmB89913F21Hq1atjNGjR7tsmzZtmjFmzBjDMAxjxYoVRlBQkJGXl+dyTGxsrPH6668bhmHey4SEBJf9f//73434+HijoKDgoo89a9Ysw263G8XFxRc9RkREpDooE0RERMRNhg4dytatW9m6dSvr169n1KhRjBkzhsOHDwOwbds29u/fT6NGjQgMDCQwMJCwsDDy8vI4cOBApR7L09OTmJgY9u7dS+/evenatSupqak0adKEQYMGERMTQ0RExEXPz83NxdfX12VbRdp34sQJ7rnnHuLi4ggODiYoKIisrCyrEOvWrVtp3rw58fHxF31sf39/YmNjrfXo6GhOnjxZqed/oZiYGJesFudr7t+/n5ycHK677jrreQUGBvL+++9f9L4/+uijPPfccwwYMIBnnnnmkgVu9+zZg6enJ3379rW2hYeH065dO/bs2QPA4MGD2b17N6dOnWLZsmUMGTKEIUOGsHTpUgoLC1m9ejVDhgxxuW7Xrl2t5YCAAIKCgi57n/r3719m3dGGbdu2kZWVRXh4uMt9SE5OvuTrb+rUqeTm5tKmTRvuuecevv76a4qKilyO8fPzo6SkhPz8/Eu2T0REpKp5ursBIiIiDVVAQABt27a11t966y2Cg4N58803ee6558jKyqJnz5589NFHZc5t3LhxpR6rU6dOHD58mMLCQkpKSggMDKSoqIiioiICAwNp1aoVu3btuuj5ERER7Nixw2VbRdp3++23c/r0af71r3/RqlUrfHx86N+/vzVcxs/P77Jt9/Lyclm32WwYhnHZ8yp7TcdsJVlZWQDMnTuXZs2auRzn4+NTCDKv6wAABXZJREFU7vXuvvtuRo0axdy5c/n+++95/vnn+fvf/84jjzxyRe3r0qULYWFhLFu2jGXLlvGnP/2JqKgo/vKXv7BhwwYKCwvLDH261HO6EllZWURHR5dbZ+ZSUw63aNGCxMREFi1axMKFC3nwwQf561//yrJly6w2njlzhoCAgAr1v4iISFVSEERERKSWsNls2O12cnNzAejRowefffYZkZGRBAUFlXuOt7c3xcXFl732vHnzKCwsZPjw4bz44ov07NmT6dOnc8cddzB69OgyX6Av1L17d1599VUMw7Cmhq1I+1atWsV///tfxo4dC5iFVNPS0qz9Xbt25ccffyQpKemS2SA1qWPHjvj4+JCSksLgwYMrfF6LFi24//77uf/++3nqqad48803yw2CdOjQgaKiItatW2cFMk6fPk1iYiIdO3YEzNfCtddey6xZs9i1axcDBw7E39+f/Px8Xn/9dXr16kVAQMBVP9e1a9eWWe/QoQNg9m9qaqqVRVSei73+/Pz8mDBhAhMmTOChhx6iffv27Nixgx49egCwc+dOunfvftXtFxERqSwNhxEREXGT/Px8UlNTSU1NZc+ePTzyyCNkZWUxYcIEAGbMmEFERAQTJ05kxYoVJCcns3TpUh599FF+/PFHwBzWsX37dhITE0lLS6OwsLDcx2rVqhWBgYGcOHGCiRMn0qJFC3bt2sWUKVNo27YtrVq1umRbhw4dSlZWlku2SEXaFxcXxwcffMCePXtYt24dM2bMcPnr/+DBgxk0aBBTpkxh4cKFJCcn89133zF//vyrurdXo1GjRvz85z/nZz/7Ge+99x4HDhxg8+bN/Pvf/+a9994r95zHHnuMBQsWkJyczObNm/nhhx+sYMKF4uLimDhxIvfccw8rV65k27Zt3HLLLTRr1oyJEydaxw0ZMoRPPvmEbt26ERgYiN1uZ9CgQXz00UeVCs5cyqpVq3jxxRdJSkrilVde4YsvvuCnP/0pACNGjKB///7ccMMNfP/99xw6dIjVq1fzm9/8ho0bNwLm6y85OZmtW7eSlpZGfn4+7777Lm+//TY7d+7k4MGDfPjhh/j5+bm8xlasWMHIkSOr5DmIiIhUhoIgIiIibjJ//nyio6OJjo6mb9++bNiwgS+++MKq9eDv78/y5ctp2bIlkydPpkOHDtx1113k5eVZmRf33HMP7dq1o1evXjRu3JhVq1Zd9PGWLl1K79698fX1Zf369TRv3txl2tVLCQ8PZ9KkSS5DXyrSvrfffpuzZ8/So0cPbr31Vh599FEiIyNdrv3ll1/Su3dvbrrpJjp27Mgvf/nLCmW3VKc//vGP/O53v+P555+nQ4cOjB49mrlz59K6detyjy8uLuahhx6yjo2Pj+e///3vRa//zjvv0LNnT8aPH0///v0xDIN58+a5ZOQMHjyY4uJil9ofQ4YMKbPtajzxxBNs3LiR7t2789xzz/HSSy8xatQowMxGmTdvHoMGDeLOO+8kPj6e6dOnc/jwYZo0aQLAlClTGD16NEOHDqVx48Z88sknhISE8OabbzJgwAC6du3KokWLmD17tjXr0dGjR1m9ejV33nlnlTwHERGRyrAZVzuoVkRERBqE7du3c91113HgwIFLTv8qcim/+tWvOHv2LG+88Ya7myIiIg2QMkFERESkQrp27cpf/vIXkpOT3d0UqcMiIyP54x//6O5miIhIA6VMEBERERERERFpEJQJIiIiIiIiIiINgoIgIiIiIiIiItIgKAgiIiIiIiIiIg2CgiAiIiIiIiIi0iAoCCIiIiIiIiIiDYKCICIiIiIiIiLSICgIIiIiIiIiIiINgoIgIiIiIiIiItIgKAgiIiIiIiIiIg3C/wPxrXAjnsoQegAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1100x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ---- equity overlay: each line indexed by its OWN bet count (fair comparison) ----\n",
    "# the gated line only moves on BET rows, so plot just those -> x = that line's bet number,\n",
    "# not the shared signal index (which unfairly stretches the gated curve across skipped slots).\n",
    "gated_eq = sig.loc[sig['decision'] == 'BET', 'bankroll_gated'].values\n",
    "base_eq  = sig['bankroll'].values\n",
    "title2 = f'Compounded bankroll by bet # -- baseline vs rolling-ROI gate (win{WINDOW}/warm{WARMUP}, skip)'\n",
    "try:\n",
    "    import plotly.graph_objects as go\n",
    "    fig = go.Figure()\n",
    "    fig.add_trace(go.Scatter(x=list(range(len(base_eq))),  y=base_eq,  mode='lines',\n",
    "                             name=f'baseline (n={len(base_eq)})', line=dict(color='gray', width=2)))\n",
    "    fig.add_trace(go.Scatter(x=list(range(len(gated_eq))), y=gated_eq, mode='lines',\n",
    "                             name=f'gated (n={len(gated_eq)})', line=dict(color='red', width=2)))\n",
    "    fig.add_hline(y=BANKROLL0, line_dash='dash', line_color='lightgray')\n",
    "    fig.update_layout(title=title2, xaxis_title=\"Bet # (each line's own bets)\",\n",
    "                      yaxis_title='Bankroll ($)', hovermode='x unified')\n",
    "    fig.write_html('strategy_gate_equity.html')\n",
    "    print('chart -> strategy_gate_equity.html')\n",
    "    fig.show()\n",
    "except ModuleNotFoundError:\n",
    "    import matplotlib.pyplot as plt\n",
    "    fig, ax = plt.subplots(figsize=(11, 5))\n",
    "    ax.plot(range(len(base_eq)),  base_eq,  color='gray', lw=2, label=f'baseline (n={len(base_eq)})')\n",
    "    ax.plot(range(len(gated_eq)), gated_eq, color='red',  lw=2, label=f'gated (n={len(gated_eq)})')\n",
    "    ax.axhline(BANKROLL0, color='lightgray', ls='--', lw=1)\n",
    "    ax.set_xlabel(\"Bet # (each line's own bets)\"); ax.set_ylabel('Bankroll ($)'); ax.set_title(title2)\n",
    "    ax.legend(); ax.grid(alpha=0.3); fig.tight_layout()\n",
    "    fig.savefig('E:/soccer/research/strategy_gate_equity.png', dpi=120)\n",
    "    print('plotly not installed -> chart saved to strategy_gate_equity.png')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "129d667f",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:55.933328Z",
     "iopub.status.busy": "2026-06-06T15:52:55.933328Z",
     "iopub.status.idle": "2026-06-06T15:52:55.968484Z",
     "shell.execute_reply": "2026-06-06T15:52:55.968484Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "re-wrote 365 bets (now with decision/stake_gated/bankroll_gated) -> strategy_bets.csv\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ts</th>\n",
       "      <th>game_date</th>\n",
       "      <th>league</th>\n",
       "      <th>home</th>\n",
       "      <th>away</th>\n",
       "      <th>side</th>\n",
       "      <th>ftr</th>\n",
       "      <th>won</th>\n",
       "      <th>clv</th>\n",
       "      <th>p_win</th>\n",
       "      <th>ask</th>\n",
       "      <th>odds</th>\n",
       "      <th>kelly_frac</th>\n",
       "      <th>stake</th>\n",
       "      <th>net</th>\n",
       "      <th>bankroll</th>\n",
       "      <th>decision</th>\n",
       "      <th>stake_gated</th>\n",
       "      <th>bankroll_gated</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2026-04-22 00:01:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>E0</td>\n",
       "      <td>Burnley</td>\n",
       "      <td>Manchester City</td>\n",
       "      <td>home</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>6.3</td>\n",
       "      <td>0.0587</td>\n",
       "      <td>0.06</td>\n",
       "      <td>16.667</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>1000.00</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2026-04-22 00:01:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>E1</td>\n",
       "      <td>Birmingham</td>\n",
       "      <td>Preston</td>\n",
       "      <td>away</td>\n",
       "      <td>H</td>\n",
       "      <td>0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>0.1846</td>\n",
       "      <td>0.18</td>\n",
       "      <td>5.556</td>\n",
       "      <td>0.0014</td>\n",
       "      <td>1.41</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>998.59</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2026-04-22 00:01:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>MLS</td>\n",
       "      <td>San Jose</td>\n",
       "      <td>Austin</td>\n",
       "      <td>away</td>\n",
       "      <td>H</td>\n",
       "      <td>0</td>\n",
       "      <td>6.5</td>\n",
       "      <td>0.1550</td>\n",
       "      <td>0.15</td>\n",
       "      <td>6.667</td>\n",
       "      <td>0.0015</td>\n",
       "      <td>1.48</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>997.11</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2026-04-22 00:01:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>MLS</td>\n",
       "      <td>Los Angeles F</td>\n",
       "      <td>Colorado</td>\n",
       "      <td>away</td>\n",
       "      <td>D</td>\n",
       "      <td>0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.1505</td>\n",
       "      <td>0.15</td>\n",
       "      <td>6.667</td>\n",
       "      <td>0.0001</td>\n",
       "      <td>1.00</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>996.11</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2026-04-22 02:02:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>SP1</td>\n",
       "      <td>Barcelona</td>\n",
       "      <td>Celta Vigo</td>\n",
       "      <td>away</td>\n",
       "      <td>H</td>\n",
       "      <td>0</td>\n",
       "      <td>11.7</td>\n",
       "      <td>0.1019</td>\n",
       "      <td>0.10</td>\n",
       "      <td>10.000</td>\n",
       "      <td>0.0005</td>\n",
       "      <td>1.00</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>995.11</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2026-04-22 02:02:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>E1</td>\n",
       "      <td>Charlton</td>\n",
       "      <td>Ipswich</td>\n",
       "      <td>home</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>6.2</td>\n",
       "      <td>0.1865</td>\n",
       "      <td>0.18</td>\n",
       "      <td>5.556</td>\n",
       "      <td>0.0020</td>\n",
       "      <td>1.97</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>993.14</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2026-04-22 04:03:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>G1</td>\n",
       "      <td>Panserraikos</td>\n",
       "      <td>Atromitos Athinon</td>\n",
       "      <td>home</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>5.5</td>\n",
       "      <td>0.3649</td>\n",
       "      <td>0.35</td>\n",
       "      <td>2.857</td>\n",
       "      <td>0.0057</td>\n",
       "      <td>5.70</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>987.44</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2026-04-22 06:04:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>E1</td>\n",
       "      <td>Middlesbrough</td>\n",
       "      <td>Sheffield Wednesday</td>\n",
       "      <td>away</td>\n",
       "      <td>H</td>\n",
       "      <td>0</td>\n",
       "      <td>5.7</td>\n",
       "      <td>0.0583</td>\n",
       "      <td>0.06</td>\n",
       "      <td>16.667</td>\n",
       "      <td>0.0000</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>987.44</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2026-04-22 06:04:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>MLS</td>\n",
       "      <td>Atlanta</td>\n",
       "      <td>New England</td>\n",
       "      <td>home</td>\n",
       "      <td>A</td>\n",
       "      <td>0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>0.4695</td>\n",
       "      <td>0.45</td>\n",
       "      <td>2.222</td>\n",
       "      <td>0.0089</td>\n",
       "      <td>8.74</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>978.70</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>2026-04-22 09:05:00</td>\n",
       "      <td>2026-04-22</td>\n",
       "      <td>MLS</td>\n",
       "      <td>Toronto</td>\n",
       "      <td>Philadelphia</td>\n",
       "      <td>away</td>\n",
       "      <td>D</td>\n",
       "      <td>0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>0.3430</td>\n",
       "      <td>0.33</td>\n",
       "      <td>3.030</td>\n",
       "      <td>0.0048</td>\n",
       "      <td>4.73</td>\n",
       "      <td>-1.0</td>\n",
       "      <td>973.97</td>\n",
       "      <td>SKIP</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1000.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   ts   game_date league           home                 away  \\\n",
       "0 2026-04-22 00:01:00  2026-04-22     E0        Burnley      Manchester City   \n",
       "1 2026-04-22 00:01:00  2026-04-22     E1     Birmingham              Preston   \n",
       "2 2026-04-22 00:01:00  2026-04-22    MLS       San Jose               Austin   \n",
       "3 2026-04-22 00:01:00  2026-04-22    MLS  Los Angeles F             Colorado   \n",
       "4 2026-04-22 02:02:00  2026-04-22    SP1      Barcelona           Celta Vigo   \n",
       "5 2026-04-22 02:02:00  2026-04-22     E1       Charlton              Ipswich   \n",
       "6 2026-04-22 04:03:00  2026-04-22     G1   Panserraikos    Atromitos Athinon   \n",
       "7 2026-04-22 06:04:00  2026-04-22     E1  Middlesbrough  Sheffield Wednesday   \n",
       "8 2026-04-22 06:04:00  2026-04-22    MLS        Atlanta          New England   \n",
       "9 2026-04-22 09:05:00  2026-04-22    MLS        Toronto         Philadelphia   \n",
       "\n",
       "   side ftr  won   clv   p_win   ask    odds  kelly_frac  stake  net  \\\n",
       "0  home   A    0   6.3  0.0587  0.06  16.667      0.0000   0.00 -1.0   \n",
       "1  away   H    0   5.2  0.1846  0.18   5.556      0.0014   1.41 -1.0   \n",
       "2  away   H    0   6.5  0.1550  0.15   6.667      0.0015   1.48 -1.0   \n",
       "3  away   D    0   7.0  0.1505  0.15   6.667      0.0001   1.00 -1.0   \n",
       "4  away   H    0  11.7  0.1019  0.10  10.000      0.0005   1.00 -1.0   \n",
       "5  home   A    0   6.2  0.1865  0.18   5.556      0.0020   1.97 -1.0   \n",
       "6  home   A    0   5.5  0.3649  0.35   2.857      0.0057   5.70 -1.0   \n",
       "7  away   H    0   5.7  0.0583  0.06  16.667      0.0000   0.00 -1.0   \n",
       "8  home   A    0   5.2  0.4695  0.45   2.222      0.0089   8.74 -1.0   \n",
       "9  away   D    0   5.2  0.3430  0.33   3.030      0.0048   4.73 -1.0   \n",
       "\n",
       "   bankroll decision  stake_gated  bankroll_gated  \n",
       "0   1000.00     SKIP          0.0          1000.0  \n",
       "1    998.59     SKIP          0.0          1000.0  \n",
       "2    997.11     SKIP          0.0          1000.0  \n",
       "3    996.11     SKIP          0.0          1000.0  \n",
       "4    995.11     SKIP          0.0          1000.0  \n",
       "5    993.14     SKIP          0.0          1000.0  \n",
       "6    987.44     SKIP          0.0          1000.0  \n",
       "7    987.44     SKIP          0.0          1000.0  \n",
       "8    978.70     SKIP          0.0          1000.0  \n",
       "9    973.97     SKIP          0.0          1000.0  "
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# ---- re-write the bet log to ALSO include the rolling-gate decision columns ----\n",
    "# (the earlier CSV cell ran before the gate existed; this overwrites it with the full set)\n",
    "cols2 = ['ts', 'game_date', 'league', 'home', 'away', 'side', 'ftr', 'won',\n",
    "         'clv', 'p_win', 'ask', 'odds', 'kelly_frac', 'stake', 'net', 'bankroll',\n",
    "         'decision', 'stake_gated', 'bankroll_gated']\n",
    "bets = sig[cols2].copy()\n",
    "bets['clv']   = (bets['clv'] * 100).round(1)     # CLV as a percentage\n",
    "bets['p_win'] = bets['p_win'].round(4)\n",
    "bets['odds']  = bets['odds'].round(3)\n",
    "bets.to_csv(CSV_OUT, index=False)\n",
    "print(f\"re-wrote {len(bets)} bets (now with decision/stake_gated/bankroll_gated) -> {CSV_OUT}\")\n",
    "bets.head(10)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "319f6e22",
   "metadata": {},
   "source": [
    "## Honest out-of-sample test of the gate\n",
    "\n",
    "The gated p-value above is **optimistic**: the gate's knobs (window/warmup/threshold) were chosen\n",
    "while looking at the same bets we then test on, so the surviving bets are cherry-picked and the p is\n",
    "biased low. The fix is a clean split:\n",
    "\n",
    "1. **TRAIN** = the earliest `SPLIT` fraction of bets. Grid-search the gate knobs here and **lock** the\n",
    "   best config (tuned on per-bet ROI).\n",
    "2. **TEST** = the remaining later bets, which the tuning never saw. Apply the locked knobs and score\n",
    "   ROI + significance **only on TEST**.\n",
    "\n",
    "The per-league rolling history carries across the split (realistic — live, you'd already have it), but\n",
    "nothing about the TEST outcomes influences the knob choice. Whatever p we get on TEST is honest."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "576c9977",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-06-06T15:52:55.972390Z",
     "iopub.status.busy": "2026-06-06T15:52:55.972390Z",
     "iopub.status.idle": "2026-06-06T15:52:56.470413Z",
     "shell.execute_reply": "2026-06-06T15:52:56.470413Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TRAIN (first 60%, n=219): best knobs -> window=10, warmup=8, thresh=0.1  (train gated ROI +74.4%)\n",
      "\n",
      "--- OUT-OF-SAMPLE  (last 40%, n=146) ---\n",
      "TEST baseline (bet all):   n=146 | ROI  +22.9% | z=+1.19 | p=0.1167\n",
      "TEST gated (locked knobs): n= 78 | ROI  +12.9% | z=+0.49 | p=0.3126\n",
      "\n",
      "Honest read: knobs never saw the TEST bets. If the gated TEST p (0.3126) is NOT clearly\n",
      "below the baseline TEST p (0.1167), the gate adds nothing out-of-sample -- its better\n",
      "in-sample number was the data-snooping mirage we suspected.\n"
     ]
    }
   ],
   "source": [
    "from collections import deque, defaultdict\n",
    "from itertools import product\n",
    "\n",
    "SPLIT      = 0.60                       # first 60% of bets (chronological) = TRAIN\n",
    "MIN_TRAIN_BETS = 40                     # ignore configs that bench almost everything in TRAIN\n",
    "GRID = list(product([5, 10, 15],        # WINDOW candidates\n",
    "                    [5, 8, 12],         # WARMUP candidates\n",
    "                    [0.0, 0.10]))       # GATE_THRESH candidates\n",
    "\n",
    "so = sig.sort_values('ts').reset_index(drop=True)   # ensure chronological\n",
    "cut = int(len(so) * SPLIT)\n",
    "is_train = so.index < cut\n",
    "is_test  = so.index >= cut\n",
    "\n",
    "def gate_decisions(frame, window, warmup, thresh):\n",
    "    \"\"\"Point-in-time SKIP/BET/BENCH per row from rolling per-league net.\"\"\"\n",
    "    hist = defaultdict(lambda: deque(maxlen=window)); out = []\n",
    "    for _, r in frame.iterrows():\n",
    "        h = hist[r['league']]\n",
    "        if   len(h) < warmup:            dec = 'SKIP'\n",
    "        elif sum(h) / len(h) >= thresh:  dec = 'BET'\n",
    "        else:                            dec = 'BENCH'\n",
    "        h.append(r['net']); out.append(dec)\n",
    "    return np.array(out)\n",
    "\n",
    "def net_sig(net):\n",
    "    n = len(net)\n",
    "    if n < 2: return float('nan'), float('nan')\n",
    "    z = net.mean() / (net.std(ddof=1) / np.sqrt(n))\n",
    "    return z, 1 - stats.norm.cdf(z)\n",
    "\n",
    "# ---- tune knobs on TRAIN only (maximise TRAIN gated per-bet ROI) ----\n",
    "best = None\n",
    "for w, wu, th in GRID:\n",
    "    dec = gate_decisions(so, w, wu, th)\n",
    "    m = is_train & (dec == 'BET')\n",
    "    if m.sum() < MIN_TRAIN_BETS:\n",
    "        continue\n",
    "    roi = so.loc[m, 'net'].mean()\n",
    "    if best is None or roi > best[0]:\n",
    "        best = (roi, w, wu, th)\n",
    "_, W, WU, TH = best\n",
    "print(f\"TRAIN (first {SPLIT:.0%}, n={cut}): best knobs -> window={W}, warmup={WU}, thresh={TH}  \"\n",
    "      f\"(train gated ROI {best[0]:+.1%})\")\n",
    "\n",
    "# ---- lock knobs, score on TEST only ----\n",
    "dec = gate_decisions(so, W, WU, TH)\n",
    "test_base = so.loc[is_test, 'net']\n",
    "test_gate = so.loc[is_test & (dec == 'BET'), 'net']\n",
    "zb, pb = net_sig(test_base); zg, pg = net_sig(test_gate)\n",
    "\n",
    "print(f\"\\n--- OUT-OF-SAMPLE  (last {1-SPLIT:.0%}, n={is_test.sum()}) ---\")\n",
    "print(f\"TEST baseline (bet all):   n={len(test_base):>3} | ROI {test_base.mean():>+7.1%} | z={zb:+.2f} | p={pb:.4f}\")\n",
    "print(f\"TEST gated (locked knobs): n={len(test_gate):>3} | ROI {test_gate.mean():>+7.1%} | z={zg:+.2f} | p={pg:.4f}\")\n",
    "print(f\"\\nHonest read: knobs never saw the TEST bets. If the gated TEST p ({pg:.4f}) is NOT clearly\\n\"\n",
    "      f\"below the baseline TEST p ({pb:.4f}), the gate adds nothing out-of-sample -- its better\\n\"\n",
    "      f\"in-sample number was the data-snooping mirage we suspected.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a27ffa8-a379-475f-9e15-c1556e6c2bfd",
   "metadata": {},
   "source": [
    "## League Analysis: ROI per league + min-games filter\n",
    "\n",
    "Layered on `sig` (the settled bets). `net` is the flat 1-unit outcome (odds-1 on a win, -1 on a loss), so **flat ROI = mean(net)**. The filter cell keeps only leagues with at least `MIN_GAMES` bets -- change the knob and re-run."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9b5912af-3579-4251-a686-e45124a1ee22",
   "metadata": {},
   "outputs": [],
   "source": [
    "# ===== ROI per league (on sig = settled bets) =====\n",
    "league_stats = (\n",
    "    sig.groupby('league')\n",
    "       .agg(n=('net', 'size'),\n",
    "            win_pct=('won', 'mean'),\n",
    "            roi_pct=('net', 'mean'),\n",
    "            pnl_u=('net', 'sum'))\n",
    "       .sort_values('n', ascending=False)\n",
    ")\n",
    "league_stats['win_pct'] = (league_stats['win_pct'] * 100).round(1)\n",
    "league_stats['roi_pct'] = (league_stats['roi_pct'] * 100).round(1)\n",
    "league_stats['pnl_u']   = league_stats['pnl_u'].round(2)\n",
    "\n",
    "print(f\"Per-league flat ROI  ({BOOK}, {len(sig)} bets, {league_stats.shape[0]} leagues)\")\n",
    "print(league_stats.to_string())\n",
    "print()\n",
    "print(f\"OVERALL  n={len(sig)}  win%={100*sig['won'].mean():.1f}  \"\n",
    "      f\"ROI%={100*sig['net'].mean():+.1f}  PnL={sig['net'].sum():+.2f}u\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4662a3bd-817c-45a3-99d8-30ce0a09c7ae",
   "metadata": {},
   "outputs": [],
   "source": [
    "# ===== Filter test: only include leagues with >= MIN_GAMES bets =====\n",
    "MIN_GAMES = 15      # <-- adjust this threshold\n",
    "\n",
    "counts   = sig['league'].value_counts()\n",
    "eligible = counts[counts >= MIN_GAMES].index\n",
    "kept     = sig[sig['league'].isin(eligible)]\n",
    "dropped  = sig[~sig['league'].isin(eligible)]\n",
    "\n",
    "def _summ(name, d):\n",
    "    if len(d) == 0:\n",
    "        print(f\"{name:18} n=0\"); return\n",
    "    print(f\"{name:18} n={len(d):4d}  leagues={d['league'].nunique():3d}  \"\n",
    "          f\"win%={100*d['won'].mean():5.1f}  \"\n",
    "          f\"ROI%={100*d['net'].mean():+6.1f}  \"\n",
    "          f\"PnL={d['net'].sum():+8.2f}u\")\n",
    "\n",
    "print(f\"Min-games filter: keep leagues with >= {MIN_GAMES} bets\")\n",
    "print(f\"Kept ({len(eligible)}): {sorted(eligible)}\")\n",
    "print(f\"Drop ({(counts < MIN_GAMES).sum()}): {sorted(counts[counts < MIN_GAMES].index)}\")\n",
    "print()\n",
    "_summ('ALL (no filter)', sig)\n",
    "_summ(f'>= {MIN_GAMES} games', kept)\n",
    "_summ('dropped (<min)', dropped)\n",
    "\n",
    "# significance of the kept set (net_sig defined in the OOS-gate cell above)\n",
    "zk, pk = net_sig(kept['net'])\n",
    "print()\n",
    "print(f\"kept-set one-sided z-test (ROI>0):  z={zk:+.2f}  p={pk:.4f}  \"\n",
    "      f\"{'SIGNIFICANT' if pk < 0.05 else 'not significant'} at 5%\")\n",
    "\n",
    "# re-run fractional-Kelly compounding on ONLY the kept leagues -> terminal bankroll under the filter\n",
    "brf = BANKROLL0\n",
    "for _, r in kept.sort_values('ts').iterrows():\n",
    "    frac  = kelly_fraction(r.p_win, r.odds)\n",
    "    stake = round(frac * brf, 2)\n",
    "    if stake > 0:\n",
    "        stake = max(stake, MIN_STAKE)\n",
    "    brf += stake * (r.odds - 1) if r.won else -stake\n",
    "base_final = sig['bankroll'].iloc[-1]\n",
    "print()\n",
    "print(f\"compounded bankroll, kept leagues only: ${brf:,.2f} ({brf/BANKROLL0-1:+.1%})  \"\n",
    "      f\"vs baseline ${base_final:,.2f} ({base_final/BANKROLL0-1:+.1%})\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a51d9791-3fdc-4b8c-a5d1-ed94f96d9391",
   "metadata": {},
   "outputs": [],
   "source": [
    "# ===== plotly bar chart: flat ROI per league =====\n",
    "import plotly.graph_objects as go\n",
    "\n",
    "ls  = league_stats.sort_values('roi_pct')            # built in the ROI-per-league cell above\n",
    "clr = ['#2ca02c' if v >= 0 else '#d62728' for v in ls['roi_pct']]\n",
    "fig = go.Figure(go.Bar(\n",
    "    x=ls['roi_pct'], y=ls.index, orientation='h',\n",
    "    marker_color=clr,\n",
    "    text=[f\"{r:+.1f}%  (n={int(n)})\" for r, n in zip(ls['roi_pct'], ls['n'])],\n",
    "    textposition='outside',\n",
    "))\n",
    "fig.add_vline(x=0, line_color='gray', line_dash='dash')\n",
    "fig.update_layout(\n",
    "    title=f'Flat ROI per league -- {BOOK} CLV [{EDGE_LO:.0%}, {EDGE_HI:.0%})',\n",
    "    xaxis_title='Flat ROI %', yaxis_title='League',\n",
    "    height=max(400, 24 * len(ls)), margin=dict(l=80, r=120),\n",
    ")\n",
    "fig.write_html('strategy_league_roi.html')\n",
    "print('chart -> strategy_league_roi.html')\n",
    "fig.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ce2e510f",
   "metadata": {},
   "source": [
    "## Beat-the-close per league (reference-independent CLV)\n",
    "\n",
    "For each bet, did Kalshi's **mid** drift toward our side from entry to the last pre-KO snapshot? Mid-to-mid (spread removed) so the stale-Pinnacle reference can't contaminate it, and far lower-variance than realized ROI. **beat% > 50 = genuine CLV; ~50 = efficient/sharp book; < 50 = adverse (line moved against you).** Honors `EXCLUDE_LEAGUES`, so clear it in PARAMETERS to see USL/BSA."
   ]
  },
  {
   "cell_type": "code",
   "id": "dc686bd4",
   "metadata": {},
   "execution_count": null,
   "outputs": [],
   "source": [
    "# ===== Beat-the-close per league (does Kalshi's mid move toward our side?) =====\n",
    "GAME = ['game_date', 'home', 'away']\n",
    "# closing (= last pre-KO) mid for every fixture\n",
    "_close = (pre.sort_values('ts').groupby(GAME, as_index=False).tail(1)\n",
    "            .rename(columns={'kalshi_home_mid': 'close_home_mid',\n",
    "                             'kalshi_away_mid': 'close_away_mid'})\n",
    "            [GAME + ['close_home_mid', 'close_away_mid']])\n",
    "bc = sig.merge(_close, on=GAME, how='left')\n",
    "bc['entry_mid'] = bc.apply(lambda r: r[f'kalshi_{r.side}_mid'], axis=1)\n",
    "bc['close_mid'] = np.where(bc['side'] == 'home', bc['close_home_mid'], bc['close_away_mid'])\n",
    "bc = bc.dropna(subset=['entry_mid', 'close_mid'])\n",
    "bc['mid_move'] = bc['close_mid'] - bc['entry_mid']          # > 0 = market moved toward our YES side\n",
    "bc['beat']     = (bc['mid_move'] > 0).astype(int)\n",
    "\n",
    "beat_stats = (bc.groupby('league')\n",
    "                .agg(n=('beat', 'size'),\n",
    "                     beat_pct=('beat', 'mean'),\n",
    "                     avg_move_pp=('mid_move', lambda s: s.mean() * 100),\n",
    "                     roi_pct=('net', 'mean'))\n",
    "                .sort_values('beat_pct', ascending=False))\n",
    "beat_stats['beat_pct']    = (beat_stats['beat_pct'] * 100).round(1)\n",
    "beat_stats['avg_move_pp'] = beat_stats['avg_move_pp'].round(2)\n",
    "beat_stats['roi_pct']     = (beat_stats['roi_pct'] * 100).round(1)\n",
    "\n",
    "print(f\"Beat-close per league  ({BOOK}, {len(bc)} bets)   beat% = share where Kalshi mid drifted our way\")\n",
    "print(beat_stats.to_string())\n",
    "print()\n",
    "print(f\"OVERALL  beat%={100 * bc['beat'].mean():.1f}   \"\n",
    "      f\"avg mid move={100 * bc['mid_move'].mean():+.2f}pp   n={len(bc)}\")"
   ]
  },
  {
   "cell_type": "code",
   "id": "769cf625",
   "metadata": {},
   "execution_count": null,
   "outputs": [],
   "source": [
    "# ===== plotly bar chart: beat-close per league =====\n",
    "import plotly.graph_objects as go\n",
    "\n",
    "bs  = beat_stats.sort_values('beat_pct')\n",
    "clr = ['#2ca02c' if v >= 50 else '#d62728' for v in bs['beat_pct']]   # green beats the close, red adverse\n",
    "fig = go.Figure(go.Bar(\n",
    "    x=bs['beat_pct'], y=bs.index, orientation='h',\n",
    "    marker_color=clr,\n",
    "    text=[f\"{b:.0f}%  (n={int(n)})\" for b, n in zip(bs['beat_pct'], bs['n'])],\n",
    "    textposition='outside',\n",
    "))\n",
    "fig.add_vline(x=50, line_color='gray', line_dash='dash',\n",
    "              annotation_text='50% = efficient book', annotation_position='top')\n",
    "fig.update_layout(\n",
    "    title=f'Beat-the-close per league -- {BOOK} CLV [{EDGE_LO:.0%}, {EDGE_HI:.0%})',\n",
    "    xaxis_title='% of bets where Kalshi mid moved toward our side', yaxis_title='League',\n",
    "    height=max(400, 24 * len(bs)), margin=dict(l=80, r=120),\n",
    ")\n",
    "fig.write_html('strategy_beat_close.html')\n",
    "print('chart -> strategy_beat_close.html')\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Executable late-drift momentum (forward test)\n",
    "\n",
    "Open, **unproven** lead (frozen 2026-06-15). A CLV signal looks stronger if the Kalshi mid has **already drifted toward our side** by the time we bet. The executable, *non-look-ahead* rule:\n",
    "\n",
    "1. signal fires when `clv_kalshi_<side>` first enters `[EDGE_LO, EDGE_HI)` -> record entry mid\n",
    "2. wait to the **last pre-KO snapshot** (decision point); compute `drift = late_mid - entry_mid`\n",
    "3. if `drift >= 0` (momentum) -> bet at the **late ask** (`p_win` = late `pin_fair`); else skip\n",
    "\n",
    "Pricing at the *late* ask is what removes the look-ahead. On these penny-quantized longshots the ask barely moves, so confirming the drift costs ~nothing. In-sample this beats baseline, but the Kelly cut was IS-worse/OOS-better (regime-artifact signature) and the gap was only p=0.13 -> **forward test, do not deploy.** `game_date > FORWARD_CUTOFF` is the genuine out-of-sample bucket; it fills as new fixtures settle. Standalone tracker: `E:/soccer/forward_test_drift_momentum.py` (appends to `forward_test_momentum_log.csv`).\n",
    "\n",
    "**Edge line (added 2026-06-17).** A sibling filter that isolates the *edge gate* from drift: positive-edge **selection** (`late pin_fair > late ask`) with **no** drift requirement. In-sample it is ~tied with momentum per dollar (g/bet ~0.16%, ROIturn ~+20%), so the value is in **stacking** the two gates (drift AND edge -> the 154-bet subset, +35.9% ROIturn), not in either gate alone. Both are now forward-tracked side by side (`ef_*` columns / green line in the weekly chart).\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ===== Executable late-drift momentum (forward test) =====\n",
    "# Rule (non-look-ahead): wait to the last pre-KO snapshot; if the Kalshi mid has\n",
    "# drifted toward our side since entry, \"bet\" at the LATE ask (p_win = late pin_fair).\n",
    "# Pricing at the late ask is what removes the look-ahead; the ask barely moves.\n",
    "FORWARD_CUTOFF = '2026-06-14'      # game_date > this = genuine OOS (rule frozen 2026-06-15)\n",
    "GAME = ['game_date', 'home', 'away']\n",
    "\n",
    "_late = (pre.sort_values('ts').groupby(GAME, as_index=False).tail(1)\n",
    "           .rename(columns={'kalshi_home_mid': 'late_home_mid', 'kalshi_away_mid': 'late_away_mid',\n",
    "                            'kalshi_home_ask': 'late_home_ask', 'kalshi_away_ask': 'late_away_ask',\n",
    "                            'pin_fair_home': 'late_home_pf',   'pin_fair_away': 'late_away_pf'})\n",
    "           [GAME + ['late_home_mid', 'late_away_mid', 'late_home_ask',\n",
    "                    'late_away_ask', 'late_home_pf', 'late_away_pf']])\n",
    "\n",
    "md = sig.merge(_late, on=GAME, how='left')\n",
    "md['entry_mid'] = md.apply(lambda r: r[f'kalshi_{r.side}_mid'], axis=1)\n",
    "md['late_mid']  = np.where(md.side == 'home', md.late_home_mid, md.late_away_mid)\n",
    "md['late_ask']  = np.where(md.side == 'home', md.late_home_ask, md.late_away_ask)\n",
    "md['late_pf']   = np.where(md.side == 'home', md.late_home_pf,  md.late_away_pf)\n",
    "md = md.dropna(subset=['entry_mid', 'late_mid', 'late_ask', 'late_pf'])\n",
    "md = md[(md.late_ask > 0) & (md.late_ask < 1)].copy()\n",
    "md['drift']     = md.late_mid - md.entry_mid\n",
    "md['momentum']  = md['drift'] >= 0                          # mid moved toward our side\n",
    "md['edge']      = md['late_pf'] > md['late_ask']            # positive edge at the late (decision) ask\n",
    "md['late_odds'] = 1.0 / md['late_ask']                      # executable: pay the late ask\n",
    "md['late_net']  = np.where(md.won == 1, md.late_odds - 1, -1.0)\n",
    "\n",
    "def _kelly_growth(rows, odds_col, p_col):\n",
    "    \"\"\"quarter-Kelly compounding; returns (n, final_bankroll, per-bet geometric growth).\"\"\"\n",
    "    br = BANKROLL0; n = 0\n",
    "    for _, r in rows.iterrows():\n",
    "        f = kelly_fraction(r[p_col], r[odds_col])\n",
    "        if f <= 0:\n",
    "            continue\n",
    "        stake = min(max(f * br, MIN_STAKE), br)\n",
    "        br += stake * (r[odds_col] - 1) if r.won else -stake\n",
    "        n += 1\n",
    "    g = (br / BANKROLL0) ** (1.0 / n) - 1 if n else 0.0\n",
    "    return n, br, g\n",
    "\n",
    "rows = []\n",
    "for label, sub in [('IN-SAMPLE', md[md.game_date <= FORWARD_CUTOFF]),\n",
    "                   ('FORWARD',   md[md.game_date >  FORWARD_CUTOFF])]:\n",
    "    if len(sub) == 0:\n",
    "        rows += [(label, 'baseline(all,early)', 0, 0, 0, 0),\n",
    "                 (label, 'momentum(drift>=0,late)', 0, 0, 0, 0),\n",
    "                 (label, 'edge(pf>ask,late)', 0, 0, 0, 0)]\n",
    "        continue\n",
    "    b, m, e = sub, sub[sub.momentum], sub[sub.edge]\n",
    "    _, _, bg = _kelly_growth(b, 'odds', 'p_win')\n",
    "    _, _, mg = _kelly_growth(m, 'late_odds', 'late_pf')\n",
    "    _, _, eg = _kelly_growth(e, 'late_odds', 'late_pf')\n",
    "    rows.append((label, 'baseline(all,early)', len(b), b.won.mean()*100, b.net.mean()*100, bg*100))\n",
    "    rows.append((label, 'momentum(drift>=0,late)', len(m), m.won.mean()*100, m.late_net.mean()*100, mg*100))\n",
    "    rows.append((label, 'edge(pf>ask,late)', len(e), e.won.mean()*100, e.late_net.mean()*100, eg*100))\n",
    "\n",
    "mom_tbl = pd.DataFrame(rows, columns=['slice', 'strategy', 'n', 'WR%', 'flat_ROI%', 'kelly_g/bet%']).round(3)\n",
    "print(f\"Executable late-drift momentum  (forward cutoff {FORWARD_CUTOFF})\")\n",
    "print(mom_tbl.to_string(index=False))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# ===== equity curves, each indexed by its OWN bet count (fair comparison) =====\n",
    "def _equity(rows, odds_col, p_col):\n",
    "    br = BANKROLL0; eq = []\n",
    "    for _, r in rows.sort_values('ts').iterrows():\n",
    "        f = kelly_fraction(r[p_col], r[odds_col])\n",
    "        if f > 0:\n",
    "            stake = min(max(f * br, MIN_STAKE), br)\n",
    "            br += stake * (r[odds_col] - 1) if r.won else -stake\n",
    "        eq.append(br)\n",
    "    return eq\n",
    "\n",
    "base_eq = _equity(md, 'odds', 'p_win')\n",
    "mom_eq  = _equity(md[md.momentum], 'late_odds', 'late_pf')\n",
    "edge_eq = _equity(md[md.edge], 'late_odds', 'late_pf')\n",
    "try:\n",
    "    import plotly.graph_objects as go\n",
    "    fig = go.Figure()\n",
    "    fig.add_trace(go.Scatter(y=base_eq, mode='lines', name=f'baseline (all, early)  n={len(base_eq)}'))\n",
    "    fig.add_trace(go.Scatter(y=mom_eq,  mode='lines', name=f'momentum (drift>=0, late)  n={len(mom_eq)}'))\n",
    "    fig.add_trace(go.Scatter(y=edge_eq, mode='lines', name=f'edge (pf>ask, late)  n={len(edge_eq)}'))\n",
    "    fig.add_hline(y=BANKROLL0, line_dash='dot', line_color='gray')\n",
    "    fig.update_layout(title='Executable late-drift momentum vs baseline (quarter-Kelly, indexed by own bet #)',\n",
    "                      xaxis_title='bet number (own)', yaxis_title='bankroll ($)', template='plotly_white')\n",
    "    fig.write_html('E:/soccer/research/strategy_momentum.html')\n",
    "    fig.show()\n",
    "except ImportError:\n",
    "    print('plotly not installed; finals -> baseline', round(base_eq[-1] if base_eq else BANKROLL0, 0),\n",
    "          ' momentum', round(mom_eq[-1] if mom_eq else BANKROLL0, 0),\n",
    "          ' edge', round(edge_eq[-1] if edge_eq else BANKROLL0, 0))\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}