skills/_archived/profit-driven-development/SKILL.md
--- name: profit-driven-development description: The north star for all sports prediction work — future predictive accuracy and profitability. Every backtest, every parameter change, every algorithm decision must be evaluated against one question: will this make the NEXT picks more correct and more profitable? Prevents getting lost in endless optimization loops that overfit the past. Always-on for sports code sessions. weight: light --- # Profit-Driven Development — Never Lose Sight of the Goal
npx skillsauth add nhouseholder/nicks-claude-code-superpowers skills/_archived/profit-driven-developmentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
We are trying to predict the future and make money.
Not fit the past. Not optimize a metric. Not make a backtest look impressive. The ONLY thing that matters is:
Will this change make the algorithm pick MORE winners on games that haven't happened yet?
If the answer isn't clearly "yes" — stop, step back, and ask why you're doing it.
This skill ONLY activates when working on code in directories containing sports prediction files (e.g., files with 'backtest', 'picks', 'odds', 'predictions', 'coefficients' in their names or paths), OR when the user explicitly mentions sports/betting/prediction work. Do NOT fire on general-purpose code.
When active, this skill is the permanent background voice that asks "but will it actually work on FUTURE games?"
Before modifying any part of the sports prediction system, answer:
Not "does this improve accuracy on 2024 data" but "if a game happens TOMORROW, does this change make the pick better?"
If you can't articulate HOW it improves future predictions, don't make the change.
| Fitting the Past (BAD) | Learning a Pattern (GOOD) | |------------------------|--------------------------| | "This weight works great on last season's data" | "This factor captures a real-world dynamic that will repeat" | | "Accuracy went up 2% when I added this parameter" | "This corrects for a known bias in the base model" | | "The optimal value for games 1-500 is 0.173" | "Recent form matters more than season averages because injuries and momentum are real" | | "Adding 5 more features boosted R²" | "This single feature captures information the model currently misses" |
The ultimate gut check. If the change makes the backtest look better but you wouldn't actually increase your bet size because of it — it's probably overfitting.
Here's what typically happens:
The fix: After EVERY backtest result, ask: "Is this improvement because I found a real signal, or because I tried enough variations that one happened to fit the noise?"
A change is likely real signal if: robust across time periods, parameter value makes domain sense, mechanism is explainable in plain English, meaningful effect size, confirmed on holdout data, model stays simple.
A change is likely overfitting if: improvement requires 4th decimal place precision, optimal parameter defies domain knowledge, only works on one data subset, 10+ variations tried with marginal gains, disappears on different time periods, you can't explain WHY it works.
Every change should be evaluated in terms of actual betting outcomes:
| Metric | What It Means | Why It Matters | |--------|--------------|----------------| | Win rate | % of picks that win | Must beat the vig threshold (~52.4% at -110) | | ROI | Profit per dollar wagered | The real bottom line | | CLV (Closing Line Value) | Did you beat the closing line? | Best predictor of long-term profitability | | Drawdown | Worst losing streak | Even profitable systems have losing runs — is it survivable? | | Edge consistency | Does the edge persist across time? | A 60% win rate for one month then 45% forever = no edge |
An algorithm that wins 53% consistently is worth more than one that wins 58% on backtested data but is overfit.
If you've run 5+ backtests on the same feature with minor tweaks and haven't found a clear signal:
Before ANY backtest:
If you can't fill these in, you don't have a hypothesis — you're just trying stuff.
After EVERY backtest result:
NO algorithm change ships to production without ALL of these passing:
Granular analysis first — Run the analysis at the tightest increment (+25 for odds, per-category for bet types) BEFORE writing any code. If an aggregate analysis says "gate +150-200" — break it down first. The aggregate may hide profitable sub-ranges.
Reconcile contradictions — If the same metric gives different values across analyses, STOP. The methodology is wrong. Find out why before acting. (See: DEC_DEADZONE_PREMATURE_DEPLOY in anti-patterns.md)
Minimum threshold — Marginal improvements below +0.10u per event are noise, not signal. Don't implement gates for +0.04u/event savings.
Backtest BEFORE deploy — Run a full backtest with the gate applied BEFORE committing. Compare total P/L to the pre-gate baseline. If P/L drops by more than 2u, the gate is wrong.
Understand the mechanics — Before gating an odds range, trace what happens to BOTH wins and losses in that range. Blocking a range blocks profitable longshots too, not just the losses you see in the aggregate.
Never deploy then analyze — The sequence is: analyze → granular breakdown → backtest with gate → compare → THEN deploy. Never deploy first and analyze after.
tools
Unified context management and session continuity skill. Combines total-recall, strategic-compact, /ledger, and session continuity. Runs in background to preserve critical context across compaction and sessions.
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
tools
Suggest /ultraplan for complex planning tasks on Claude Code CLI (2.1.91+ only). Research preview.
tools
UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 9 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient. Integrations: shadcn/ui MCP for component search and examples.