stock-debate — deterministic bull/bear/PM verdict engine (v2)
Objective: maximize absolute, probability-weighted upside subject to a realistic, dated catalyst and constructive momentum. Cheapness alone is never a buy; a big drawdown is never a buy; a no-revenue/TAM-story moonshot is never a buy. Produce an honest, decision-grade verdict by (1) locking the numbers deterministically and date-stamping them, (2) checking the growth is real, (3) clearing three hard gates, (4) running an adversarial bull/bear/PM debate, (5) scoring on the 5-lens framework, and (6) returning a clean-slate verdict with an entry, an expected-value, and the remaining crack.
Hard rules: never recommend a buy without a cash check; never margin (cash ≥ 0). Confirm trade details before any execution. This skill ENDS at analysis — it does not place trades.
Step 1 — Deterministic data FIRST (source of truth; never news/memory for numbers)
Every price / multiple / trajectory in the verdict must trace to a deterministic pull below, and each metric must be date-stamped (record the as-of / latest-quarter date). The #1 error is a stale or misread number — guard it explicitly: if the pulled data predates the company's most recent earnings date, re-pull.
Primary in Cowork — Alpha Vantage MCP (structured, one call covers most of the screen):
COMPANY_OVERVIEW(TICKER)→ forward P/E, trailing P/E, PEG, EV/EBITDA, EV/Revenue, P/S, margins, ROE, AnalystTargetPrice + rating spread, 50d & 200d MA, 52-week high/low, revenue/earnings growth,LatestQuarter(use as the freshness stamp).EARNINGS_ESTIMATES(TICKER)→ forward EPS + revenue estimates (for durable-PEG, Step 2).CASH_FLOW(TICKER)+BALANCE_SHEET(TICKER)→ compute EV/FCF and FCF margin (the FCF-first lens).EARNINGS_CALENDAR/ earnings date → the catalyst gate clock.RSI,MACD,ADX(andSMA50/200 if not in overview) → the momentum gate.NEWS_SENTIMENT(TICKER)→ recent catalysts / sentiment.- Budget: free key = 25 requests/day, ~1/sec. Batch ≤ 20 names/day, space calls, and stamp
Metrics Updated. Reserve calls for the deep-dive shortlist; do not refresh all ~100 in one batch.
Fallback / cross-check — WebFetch (routes through Anthropic's fetch service; free, no entitlement):
- Valuation screen →
https://stockanalysis.com/stocks/TICKER/statistics/(price, fwd P/E, PEG, EV/FCF, EV/EBITDA, P/S, FCF margin, margins, ROE). NOTE: this page is often JS-rendered — if WebFetch returns a shell, escalate to the Chrome tools or rely on the Alpha Vantage pull. - Overview / revenue trajectory →
.../stocks/TICKER/and.../financials/?p=quarterly(last ~6 quarters' revenue + YoY% → Accelerating / Flattening / Decelerating). - Foreign 20-F/ADR filers with no page →
WebSearchthe latest IR release.
Live price & options → the Robinhood connector (get_equity_quotes, get_option_chains;
account-connected, works in Cowork). Use Robinhood for the current print; Alpha Vantage close can lag.
Macro/regime → WebSearch "SPY vs 200-day MA [month year]" (BULL above / BEAR below); also note
VIX and the 10-yr yield trend (long-duration software is rate-sensitive). Never cite a macro
catalyst from memory — verify the year.
Local alternative (machine with outbound HTTP, not Cowork): python scripts/finnhub_metrics.py TICKER and python scripts/cohort_trajectory_sec.py TICKER (SEC XBRL trajectory; paths relative to
the repo root). Cowork sandbox
blocks outbound HTTP from python/curl, so scripts are local-only.
Forward PEG note: the screen PEG / fwd P/E is a screen only — Step 2 recomputes durable PEG on the organic forward growth rate from the actual earnings release.
Step 2 — Growth-quality / PEG-TRAP check (highest-value step)
A low PEG on juiced or backward-looking growth is a trap. Before trusting any multiple, recompute PEG on DURABLE FORWARD growth. Strip out: one-time pull-forwards / term-license / EOL recognition; M&A-inflated reported growth (find the ORGANIC ex-acquisition rate); payments-VOLUME growth (use recurring GP / ARR, not blended revenue); one-time margin steps that pop EPS; float / interest revenue that reverses as rates ease.
durable PEG = fwd P/E ÷ durable forward growth %. If durable PEG ≫ screen PEG, the "cheap" thesis
fails. Pull NRR / RPO / organic-ex-M&A from the primary earnings release / 8-K / transcript
(WebSearch / Tavily), never a news summary. EV/EBITDA is often n/m for pre-EBITDA SaaS — lean on
EV/FCF + FCF margin. When FCF is negative, EV/FCF is also n/m → require a credible, dated path
to FCF and judge EV/S against durable growth; if the only support is TAM narrative, it fails the
quality floor (Step 2.5c).
Step 2.5 — THREE HARD GATES (a BUY must clear all three)
These encode the objective. A name failing any gate cannot be a BUY — cap it at WAIT/HOLD/AVOID.
(a) Catalyst gate. There must be a concrete, dated, realistic catalyst within ~2 quarters (earnings, product GA, contract/PPA, regulatory decision, guide-raise cadence). "Cheap and patient" is not a catalyst. No catalyst → max verdict = WAIT (or HOLD if already owned on merit).
(b) Momentum gate. Do not initiate a BUY into a confirmed downtrend — i.e. price below a falling 50d AND 50d < 200d (death cross), or RSI < ~40 with negative MACD. A large drawdown is a reason for caution, not a buy signal. Such names are WAIT with an explicit reclaim trigger (e.g. "buy on a reclaim of the 50d at $X on volume"). Constructive = price ≥ rising 50d, or 50d ≥ 200d, or basing with RSI 45–65 turning up. (Momentum is timing for exits/trims but a gate for entries.)
(c) Quality / moonshot floor. AVOID if: pre-revenue or no profit path; negative FCF with no credible dated path; valuation justified only by TAM/story; or a sub-scale single-product binary. Caps the speculative tail regardless of how large the "upside" looks.
Mega-cap durable compounders (CRM/NOW/WDAY/PANW-type) get extended-relevance benefit of the doubt on the momentum gate; the kill-signal for them is growth decelerating, not a price wobble.
Step 3 — Run the bull/bear/PM debate
For 1–2 tickers, reason inline. For a basket, use Opus subagents, pipeline per ticker:
parallel(bull, bear) → PM. Each agent receives the LOCKED, date-stamped numbers (cannot
hallucinate price/valuation) and may WebSearch ONLY for recent catalysts.
- Bull — strongest evidence-based long case: moat/bottleneck + pricing power, durable growth, the dated catalyst, and the momentum setup.
- Bear — strongest case against: commoditization/participant risk, deceleration, disruption, valuation, technical/momentum breakdown, governance, the binary that could break it.
- Portfolio manager — assign bull/base/bear scenario probabilities, compute a prob-weighted ~12m expected value (EV) and the skew, check the three gates, then decide.
Step 4 — Score on the 5 lenses (bottleneck-first)
- Bottleneck vs participant (primary) — owns a supply/demand chokepoint with pricing power (system-of-record, data gravity, switching cost) vs a commoditizable participant. Cheap participant = value trap; durable bottleneck = earns its multiple.
- Trajectory (2nd derivative) — Accelerating / Flattening / Decelerating.
- Absolute growth — actual YoY% level vs same-size peers.
- Valuation (FCF-first) — durable-PEG (Step 2), FCF margin, EV/FCF over Rule-of-40.
- Momentum (GATE for entries; context for exits) — 50/200d position & slope, RSI/MACD, 52w position. Per the objective this is a gate on new buys, not a tie-breaker. → AI-bifurcation bucket: Accelerant / Survivor / Disrupted.
Step 5 — Verdict (clean-slate) + EV + the crack
Judge every name as if you held none of it: "would I initiate today, at this price?" Held is a tax footnote. A BUY requires: all three gates cleared + prob-weighted 12m EV ≥ ~+20–25% with positive skew. Rank BUYs by EV.
Taxonomy (mapped to the Stock Pool hub Decision):
| Verdict | Hub Decision | Meaning |
|---|---|---|
| CONVICTION BUY | Conviction Buy | Top-EV, all gates clear, durable bottleneck at a fair durable-growth price |
| BUY | Buy | Own today; gates clear; EV hurdle met |
| ACCUMULATE / SCALE | Accumulate | Quality you want, but stage in (momentum not yet constructive, or in a defined entry zone) |
| WAIT | Watch | Right name, wrong level/timing — give the explicit entry/reclaim trigger |
| HOLD | Hold/Keep | Held, own-on-merit, no add |
| TRIM (keep core) | Trim | Durable but extended/expensive and still growing → right-size, don't exit |
| REDUCE | Reduce / Sell-Exit | Extended and decelerating, or thesis broken → sell down/out |
| AVOID | Avoid | Participant / value trap / price-not-moat / moonshot |
End with:
- The crack — is the thesis bulletproof, or is there a remaining crack? State the one thing that most threatens it.
- Entry / size — entry level(s); size by regime (smaller in BEAR), conviction, and portfolio fit (penalize adding to an already-crowded factor — e.g. if the book is already concentrated in one theme, a new name in that theme competes with that concentration). Never exceed cash; never margin.
- Monitor (what flips this) — the single metric whose change reverses the verdict.
- Confidence drivers — LOWER for: thin coverage, foreign 20-F filers, undisclosed NRR, a pre-earnings binary, heavy M&A/payments/float distortion, or data older than the last earnings.
- Point-in-time — date-stamp the verdict; re-run at next earnings.
Triangulate the target — don't lean on the sell-side AnalystTargetPrice alone (lagging/optimistic, and discount it when rating dispersion is wide). Cross-check with reverse-DCF or a forward-EPS × justified-multiple.
Write-back to the Stock Pool — Master Hub
If the user keeps the Notion hub, offer to update the per-name row, mapping:
Decision (taxonomy above) · Fwd P/E · PEG (durable) · Tgt Upside % · Trend
(Uptrend/Mixed/Downtrend from the momentum gate) · Last Px + Px Checked (Robinhood) ·
Metrics Updated (Alpha Vantage LatestQuarter/today) · Rationale (one-line thesis + the crack) ·
Key Metrics (durable-PEG, EV/FCF, FCF margin, growth). Always stamp the freshness dates so staleness
is visible. Per-name analysis page title stays TICKER — YYYY-MM-DD — VERDICT.