Honest equity valuation, in your browser.
A 10-year DCF. Multiples shown as labelled context. A factor model in research mode. Built around one rule: the headline number has to mean what it says.
Why I built this
I wanted a DCF tool where I could read every assumption, change one, and watch the headline move.
Most retail valuation tools either hide the math behind a single fair-value number, or bury it in a spreadsheet that nobody actually opens. AXIOM is my attempt at the version I wanted to use — a clean DCF, multiples shown as context, and every magic number in the codebase written down in one place.
Walkthrough
Three moments. Ninety seconds.
Each moment captures one slice of the workflow. Watch them in sequence and you’ve seen the whole product.
01 / 03
Type a ticker. Get a fair value.
Enter any US ticker. AXIOM pulls fundamentals from Yahoo Finance, routes the company through one of 9 archetype frameworks (banks get P/B, REITs get P/FFO, mature businesses get a clean DCF), and projects 10 years forward. First lookup takes a few seconds; cached after that.
02 / 03
A clean 10-year DCF. Every cell auditable.
One formula. No blending. The CAPM-derived WACC pulls credit spreads from a Damodaran-style table; terminal growth is capped below WACC. The same math drives the headline and the sensitivity table — change an input, the output recalculates live.
03 / 03
Comparables sit beside it — never folded in.
EV/EBITDA and P/E live next to the DCF as labelled context. Peer tickers link to their Yahoo Finance pages so the comp set is verifiable. Drag a multiple slider to stress the comp — the DCF headline stays put. The two views never blend into one number.
Architecture
How a ticker becomes a fair value.
Six stages. The DCF produces the headline. Comparables sit beside it as context. The factor model is in research mode — IC and t-stat are being measured walk-forward in monitor.py, not yet a user-facing signal.
Yahoo Finance
Fundamentals + price
Archetype Router
9 frameworks
Clean DCF
CAPM + credit spreads
Comp Multiples
54-tag table
Factor Model
Research mode
Fair Value
Bear / Base / Bull
Methodology
Five rules.
01
The headline number means what it says.
The fair value at the top of the page is a DCF output. Multiples are shown next to it as context, never blended in. No silent re-weighting.
02
Every assumption is written down.
A HARDCODED_VALUES.md file inventories every hand-set constant in the codebase, alongside a phased plan to migrate them to live peer-comp estimates. The known unknowns are documented.
03
Different businesses get different math.
A 9-archetype router (FINANCIAL, GROWTH, MATURE, CYCLICAL, HIGH_CAPEX, HYPER_GROWTH, TURNAROUND, DISTRESSED, STABLE_GROWTH) selects the formula. A 54-tag sub-sector table calibrates the multiples used for context.
04
The factor model is in research mode.
A V/M/Q (value/momentum/quality) Z-scoring layer exists, but it isn't the headline. Its skill is being measured via Information Coefficient + quintile hit rates over walk-forward horizons in monitor.py — not yet shipped as a user-facing signal.
05
Built and shipped by one person.
Flask + PostgreSQL + Python on the back end, vanilla JS on the front. yfinance for data. Limitations come with the territory — see "what this isn't" below.
Stack
What this isn’t (yet)
Honest limits.
01 · Data
Fundamentals come from yfinance — free, but rate-limited and occasionally stale. Some balance-sheet ratios returned by yfinance have unit inconsistencies; ratios known to be unreliable (ROE, ROIC, D/E, Altman Z) are currently hidden from the UI rather than shown wrong.
02 · Hardcoded constants
Sub-sector multiples and a few WACC inputs are still hand-set. Every one of them lives in HARDCODED_VALUES.md with a phased plan to replace them with live peer-comp computation.
03 · Factor model
The V/M/Q factor signal is in research mode. IC and t-stat tracking are wired up in ml/monitor.py, but the model isn’t shown to end users as a recommendation yet.
04 · Coverage
US-listed equities only. International tickers, ADRs without US listings, and derivatives are out of scope. Banks and REITs use simpler P/B and P/FFO models — no full DCF for those archetypes.
05 · Not investment advice
The fair value depends on the assumptions. Change one input and the headline changes. AXIOM is a tool for thinking through valuation, not a recommendation engine.
06 · Built solo
One person, learning in public. There are bugs. There are rough edges. The point is the methodology and the willingness to write down what’s actually under the hood.
The math is in the repo. So are the limitations.
Every assumption is logged. Every formula is in Python you can read. The magic numbers have a file with their names on it.