{"meta":{"v":2,"slug":"sa20","name":"SA20","sport":"Cricket","kind":"match","season":"2027","season_key":"2027","generated_at":"2026-11-12T00:11:28+00:00","crown":"title","round_name":"Match","home_word":"Home ground","draws":false,"versus":false,"participant":"team","group_label":"League","official_table":false,"table_note":"The 2026 final table: the new season hasn't started yet.","table_columns":[["no_result","NR"],["nrr","NRR"],["bonusPoints","BP"]],"points":"bonus4","periods":0,"period_minutes":0,"clock_up":false,"live":true,"outdoor":true},"teams":{"DSG":{"name":"Durban's Super Giants","short":"Durban's Super Giants","abbr":"DSG","home_city":"Durban"},"JSK":{"name":"Joburg Super Kings","short":"Joburg Super Kings","abbr":"JSK","home_city":"Johannesburg"},"MCT":{"name":"MI Cape Town","short":"MI Cape Town","abbr":"MCT","home_city":"Cape Town"},"PC":{"name":"Pretoria Capitals","short":"Pretoria Capitals","abbr":"PC","home_city":"Centurion"},"PR":{"name":"Paarl Royals","short":"Paarl Royals","abbr":"PR","home_city":"Paarl"},"SEC":{"name":"Sunrisers Eastern Cape","short":"Sunrisers Eastern Cape","abbr":"SEC","home_city":"Gqeberha"}},"slate":[{"id":"espn-1547230","date":"2027-01-17","home":"SEC","away":"PC","time":"2027-01-17T13:30Z","venue":"Gqeberha","note":"Match 1","p":[0.6443,0.0,0.3557],"elo":[1541,1493],"wpm":{"kind":"normal","mu":19.916,"sigma":53.84}},{"id":"espn-1547231","date":"2027-01-18","home":"PR","away":"JSK","time":"2027-01-18T15:30Z","venue":"Paarl","note":"Match 2","p":[0.5992,0.0,0.4008],"elo":[1501,1486],"wpm":{"kind":"normal","mu":13.526,"sigma":53.84}},{"id":"espn-1547232","date":"2027-01-19","home":"PC","away":"DSG","time":"2027-01-19T15:30Z","venue":"Centurion","note":"Match 3","p":[0.5834,0.0,0.4166],"elo":[1493,1490],"wpm":{"kind":"normal","mu":11.335,"sigma":53.84}},{"id":"espn-1547233","date":"2027-01-20","home":"MCT","away":"JSK","time":"2027-01-20T15:30Z","venue":"Cape Town","note":"Match 4","p":[0.5826,0.0,0.4174],"elo":[1489,1486],"wpm":{"kind":"normal","mu":11.232,"sigma":53.84}},{"id":"espn-1547234","date":"2027-01-21","home":"DSG","away":"SEC","time":"2027-01-21T15:30Z","venue":"Durban","note":"Match 5","p":[0.5048,0.0,0.4952],"elo":[1490,1541],"wpm":{"kind":"normal","mu":0.648,"sigma":53.84}},{"id":"espn-1547235","date":"2027-01-22","home":"MCT","away":"PR","time":"2027-01-22T15:30Z","venue":"Cape Town","note":"Match 6","p":[0.5617,0.0,0.4383],"elo":[1489,1501],"wpm":{"kind":"normal","mu":8.362,"sigma":53.84}},{"id":"espn-1547236","date":"2027-01-23","home":"DSG","away":"PC","time":"2027-01-23T11:00Z","venue":"Durban","note":"Match 7","p":[0.5736,0.0,0.4264],"elo":[1490,1493],"wpm":{"kind":"normal","mu":9.991,"sigma":53.84}},{"id":"espn-1547237","date":"2027-01-23","home":"JSK","away":"SEC","time":"2027-01-23T15:30Z","venue":"Johannesburg","note":"Match 8","p":[0.4998,0.0,0.5002],"elo":[1486,1541],"wpm":{"kind":"normal","mu":-0.028,"sigma":53.84}},{"id":"espn-1547238","date":"2027-01-24","home":"PR","away":"MCT","time":"2027-01-24T13:30Z","venue":"Paarl","note":"Match 9","p":[0.5951,0.0,0.4049],"elo":[1501,1489],"wpm":{"kind":"normal","mu":12.959,"sigma":53.84}},{"id":"espn-1547239","date":"2027-01-26","home":"PC","away":"SEC","time":"2027-01-26T15:30Z","venue":"Centurion","note":"Match 10","p":[0.5098,0.0,0.4902],"elo":[1493,1541],"wpm":{"kind":"normal","mu":1.324,"sigma":53.84}},{"id":"espn-1547240","date":"2027-01-27","home":"DSG","away":"PR","time":"2027-01-27T15:30Z","venue":"Durban","note":"Match 11","p":[0.5625,0.0,0.4375],"elo":[1490,1501],"wpm":{"kind":"normal","mu":8.466,"sigma":53.84}},{"id":"espn-1547241","date":"2027-01-28","home":"SEC","away":"JSK","time":"2027-01-28T15:30Z","venue":"Gqeberha","note":"Match 12","p":[0.6534,0.0,0.3466],"elo":[1541,1486],"wpm":{"kind":"normal","mu":21.242,"sigma":53.84}},{"id":"espn-1547242","date":"2027-01-29","home":"PR","away":"PC","time":"2027-01-29T15:30Z","venue":"Paarl","note":"Match 13","p":[0.5895,0.0,0.4105],"elo":[1501,1493],"wpm":{"kind":"normal","mu":12.184,"sigma":53.84}},{"id":"espn-1547243","date":"2027-01-30","home":"SEC","away":"MCT","time":"2027-01-30T11:00Z","venue":"Gqeberha","note":"Match 14","p":[0.6496,0.0,0.3504],"elo":[1541,1489],"wpm":{"kind":"normal","mu":20.682,"sigma":53.84}},{"id":"espn-1547244","date":"2027-01-30","home":"JSK","away":"DSG","time":"2027-01-30T15:30Z","venue":"Johannesburg","note":"Match 15","p":[0.5736,0.0,0.4264],"elo":[1486,1490],"wpm":{"kind":"normal","mu":9.99,"sigma":53.84}},{"id":"espn-1547245","date":"2027-01-31","home":"PC","away":"PR","time":"2027-01-31T13:30Z","venue":"Centurion","note":"Match 16","p":[0.5674,0.0,0.4326],"elo":[1493,1501],"wpm":{"kind":"normal","mu":9.139,"sigma":53.84}}],"live":[],"recent":[],"power":[{"team":"SEC","rating":1541.3,"start":1541.3,"season_change":0.0,"month_change":0.0,"played":0,"wins":0,"losses":0,"draws":0,"gf":0,"ga":0,"form":"","rank":1},{"team":"PR","rating":1500.9,"start":1500.9,"season_change":0.0,"month_change":0.0,"played":0,"wins":0,"losses":0,"draws":0,"gf":0,"ga":0,"form":"","rank":2},{"team":"PC","rating":1493.1,"start":1493.1,"season_change":0.0,"month_change":0.0,"played":0,"wins":0,"losses":0,"draws":0,"gf":0,"ga":0,"form":"","rank":3},{"team":"DSG","rating":1489.6,"start":1489.6,"season_change":0.0,"month_change":0.0,"played":0,"wins":0,"losses":0,"draws":0,"gf":0,"ga":0,"form":"","rank":4},{"team":"MCT","rating":1489.0,"start":1489.0,"season_change":0.0,"month_change":0.0,"played":0,"wins":0,"losses":0,"draws":0,"gf":0,"ga":0,"form":"","rank":5},{"team":"JSK","rating":1486.1,"start":1486.1,"season_change":0.0,"month_change":0.0,"played":0,"wins":0,"losses":0,"draws":0,"gf":0,"ga":0,"form":"","rank":6}],"table":[{"team":"SEC","played":10,"wins":5,"draws":2,"losses":3,"gf":0,"ga":0,"gd":0,"points":28.0,"pct":0.5,"no_result":2,"nrr":1.762,"bonusPoints":4},{"team":"PC","played":10,"wins":5,"draws":1,"losses":4,"gf":0,"ga":0,"gd":0,"points":24.0,"pct":0.5,"no_result":1,"nrr":0.218,"bonusPoints":2},{"team":"PR","played":10,"wins":5,"draws":1,"losses":4,"gf":0,"ga":0,"gd":0,"points":24.0,"pct":0.5,"no_result":1,"nrr":-0.922,"bonusPoints":2},{"team":"JSK","played":10,"wins":4,"draws":2,"losses":4,"gf":0,"ga":0,"gd":0,"points":22.0,"pct":0.4,"no_result":2,"nrr":0.045,"bonusPoints":2},{"team":"DSG","played":10,"wins":3,"draws":3,"losses":4,"gf":0,"ga":0,"gd":0,"points":19.0,"pct":0.3,"no_result":3,"nrr":-0.068,"bonusPoints":1},{"team":"MCT","played":10,"wins":3,"draws":1,"losses":6,"gf":0,"ga":0,"gd":0,"points":14.0,"pct":0.3,"no_result":1,"nrr":-1.013,"bonusPoints":0}],"odds":{"columns":[["top4","Make play-offs"],["top2","Top two"],["final","Reach final"],["champion","Win title"]],"rows":[{"team":"SEC","points":25.0967,"wins":5.6562,"draws":0.0,"gd":52.1028,"p_first":0.2696,"positions":[0.2696,0.2073,0.1713,0.1438,0.1179,0.0901],"p_top4":0.792,"p_top2":0.4769,"p_final":0.4889,"p_champion":0.2721},{"team":"PR","points":22.3389,"wins":5.0308,"draws":0.0,"gd":2.6554,"p_first":0.1685,"positions":[0.1685,0.1699,0.1703,0.1715,0.1626,0.1572],"p_top4":0.6802,"p_top2":0.3384,"p_final":0.3375,"p_champion":0.1657},{"team":"DSG","points":21.5663,"wins":4.856,"draws":0.0,"gd":-11.1435,"p_first":0.1396,"positions":[0.1396,0.1653,0.1659,0.1715,0.1724,0.1853],"p_top4":0.6423,"p_top2":0.3049,"p_final":0.3066,"p_champion":0.1447},{"team":"PC","points":21.5643,"wins":4.8537,"draws":0.0,"gd":-10.7892,"p_first":0.1487,"positions":[0.1487,0.1512,0.1671,0.1684,0.1832,0.1814],"p_top4":0.6354,"p_top2":0.2999,"p_final":0.298,"p_champion":0.1439},{"team":"JSK","points":21.3464,"wins":4.8107,"draws":0.0,"gd":-16.2758,"p_first":0.1373,"positions":[0.1373,0.1536,0.1624,0.1689,0.1817,0.1961],"p_top4":0.6222,"p_top2":0.2909,"p_final":0.2863,"p_champion":0.1372},{"team":"MCT","points":21.3017,"wins":4.7926,"draws":0.0,"gd":-16.5497,"p_first":0.1363,"positions":[0.1363,0.1527,0.163,0.1759,0.1822,0.1899],"p_top4":0.6279,"p_top2":0.289,"p_final":0.2827,"p_champion":0.1364}],"sims":10000,"noise":40,"points":"bonus4"},"outlook":null,"track":{"markets":{"sources":[],"collecting":[{"key":"bk","name":"Bookmakers (Pinnacle, DraftKings, bet365)","n":0,"stored":false},{"key":"pm","name":"Polymarket","n":0,"stored":false},{"key":"ks","name":"Kalshi","n":0,"stored":false}]},"adjustment":null,"preseason":null,"returning":null,"weather":{"coverage":{"games":130,"with":130,"sources":{"station":123,"reanalysis":7}},"weight":0.0,"kept":false,"holdout_with":{"n":60,"log_loss":0.696424520050373,"brier":0.25141527992719703,"accuracy":0.5833333333333334},"holdout_without":{"n":60,"log_loss":0.696424520050373,"brier":0.25141527992719703,"accuracy":0.5833333333333334},"rough_n":0,"rough_with":{"n":0},"rough_without":{"n":0},"thresholds":{"rain":1.5,"wind":35}},"params":{"k":9.600000000000001,"home":55,"carry":1.0,"draw":0.0,"mov":false,"new":0.0,"playoff_k":1.0,"wx":0.0,"adj":0.0,"pre":0.0,"ret":0.0},"tuned":{"params":{"k":9.600000000000001,"home":55,"carry":1.0,"draw":0.0,"mov":false,"new":0.0,"playoff_k":1.0,"wx":0.0,"adj":0.0,"pre":0.0},"tuned_at":"2026-09-24T15:30:50+00:00","tune_seasons":["2023","2024"],"holdout_seasons":["2025","2026"],"note":"Fit on the tuning seasons only. Re-fit with --retune."},"holdout":["2025","2026"],"tune":["2023","2024"],"per_season":[{"season":"2023","key":"2023","holdout":false,"tuning":true,"model":{"n":31,"log_loss":0.6783395707251652,"brier":0.2426406276562131,"accuracy":0.5806451612903226},"base":{"n":31,"log_loss":0.6749542973709419,"brier":0.2409477964021325,"accuracy":0.6129032258064516},"form":{"n":31,"log_loss":0.7263574726318983,"brier":0.2656683507045213,"accuracy":0.45161290322580644},"market":{"n":0}},{"season":"2024","key":"2024","holdout":false,"tuning":true,"model":{"n":32,"log_loss":0.6883791873436264,"brier":0.24759342588707384,"accuracy":0.5625},"base":{"n":32,"log_loss":0.6934750670591866,"brier":0.25014863258026143,"accuracy":0.5625},"form":{"n":32,"log_loss":0.6808996498821703,"brier":0.24400144739147678,"accuracy":0.5},"market":{"n":0}},{"season":"2025","key":"2025","holdout":true,"tuning":false,"model":{"n":31,"log_loss":0.6581307720268963,"brier":0.23247296409348642,"accuracy":0.6774193548387096},"base":{"n":31,"log_loss":0.6432989678576155,"brier":0.2252215104905833,"accuracy":0.7419354838709677},"form":{"n":31,"log_loss":0.6615840014968819,"brier":0.2341862681572478,"accuracy":0.6774193548387096},"market":{"n":0}},{"season":"2026","key":"2026","holdout":true,"tuning":false,"model":{"n":29,"log_loss":0.7373592162134,"brier":0.271663962370129,"accuracy":0.4827586206896552},"base":{"n":29,"log_loss":0.7253603792487049,"brier":0.265990815531592,"accuracy":0.3793103448275862},"form":{"n":29,"log_loss":0.7587487287700428,"brier":0.2817181824671583,"accuracy":0.3793103448275862},"market":{"n":0}}],"holdout_scores":{"model":{"n":60,"log_loss":0.696424520050373,"brier":0.25141527992719703,"accuracy":0.5833333333333334},"base":{"n":60,"log_loss":0.6829619833633092,"brier":0.2449266745937376,"accuracy":0.5666666666666667},"form":{"n":60,"log_loss":0.708546953012243,"brier":0.25716002674037125,"accuracy":0.5333333333333333},"market":{"n":0}},"market_pair":null,"calibration":[{"label":"30–40%","n":15,"predicted":0.37094429630275183,"actual":0.4},{"label":"40–50%","n":45,"predicted":0.4391452019319437,"actual":0.4222222222222222},{"label":"50–60%","n":45,"predicted":0.5608547980680563,"actual":0.5777777777777777},{"label":"60–70%","n":15,"predicted":0.6290557036972481,"actual":0.6}],"form_fit":{"scale":150,"home":50,"draw":0},"base_rates":[0.5689655172413793,0.0,0.43103448275862066],"three_way":false,"titles":{"seasons":[{"season":"2025","champion":"MCT","p_pre":0.1153,"p_mid":0.1925,"favourite":"SEC","p_favourite":0.277,"field":6},{"season":"2026","champion":"SEC","p_pre":0.2285,"p_mid":0.3295,"favourite":"SEC","p_favourite":0.2285,"field":6}],"n":2,"log_loss_pre":1.8182,"log_loss_base":1.7918,"fav_won":1,"fav_expected":0.51}},"about":["A team's home ground is the city it plays in most; it gets home advantage there and nowhere else. Matches abandoned without a result are left out.","A win by wickets is turned into runs (about eight a wicket) so the size of a win can move the rating."],"glossary":[],"notes":["Franchise T20 results are close to a coin flip before a ball is bowled: on the held-back seasons the model is about level with the base rate (see the track record).","Tested on the held-back seasons of the five franchise leagues together (566 matches) and left out, because none beat the ratings alone: player ratings from every men's T20 match (runs above average with bat and ball, or an Elo for each player's XI, which follows a player between leagues), the share of a side's XI kept from last season (what auctions and retentions change), one set of model settings for every league, and counting balls to spare as well as wickets in a chase's winning margin.","The toss isn't in the model: its winner went on to win 52% of these leagues' matches, but it is decided half an hour before the start, after the forecast is made, and on the held-back seasons it helped by less than the noise.","The play-off sides aren't named on the fixtures list until the league stage ends; the simulation plays them from the simulated table until then.","Cricsheet adds matches a few days after they're played, so the latest result can lag."],"sources":[["Cricsheet","https://cricsheet.org/","Every SA20 match ball by ball since 2023"],["SA20","https://www.sa20.co.za/matches","The coming season's fixtures, grounds and start times"],["Meteostat and Open-Meteo","https://meteostat.net/","Weather at the ground"]],"downloads":[{"file":"/data/sa20/csv/games.csv","label":"Every 2027 game with our pre-game probabilities","rows":30},{"file":"/data/sa20/csv/ratings.csv","label":"Current ratings","rows":6},{"file":"/data/sa20/csv/standings.csv","label":"The table","rows":6},{"file":"/data/sa20/csv/season_odds.csv","label":"Season simulation","rows":6},{"file":"/data/sa20/csv/track_record.csv","label":"Track record by season","rows":4},{"file":"/data/sa20/csv/all_games.csv","label":"Every game in the model's history, with the pre-game probability","rows":130}],"parts":{"explorer":1}}