On April 3rd, Milwaukee was 5-22 and one of the worst teams in the country.
Some of their losses:
Run-ruled 21-7 by LSU
Run-ruled 20-3 by Duke
Run-ruled 14-4 by Minnesota
Run-ruled 12-2 by SEMO
Run-ruled 17-1 by Purdue
Run-ruled 14-1 by NKU
Run-ruled 13-2 by Wright State
Run-ruled 16-2 by Notre Dame
Run-ruled 14-4 by UNLV
They finished the regular season 22-31, but won the Horizon League tournament and earned an autobid to the NCAA tournament.
Milwaukee beat #4 Auburn 13-8, beat UCF 13-6, and is now in a regional final, one win away from going to supers.
College Baseball.
the other day i watched a video on markov chains.
a markov chain is a model for a sequence of events where the next state depends only on the current state, not on how you got there.
keeping with last week's mlb-pe app theme, i built mlb-markov. you can get it on my github.
offense tab:
treat baseball as a game of states. the states are base-out situations: bases empty, no outs; runner on first, one out; bases loaded, two outs; and so on. 24 of them, plus the three-outs state that ends the inning.
every at-bat moves the game from one state to another. a single with a man on first might take you from "runner on first, one out" to "first and second, one out."
the app counts every one of those moves across a full season and turns them into probabilities. that answers the real question: from any situation, how many runs does a team tend to score before the inning ends?
pick a team and you can see where they beat or trail league average — and whether they score even more once the inning already has runs on the board.
pitching tab:
same idea, different states. here a state is the count, and the chain is the sequence of pitches.
pick a pitcher and a count, say 0-2. the app looks at every pitch they threw in that count and shows what tends to come next. after a fastball on 0-2, what's usually coming? those are just transition probabilities again.
it also scores how predictable the pitcher is. if almost every 0-2 pitch is the same thing, the chain is easy to guess. if the pitches are spread evenly, it's a coin flip. that's the edge a hitter is hunting for — and the model puts a number on it.
learning tab:
i break down the formulas and explanations behind what the app is doing.
home tab:
load game data. you need to back fill a lot of game data, first run can take multiple minutes. updates go much faster only pulling in recentlry completed games.
one thing to be clear on: these aren't the odds of the guy at the plate getting a hit or striking out. it's the team-level probability of moving from one state to the next, averaged over a whole season of at-bats in that situation.
starting a new project. build a dedicated futures trading charting system with strategy builder with something other than damn pine script. this is project might take a while i think.
i like trying to do a sports data project each week and share it on saturdays. its been awhile since i did one.
was going through old repos and i found a pythagorean expectation model i did in R. I thought i would turn it into a desktop app. this wont have an edge, but bill james pythagorean expectation is a clean way to look at a teams expected wins based on their runs scored and runs allowed.
I added in a starting-pitcher adjustment, home-field advantage, and a recent-form L20 blend, shows you the league standings, surfaces model-flavored team stats, and teaches you how the math works.
open source on my github with instructions on how to load up the app and get started with it. a good entry point for learning a different model or building on top of.
i dont like the spam feeling of kirby posting every day.
i put together the skills that kirby uses to automate my sports and market news. i replaced my models projections with projections from dratings and link to the scraper you can self host.
if you looking for projections or ai game breakdowns. i can setup a telegram channel and kirby can past the full proejctions and game breakdowns.
i have been working on this git explorer macOS desktop app that turns your projects folder into a navigable tree of git repos, with status, diffs, and one-click staging. nice way to manage git locally.
Made some updates to my open-source PGA Tour API packages (R + Python).
•Added multi-stat / multi-year batching to pga_stats()
•Filled out API coverage with 3 new endpoints (content, odds config, speed rounds)
•Hardened the transport: retries on 5xx, timeouts, env-var key override, verbose debug mode
•Fixed silent parser bugs (dropped seasons, phantom fields, miscoded types)
•Built an 89-test offline suite