Red-team risk analysis · 2026 Calcutta

Portfolio Stress Test — how the partnership loses money

Adversarial audit of the recommended bid portfolio. Every optimistic assumption is assumed wrong; each failure mode is quantified in dollars against a $2,500 stake.

VERDICT: thin and fragile — likely −EV in a live room. Play small or not at all.
The model shows the portfolio at +611 EV (+24%), but that survives only if every optimistic assumption holds at once. Each individually plausible adverse assumption erases roughly the whole edge; any two stacked turn it negative. The realistic pessimistic case is -$561 (-18% ROI), and even the model's own best case loses money 39% of the time and loses half the stake 20% of the time. The only documented edge rests on 2 sandbagger teams and a single anomalous backtest year.
+611
Model baseline net EV (everything goes right)
-$561
Pessimistic-but-plausible net EV
20%
Chance of losing ≥50% of stake (best case)
39%
Chance of losing money (best case)

1. What's known — verified against the data

Re-derived from 2024-25 prices joined to real finishes, paying exact prices and exact flight payouts (winner 70% / runner-up 30% of the payout pool; 10% of the pot directed to the shootout).

Strategy (1 team/flight)2024 ROI2025 ROI
Buy the favorite (priciest)-38.2%+18.0%
Buy the cheapest-1.7%-8.3%
Buy everything (whole pot)-10.0%-11.1%
The "favorites win" thesis hangs on one year. Favorites won 2/18 flights in 2024 (11% — worse than the 17% random baseline) but 6/15 in 2025 (40%). Price–finish rank correlation was a weak +0.259 / +0.2213. 2025 cannot be distinguished from noise — and it is the only year the strategy worked.

2. The portfolio under attack

Best dollar-edge teams, one per flight, ≤$2,500 at est_price. Fair value = P(win)·0.70·0.90·pot + P(2nd)·0.30·0.90·pot, reproduced from the bid sheet.

FltTeamP(win)PotFairPriceEdgeSandbag
20Barnes + Smelcer30.0%$1,200$288$200+88
9Wood + Estes32.2%$4,000$986$700+286yes
12Wright + Gadsby21.6%$3,300$603$500+103yes
8Nodar + Heslep20.5%$4,700$814$700+114
15Alexander + Lambeth17.6%$2,700$418$400+18

Baseline (everything goes right): spend $2,500 → EV return $3,111 → net +611 (+24%). This is the number under test.

Pot caveat: the bid sheet's own flight pots sum to $84,100, higher than the ~$76k projection cited. Every fair value is proportional to the pot, so a lighter room already shrinks all edges ~10% before any other stress.

3. Failure modes, ranked by $ impact

EV hit vs. the +611 baseline, each mode in isolation. Bars scaled to the largest hit.

#Failure modeMechanismEV hitNet afterSeverity
1Efficient marketPrice = unbiased fair value-$861-$250
2Pot -25% (fixed price)Room spends less; our prices already committed-$778-$167
3Winner's curse / overpayWe win bidding wars - pay our max-bid ceiling-$600-$8
4Buyback adverse selectionOwners reclaim winners (own 50%), dump losers (own 100%)-$319+$292
5Sandbag doesn't convertFlagged teams regress halfway to field average-$247+$363
6First right of refusalStrong teams pulled at the $2,000 cap; we get the weaker pool-$141+$470

Pot projection sweep (±30%, fixed prices)

Pot vs. projection-30%-20%-10%base+10%+30%
Net EV-$323-$12+$299+$611+$922+$1,544

Our cost is fixed once we bid; the pot is not. A pot 20% light zeros the edge; 30% light is a loss.

Sandbag concentration risk

64% of the portfolio's entire edge (+$390 of +$611) comes from just 2 sandbagger teams. If the room also bids them up, edge → +$221. If the sandbag doesn't convert in the 2-man net better-ball, edge → +$363.

Precedent: Williford — the headline confirmed sandbagger — finished 5th in flight 7 in 2025 despite a scratch-level game. Individual ball-striking does not reliably win a team match-play points race.

4. Combined "pessimistic but plausible"

Pay max-bid + pot 15% light + sandbag converts 75% + no buyback relief → net -$561 on $3,100 spent (-18% ROI).
And this excludes buyback adverse selection and first-right-of-refusal, either of which deepens the loss.

5. Variance / risk of ruin

200k-sim Monte Carlo on the model-optimistic portfolio (own 100%, model correct — the best case).

+$615
Mean P&L
+$461
Median P&L
39%
P(lose money)
20%
P(lose ≥50% of stake)
7%
P(total wipeout — 0 teams cash)
~$0
Mean P&L under buyback adverse selection

Even assuming the model is right, we lose money 2 years in 5 and lose half the stake 1 year in 5. 5 teams on $2,500 is over-concentrated for a near-zero-edge, high-variance game.

6. Verdict & mitigations

The edge is real only on paper and rests almost entirely on 2 sandbagger teams and a single anomalous backtest year (2025). Play small, or not at all. If the partnership plays anyway:

  1. Bet smaller. Cut the stake to $1,000–1,500. The edge is small; the variance is huge.
  2. Only buy strictly below value — never at the ceiling. Hard walk-away $200+ below est_price. The only defense against the winner's curse (alone worth −$600).
  3. Avoid favorites / expensive flights. Favorites lost 38% in 2024 and carry the most absolute downside. Skip anything over ~$700.
  4. Concentrate on verified-cheap, results-backed sandbaggers — demand the result, not the reputation. Williford's 5th is the cautionary tale.
  5. Treat the buyback as the owner's option against you. Price every team as if you keep 100% of losers and 50% of winners.
  6. Walk-away discipline on the pot. If the room bids light early, re-anchor your max bids downward in real time.
  7. Diversify if you must play big — more small positions cut the 7% wipeout risk.
Assumptions & limitations. Fair value reproduced exactly from the bid sheet (flight-only; shootout equity ~0). Backtest covers 2024-25 only — the n=2 is itself the caveat. Name-join 99%+. MC treats flights as independent (one team/flight). Buyback (owner foresight 60%), first-refusal (20% regression), sandbag-failure (50% regression) are deliberately moderate, not worst-case — harsher defensible values make the verdict worse. All probabilities are the model's own shrunk values: we attacked the model on its own terms. Generated by backtest.py + stresstest.py + make_report.py; figures in backtest_results.json / stress_results.json.