RoastMyFolio Logo
RoastMyFolio

Methodology

Last updated: 24.05.2026

We sell a roast that calls itself brutally honest. Honesty starts here — with the exact models, prompts, and data we use, plus a clear list of things we explicitly don't do. Skim it before you trust the output.

How the roast is generated

Each portfolio you submit is processed in three deterministic stages. The LLM runs exactly once per portfolio — whether you pay or not. Payment unlocks the locked sections of a roast that has already been written and cached; it does not trigger a second LLM call.

  • Screenshot OCR (if you upload an image): we call gemini-3-flash-preview to extract a JSON list of holdings. No image is stored after extraction.
  • Currency normalization: deterministic code (no LLM) converts non-USD positions and computes percentage weights against your total. This step runs in a Cloudflare Worker — see /worker/src/currencyNormalizer.js.
  • Roast generation: the normalized portfolio plus our published prompt are sent to gemini-2.5-pro. The prompt is the “Five Blades of Execution” structure — Opening Salvo, five themed critiques (concentration, correlation, cost, behavior, recovery), and a Redemption Arc. Output targets 600–800 words.
  • Asset analytics (background, anonymized): we call gemini-2.5-flash-lite to track which asset names appear across roasts so we can prioritize what to improve. Names only — no portfolio composition, no user identity.

Data sources

  • The portfolio itself: whatever you paste or upload. We do not connect to your broker. We do not look up live prices. The roast reasons over the data you give us, period.
  • CFTC Commitments of Traders (used by our weekly newsletter, not the per-portfolio roast): published Friday 3:30 PM ET by the U.S. Commodity Futures Trading Commission. Source: cftc.gov.
  • Research we cite in blog posts: Vanguard, Morningstar, S&P Dow Jones SPIVA, DALBAR. Specific studies are linked inline in the post that cites them — citations live in the article, not in this hub.

What we explicitly don't do

  • No buy or sell recommendations for individual securities. The roast critiques the portfolio you submitted; it doesn't direct you to trade.
  • No persistent storage of your portfolio. Each roast is cached in Cloudflare KV with a 24-hour TTL so you can pay and return to read it; after 24 hours it's deleted automatically.
  • No broker integration. We don't hold credentials, we can't place trades, and we have no read access to any account.
  • No personal data tied to portfolios. We don't require an account to roast. Analytics tracks usage in aggregate via Google Analytics with GDPR consent gating — see our Privacy Policy.
  • No forward-looking forecasts. The roast is retrospective analysis of the portfolio composition you submitted — concentration, correlation, fee drag, behavioral patterns. It does not predict prices.
  • Not financial advice. Full terms in our Disclaimer.

Known limitations of the LLM

Large language models hallucinate. Ours can too. Specifically:

  • Ticker / ISIN ambiguity: if you submit only a short ticker, the model may guess the wrong listing. Include the full security name or ISIN when you want precision.
  • Fee estimates: when a fund's expense ratio isn't in the model's training data, the roast estimates a typical fee for that asset class. Estimates are flagged as such in the cost section; verify against the fund's factsheet before acting.
  • Asset class assignment: edge-case holdings (e.g., closed-end funds, structured notes, niche ETFs) can be miscategorized. The concentration critique is only as good as the categorization.
  • No live data: prices, holdings, and underlying-index composition are frozen at the model's training cutoff. Recent reconstitutions or splits may not be reflected.

Who's behind it

Keeping this honest

Model names, prompt structure, and storage TTLs change. The “Last updated” date at the top of this page is the source of truth for when this description matched production. If you find a drift between what this page says and what the service actually does, that's a bug — email support@roastmyportfolio.com and we'll fix the page or the service.