After I put the Roth conversion tool online, the question I kept getting wasn’t about conversions at all. It was simpler and scarier: “OK, but how much can I actually spend?” Almost every withdrawal rate calculator answers that by multiplying your savings by 4% and calling it a day. So I added a mode to my own optimizer that throws the flat percentage out and solves for the real number — the most you can spend every year while drawing every account down to zero by the end of the plan.
Continue reading “A Withdrawal Rate Calculator That Draws Down to Zero”The Bug That Ate a Day: It Only Hung in Production
This is the last post in my series on rebuilding my daily fantasy lineup optimizer (it all starts here). The math was the easy part. This post is about the day I lost to a bug that didn’t exist on my computer and only showed up once the tool was on a real server — the kind of problem that makes you question your sanity before you find it.

Porting My 20-Year-Old Excel Models to Python
This is part five of my series on rebuilding my old daily fantasy lineup optimizer (the series kicks off with how I got into this). The earlier posts were about the math. This one is about the move itself: taking a model that lived in an Excel workbook for over a decade and turning it into a web app anyone can use without installing anything. It’s the same journey I’m making with all my old Operations Research models, one at a time.

One Good Lineup Is Easy. Twenty Is the Hard Part.
This is part four of my series on the daily fantasy lineup optimizer I rebuilt this year (the series starts with the origin story). Everything up to now has been about finding the single best lineup. Here’s the uncomfortable truth that took me a while to accept: the single best lineup is the easy part, and it’s not what wins tournaments. The hard, interesting problem is building a set of lineups that are each strong but smartly different. That’s where the real work — and the real edge — lives.

The Multi-Position Trick I Retired From My Optimizer
This is part three of my series on rebuilding the daily fantasy lineup optimizer I started in Excel in 2012 (start here if you missed the first one). This post is about a small, clever trick I used in the spreadsheet for years to handle players who can fill more than one position — and why, when I rebuilt the tool, I deliberately threw it away.

