Salta ai contenuti

/dcf-valuation

Cosa fa. Calcola il valore intrinseco con un modello DCF.

Quando usarlo. Per una valutazione fondata sui flussi di cassa.

Argomenti. TICKER

Esempio. /dcf-valuation AAPL

Cosa restituisce. Ipotesi (crescita, WACC, terminale), scenari bear/base/bull e barra del fair value.

Quando lanci /dcf-valuation, Dexter non esegue codice fisso: invia all’AI la prompt qui sotto — il segnaposto {arg} viene sostituito con ciò che scrivi dopo il comando — e l’agente la esegue chiamando da sé gli strumenti necessari. Vedi Come funzionano i comandi per le convenzioni comuni (chiamate in parallelo, anti-allucinazione, fasi, widget di chiusura).

Strumenti che può usare: get_sec_financials, get_balance_sheets, get_key_ratios, get_analyst_estimates, get_stock_price, get_company_info, get_cash_flow_statements, render_value_range, show_ticker_link.

Flusso/visualizzazione: chiude con la barra del fair value (render_value_range) e i pulsanti di dettaglio (show_ticker_link).

È la prompt esatta inviata all’AI quando usi il comando (sostituendo {arg}).

Calculate the intrinsic value of {arg} via a rigorous DCF model.
FIRST, before writing anything, call ALL of these tools in ONE single parallel step — every figure must come from them, write N/A if missing, NEVER from memory and NEVER from earlier turns in this conversation. Pass ONLY the parameters shown (no source):
- get_sec_financials(ticker={arg}, metric=revenue, period=annual, limit=7)
- get_sec_financials(ticker={arg}, metric=operating_income, period=annual, limit=7)
- get_sec_financials(ticker={arg}, metric=operating_cash_flow, period=annual, limit=7)
- get_sec_financials(ticker={arg}, metric=capex, period=annual, limit=7)
- get_sec_financials(ticker={arg}, metric=depreciation, period=annual, limit=3)
- get_sec_financials(ticker={arg}, metric=interest_expense, period=annual, limit=1)
- get_sec_financials(ticker={arg}, metric=income_tax_expense, period=annual, limit=3)
- get_balance_sheets(ticker={arg}, period=annual, limit=1) → total_debt, cash_and_equivalents, current_investments (missing → 0), outstanding_shares
- get_key_ratios(ticker={arg}) → beta, debt_to_equity, market_cap, enterprise_value, free_cash_flow_per_share, revenue_growth
- get_analyst_estimates(ticker={arg}, period=annual) → forward EPS by fiscal year (implied growth, cross-check)
- get_stock_price(ticker={arg}) → current price
- get_company_info(ticker={arg}) → sector, industry
Make NO other tool call unless a value you need is missing (then use the closest available tool once, e.g. get_cash_flow_statements if operating_cash_flow is absent).
## Model
1. FCF = operating_cash_flow − capex (GAAP, preferred) over the 7-year history. Fallback: UFCF = EBIT × (1 − tax rate) + D&A − CapEx − ΔNWC, showing each component (tax rate = income_tax_expense / pre-tax operating income).
2. Growth rate: historical FCF CAGR with a 10-20% haircut; volatile FCF → weight analyst implied EPS growth more heavily. Cross-check against revenue_growth (key_ratios). Cap at 15%.
3. Project 5 explicit years, decaying the growth rate annually (×0.95, ×0.90, ×0.85, ×0.80 for years 2-5), then terminal value via Gordon Growth at 2-3% perpetual growth (≤ long-run GDP). Motivate the revenue path with drivers where the data allows (price × volume × mix), not just a single CAGR.
4. WACC via CAPM: Ke = Rf + β×ERP (Rf 4%, ERP 5-6%, beta from key_ratios, Blume-adjusted). Kd = interest_expense / total_debt, tax-affected. Weight Ke/Kd with a TARGET capital structure (industry-typical, not the current one). Start from the company's sector range below, then apply the adjustments:
| Sector | Base WACC |
|---|---|
| Communication Services / Consumer Discretionary / Financials / Health Care / Materials | 8-10% |
| Consumer Staples | 7-8% |
| Energy | 9-11% |
| Industrials | 8-9% |
| Information Technology | 8-12% (higher end for high-growth) |
| Real Estate | 7-9% |
| Utilities | 6-7% |
Adjustments: +1-2% high debt (D/E > 1.5) or small cap (< $2B); +0.5-3% emerging-markets exposure, concentrated customers, or regulatory uncertainty; −0.5-1% moat/market leader or recurring revenue. Sanity: WACC should sit 2-4% below ROIC for value-creating companies (if ROIC available).
5. Enterprise value = Σ PV(projected FCF) + PV(terminal value). Equity value = EV − net debt (total_debt − cash_and_equivalents − current_investments). Intrinsic value per share = equity / outstanding_shares.
6. Sanity checks — if any fails, revisit WACC or growth before presenting: implied EV within ~30% of reported enterprise_value; terminal value 50-80% of total EV for a mature company (>90% = growth too high); per-share value in the rough range of free_cash_flow_per_share × 15-25.
7. Terminal cross-check (ONE line): state an exit EV/EBITDA multiple typical for the sector, the implied per-share value, and reconcile any large gap with the Gordon result.
## Scenarios
Bear / Base / Bull with explicit assumption changes (revenue growth, margins, WACC, terminal growth) and probability weights. Compute the probability-weighted fair value — this is your central estimate.
## Sensitivity (MANDATORY)
ONE 5×5 table: WACC (5 values around your base, ~0.5-1% step) as rows vs terminal growth rate (5 values around 2.5%) as columns. Intrinsic value per share per cell, each marked ✅ undervalued vs current price, ⚠️ roughly fair, ❌ overvalued.
## Output
| Assumption | Bear | Base | Bull |
|------------|------|------|------|
[revenue growth, margins, WACC, terminal growth]
| Scenario | Intrinsic Value | Upside/Downside |
|----------|----------------|-----------------|
**Fair Value Range:** $X–$Y
**Recommendation:** BUY (if >20% upside) / HOLD (0–20%) / SELL (below current)
State all critical assumptions clearly. Flag the assumption that would invalidate the thesis if wrong.
Output rules (the terminal renders plain Markdown):
- NO HTML tags and NO LaTeX/$...$ math. Write every formula as plain text, e.g. "Ke = Rf + β×ERP = 4.45% + 1.10×5.0% = 9.95%".
- This is a VALUATION command — do NOT call render_price_chart (that's for price-trend analysis). The bar is the ONLY visual widget here.
- Write the COMPLETE report FIRST — model, scenarios, sensitivity table, recommendation, key assumptions. ONLY THEN, as the very LAST action, call render_value_range (low=Bear, base=probability-weighted fair value, high=Bull, current price, method="DCF", scenarios=[Bear/Base/Bull with a one-line note each], caption e.g. "Fair value $15.05–$33.22, central $22.32 → HOLD vs $21.55") TOGETHER WITH show_ticker_link for {arg} in the SAME step. They render the bar and the detail buttons and END your turn: do NOT introduce them with a sentence and write NOTHING after these calls. Calling the bar mid-report truncates your answer.
FINAL STEP (mandatory — your answer is NOT complete without these calls): render_value_range + show_ticker_link for {arg}, in the same step, as the very last thing you emit. No introducing sentence, no prose after them.