How Vinebot works
An homage to Aswath Damodaran's discipline: a company is worth the present value of its expected cash flows, and a credible story must drive every number.
1 · Rotate & screen
Each trading day the bot deep-dives the least-recently-covered S&P 500 names (sector-balanced), so coverage marches through the whole index every cycle. For each name it pulls fundamentals and five-year revenue/margin history (yfinance), scores recent news with a local model (qwen3-30b), and runs a deterministic baseline valuation from industry-prior drivers — the no-LLM benchmark every deep dive is measured against.
2 · Story → drivers (GPT-5.5)
GPT-5.5 (via the ai-router gateway) writes the business story and sets the value drivers — revenue growth, operating margin, reinvestment efficiency (sales-to-capital), risk (beta, failure probability), and the forecast horizon (5–15 years; long runways must be earned by a durable moat). On re-coverage it sees its previous drivers and must justify material changes — the thesis evolves, it doesn't restart. Any driver the model fails to supply is filled from the deterministic default and flagged.
3 · Compute, don't hallucinate
The model only supplies assumptions. Python runs the math, with a model per business type: FCFF DCF for operating companies, excess-return (residual income) for banks, insurers, lenders, utilities and automakers, FFO/AFFO for REITs. Capitalized operating leases are treated as an operating cost (rent already sits in the margin), not double-counted as debt; the bridge subtracts net financial debt, minority interest and preferred; equity is floored at zero (limited liability); terminal growth never exceeds the risk-free rate.
4 · Rate against the market, not the model's mood
A strict value model tends to call the whole index expensive — one macro opinion drowning 500 stock picks. So the bot solves for the implied equity risk premium: the ERP at which the median covered name is fairly priced given our own cash-flow views (Damodaran's implied-ERP idea, computed from our coverage). Every stock is then re-valued at that ERP, and ratings come from this market-neutral margin of safety — BUY means cheap relative to how the market is pricing everything else. The house (absolute) view is published separately as a market-level dial. Prices and ratings are marked to market daily across the whole coverage set — no month-old prices.
5 · Keep score, honestly
Every rating is a tracked call (dividend-adjusted, direction-adjusted, vs SPY) over 7 to 365-day horizons, plus a simulated top-10-buys portfolio. The same scorecard is computed for the deterministic baseline's ratings, so the marginal value of the LLM step is measured, not assumed — see the track record.
Honest limits
DCF is sensitive to its inputs; free data can be stale or wrong; nine days of track record proves nothing. This is a research experiment, not advice.
Inspiration & credit
Vinebot is my own take on the DBOT created by Vasant Dhar (with Joao Sedoc) — their work on systematizing Aswath Damodaran's valuation thinking with large language models is the reason this project exists. The implementation here is independent, but the idea is theirs; the discipline is Damodaran's. Credit where it's due.
Vinebot is an automated research experiment that estimates intrinsic value using public data and large language models. It is NOT investment advice, a solicitation, or a recommendation to buy or sell any security. Outputs may be wrong, stale, or incomplete. Do your own research.