A Withdrawal Rate Calculator That Draws Down to Zero

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.

Worked on my laptop, hung in production: the same code behaving differently on a server
Continue reading “The Bug That Ate a Day: It Only Hung in Production”

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.

Diagram of porting an Excel and Solver model to a Python and Flask web app
Continue reading “Porting My 20-Year-Old Excel Models to Python”

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.

Player exposure grid showing which players appear across a set of fantasy lineups
Continue reading “One Good Lineup Is Easy. Twenty Is the Hard Part.”

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.

Diagram of a multi-position player eligible for several roster slots in a fantasy lineup
Continue reading “The Multi-Position Trick I Retired From My Optimizer”