Learn Without Walls

Module 11: Stocks & Equity Valuation

Understanding equity as a claim on random future cash flows

Part III of 5 Module 11 of 22

1. What a Stock Actually Is

When you buy a share of stock, you are purchasing a fractional ownership claim on a company. But what does "ownership" mean in concrete, measurable terms? It means you hold a claim on the company's future cash flows — dividends, buyback proceeds, and ultimately the residual value if the company is ever liquidated. From a statistical perspective, each of these future cash flows is a random variable.

Stats Bridge

A stock is a claim on a sequence of random variables {C1, C2, C3, ...} representing future cash flows. The stock price is the market's estimate of E[∑t=1 Ct / (1+r)t] — the expected present value of this infinite random series. Buying a stock is literally buying a realization from a stochastic process.

This framing immediately clarifies several things that confuse newcomers to finance:

1.1 Equity vs. Debt: Random vs. (Nearly) Deterministic

A useful contrast: when you buy a bond (which we cover in Module 12), you receive a nearly deterministic stream of cash flows (fixed coupon payments). When you buy a stock, you receive a random stream. This is the fundamental risk-return tradeoff:

Property Bond (Debt) Stock (Equity)
Cash flow nature Nearly deterministic (fixed coupons) Random variable (dividends, growth)
Statistical analogue Constant + small noise Stochastic process with drift
Priority in bankruptcy Senior claim (paid first) Residual claim (paid last)
Upside potential Bounded (you get your coupons + principal) Unbounded (if company grows)
Downside risk Limited (default risk) Can lose 100% of investment
Distribution of returns Approximately normal, low variance Fat-tailed, higher variance, skewed
Finance Term

Equity = ownership stake in a company. The word "equity" and "stock" are used interchangeably. A share is one unit of equity. The total number of shares outstanding multiplied by the share price gives the company's market capitalization.

1.2 Common Stock vs. Preferred Stock

There are two main classes of stock. Common stock gives you voting rights and a residual claim on cash flows — but you are last in line during liquidation. Preferred stock is a hybrid: it pays a fixed dividend (like a bond) but has higher priority than common stock in bankruptcy. Think of preferred stock as having a distribution that is less dispersed than common stock but with a lower expected value for upside participation.

Feature Common Stock Preferred Stock
Voting rights Yes (typically 1 vote per share) Usually no
Dividend Variable, at board's discretion Fixed rate, paid before common
Upside participation Full — unlimited Limited — usually capped
Bankruptcy priority Last (after bonds and preferred) After bonds, before common
Return distribution High variance, fat tails Lower variance, more bond-like

2. Discounted Cash Flow (DCF) Valuation

The Discounted Cash Flow model is the foundational framework for valuing any asset that generates future cash flows. The core idea: a dollar received in the future is worth less than a dollar today, so we discount future cash flows back to present value.

V0 = E&bigg;[∑t=1T CFt / (1 + r)t&bigg;] = ∑t=1T E[CFt] / (1 + r)t

where:

Stats Bridge

The DCF formula is just the expected value of a discounted stochastic process. By linearity of expectation, we can move the expectation inside the sum. This is the same mathematical operation you perform when computing the expected present value of a random annuity in actuarial science. The discount factor 1/(1+r)t plays the role of a weighting function that decays exponentially.

2.1 Free Cash Flow to Equity (FCFE)

The "cash flow" in DCF for equity valuation is typically the Free Cash Flow to Equity (FCFE): the cash available to shareholders after all expenses, taxes, reinvestment, and debt payments. The formula is:

FCFE = Net Income + Depreciation − Capital Expenditure − ΔWorking Capital + Net Borrowing

Each component of FCFE is itself a random variable. Net income depends on revenue (random), costs (partially random), and tax rates (subject to policy change). Depreciation follows an accounting schedule but is applied to assets whose useful life is uncertain. Capital expenditure depends on management decisions that respond to market conditions.

2.2 The Gordon Growth Model: A Special Case

If we assume cash flows grow at a constant rate g forever, the infinite DCF sum collapses to a beautifully simple formula:

V0 = CF1 / (r − g)

This is the Gordon Growth Model (or dividend discount model when applied to dividends). It requires r > g for convergence — a condition analogous to requiring a geometric series to have a ratio less than 1.

Key Insight

The Gordon Growth Model is extremely sensitive to the gap (r − g). If r = 10% and g = 5%, the multiplier is 1/(0.10 − 0.05) = 20. But if g increases to 7%, the multiplier jumps to 1/(0.10 − 0.07) = 33.3 — a 67% increase in valuation from a 2 percentage point change in growth. This is why small changes in growth assumptions produce wildly different price targets. In statistics, we would say the estimator has high sensitivity to the nuisance parameter g.

2.3 Two-Stage DCF Model

A more realistic approach divides the future into two phases: a high-growth stage (say 5–10 years) where we project cash flows individually, and a terminal value stage where we assume steady-state growth and apply the Gordon formula. This is analogous to a mixture model with two regimes.

V0 = ∑t=1N E[CFt] / (1+r)t + [CFN+1 / (r − gterminal)] / (1+r)N

The terminal value typically accounts for 60–80% of the total DCF value, which should alarm any statistician — most of the valuation depends on a single assumption about perpetual growth.

Common Pitfall

Analysts often bury aggressive assumptions in the terminal value. A terminal growth rate of 4% vs. 2% can change the valuation by 30–50%. Always run sensitivity analysis on the terminal growth rate and discount rate. Treat the DCF output as a distribution of values, not a point estimate.

2.4 Python Example: Simple DCF Model

Pythonimport numpy as np

def dcf_valuation(initial_fcf, growth_rates, terminal_growth, discount_rate):
    """
    Two-stage DCF model.

    Parameters
    ----------
    initial_fcf : float
        Free cash flow in the most recent year (in millions).
    growth_rates : list of float
        Projected growth rates for the explicit forecast period.
    terminal_growth : float
        Perpetual growth rate after the explicit period.
    discount_rate : float
        Required rate of return (WACC or cost of equity).

    Returns
    -------
    dict with intrinsic_value, pv_explicit, pv_terminal
    """
    # Stage 1: Explicit forecast period
    fcfs = []
    fcf = initial_fcf
    for g in growth_rates:
        fcf = fcf * (1 + g)
        fcfs.append(fcf)

    # Discount each projected FCF back to present
    pv_explicit = 0
    for t, cf in enumerate(fcfs, 1):
        pv_explicit += cf / (1 + discount_rate) ** t

    # Stage 2: Terminal value using Gordon Growth Model
    terminal_fcf = fcfs[-1] * (1 + terminal_growth)
    terminal_value = terminal_fcf / (discount_rate - terminal_growth)
    pv_terminal = terminal_value / (1 + discount_rate) ** len(fcfs)

    intrinsic_value = pv_explicit + pv_terminal

    return {
        'intrinsic_value': intrinsic_value,
        'pv_explicit': pv_explicit,
        'pv_terminal': pv_terminal,
        'terminal_pct': pv_terminal / intrinsic_value * 100,
        'projected_fcfs': fcfs
    }

# Example: Value a company with $500M FCF
result = dcf_valuation(
    initial_fcf=500,          # $500M current FCF
    growth_rates=[0.15, 0.12, 0.10, 0.08, 0.06],  # 5 years of slowing growth
    terminal_growth=0.03,     # 3% perpetual growth
    discount_rate=0.10        # 10% required return
)

print(f"Intrinsic Value: ${result['intrinsic_value']:,.0f}M")
print(f"PV of Explicit Period: ${result['pv_explicit']:,.0f}M")
print(f"PV of Terminal Value: ${result['pv_terminal']:,.0f}M")
print(f"Terminal Value Share: {result['terminal_pct']:.1f}%")

# Sensitivity analysis: vary discount rate and terminal growth
print("\n--- Sensitivity Table (Intrinsic Value in $M) ---")
print(f"{'':>12}", end="")
for tg in [0.02, 0.025, 0.03, 0.035, 0.04]:
    print(f"  g={tg:.1%}", end="")
print()
for dr in [0.08, 0.09, 0.10, 0.11, 0.12]:
    print(f"r={dr:.0%}     ", end="")
    for tg in [0.02, 0.025, 0.03, 0.035, 0.04]:
        v = dcf_valuation(500, [0.15,0.12,0.10,0.08,0.06], tg, dr)
        print(f"  {v['intrinsic_value']:>7,.0f}", end="")
    print()

3. The P/E Ratio as a Sufficient Statistic

The Price-to-Earnings (P/E) ratio is the single most widely used metric in equity valuation. It compresses a complex valuation problem into a single number:

P/E = Stock Price / Earnings Per Share (EPS)

Why is P/E so popular? Because under certain conditions, it acts as a sufficient statistic for relative valuation. If two companies have similar growth prospects, risk profiles, and capital structures, then comparing their P/E ratios tells you which is "cheaper" relative to its earnings power.

Stats Bridge

Recall that a sufficient statistic T(X) captures all the information in the data X about a parameter θ. The P/E ratio acts as a (approximate) sufficient statistic for relative valuation: if you know two companies' P/E ratios and believe their growth and risk are comparable, P/E alone determines which is the better buy. You don't need the full DCF — just as you don't need the entire dataset once you have the sufficient statistic.

3.1 Deriving P/E from the Gordon Growth Model

We can derive what determines P/E from first principles. Start with the Gordon Growth Model V0 = E1 · k / (r − g), where E1 is next year's earnings and k is the payout ratio. Then:

P/E = Price / Earnings = k / (r − g)

This reveals that P/E is driven by three factors:

Factor Effect on P/E Statistical Interpretation
Growth rate (g) ↑ P/E ↑ Higher expected drift of the cash flow process
Discount rate (r) ↑ P/E ↓ Higher required return = more discounting = lower present value
Payout ratio (k) ↑ P/E ↑ More of earnings distributed as observable cash flows

3.2 Trailing vs. Forward P/E

Trailing P/E uses the last 12 months of actual earnings. Think of it as using the sample mean of past earnings as your estimate. Forward P/E uses analyst consensus estimates of next year's earnings — a forecast or posterior predictive mean. Forward P/E is generally more useful because stock prices are forward-looking.

3.3 Sector P/E Comparisons

P/E ratios vary dramatically across sectors because different industries have different growth and risk profiles:

Sector Typical P/E Range Why?
Technology 25–50x High growth expectations, scalable business models
Utilities 12–18x Stable but slow growth, regulated returns
Financials 10–15x Cyclical, opaque balance sheets
Healthcare 18–30x Patent-driven growth, binary outcomes
Consumer Staples 18–25x Defensive, predictable cash flows
Common Pitfall

Never compare P/E ratios across sectors without adjusting for growth. A tech company at 40x P/E may be "cheaper" than a utility at 15x P/E if the tech company is growing at 25%/year while the utility grows at 2%. The PEG ratio (P/E divided by growth rate) attempts to normalize for this, though it has its own issues.

3.4 Python: Computing P/E Ratios

Pythonimport numpy as np
import pandas as pd

# Sample data for major tech companies (illustrative)
tech_stocks = pd.DataFrame({
    'company': ['Apple', 'Microsoft', 'Google', 'Amazon', 'Meta', 'Nvidia'],
    'price': [195, 420, 175, 185, 510, 130],
    'trailing_eps': [6.42, 11.07, 5.80, 2.90, 14.87, 1.74],
    'forward_eps': [7.10, 12.50, 6.80, 4.20, 17.20, 2.80],
    'growth_rate': [0.08, 0.14, 0.18, 0.25, 0.20, 0.40],
})

# Compute valuation metrics
tech_stocks['trailing_pe'] = tech_stocks['price'] / tech_stocks['trailing_eps']
tech_stocks['forward_pe']  = tech_stocks['price'] / tech_stocks['forward_eps']
tech_stocks['peg_ratio']   = tech_stocks['trailing_pe'] / (tech_stocks['growth_rate'] * 100)

print(tech_stocks[['company', 'trailing_pe', 'forward_pe', 'peg_ratio']].to_string(index=False))

# Rank by PEG ratio (lower = more attractive relative to growth)
print("\n--- Ranked by PEG Ratio (lower = potentially cheaper) ---")
ranked = tech_stocks.sort_values('peg_ratio')
for _, row in ranked.iterrows():
    print(f"  {row['company']:>10}: PEG = {row['peg_ratio']:.2f}  "
          f"(P/E = {row['trailing_pe']:.1f}, Growth = {row['growth_rate']:.0%})")

4. Earnings as a Noisy Signal

A company's reported earnings are not a clean measurement of its true economic profitability. Accounting rules, management discretion, and one-time items all inject noise into the reported figure. A statistician should model this explicitly:

Reported Earnings = True Economic Earnings + Measurement Error + Manipulation Bias
Stats Bridge

This is exactly a measurement error model. Let Y = reported earnings, θ = true earnings, ε = noise. Then Y = θ + ε. The signal-to-noise ratio of earnings varies by company and industry. Utilities have high SNR (stable, predictable earnings). Biotech companies have low SNR (earnings driven by binary clinical trial outcomes). When SNR is low, P/E ratios become unreliable because the denominator is dominated by noise.

4.1 Sources of Earnings Noise

Source Nature Statistical Character
Revenue recognition timing When to count a sale Autocorrelated — early recognition borrows from the future
Depreciation methods Straight-line vs. accelerated Systematic bias based on accounting choice
One-time charges Restructuring, legal settlements Heavy-tailed noise — rare but large
Stock-based compensation Non-cash expense, hard to value Measurement error from option pricing models
Inventory valuation FIFO vs. LIFO choice Systematic bias, especially during inflation
Goodwill impairment Write-down of acquisition premium Lumpy, discontinuous — like a regime switch

4.2 Earnings Quality Metrics

Analysts use several metrics to assess "earnings quality" — essentially the SNR of reported earnings:

Key Insight

When earnings quality is low (high noise), you should either (a) use more years of data to average out the noise (Shiller's CAPE ratio uses 10 years of earnings), (b) switch to cash-flow-based metrics which are harder to manipulate, or (c) use revenue multiples instead, since revenue is less subject to accounting discretion.

4.3 Earnings Surprises and Market Reaction

Every quarter, companies report earnings and the market reacts. The key variable is not the level of earnings but the surprise:

Surpriset = (Actual EPSt − Consensus Estimatet) / |Consensus Estimatet|

This is a standardized prediction error. Positive surprises ("beats") drive stock prices up; negative surprises ("misses") drive them down. Interestingly, the market response is asymmetric — misses are punished more severely than beats are rewarded. This is consistent with prospect theory and loss aversion.

5. Dividends vs. Buybacks

Companies return cash to shareholders through two mechanisms: dividends (regular cash payments per share) and share buybacks (the company buys its own stock on the open market, reducing shares outstanding). Both reduce the company's cash holdings but have different statistical and tax implications.

Finance Term

Dividend yield = Annual dividends per share / Stock price. This is the "income return" component of stock ownership. Buyback yield = Dollar amount of shares repurchased / Market cap. The total shareholder yield is the sum of dividend yield and buyback yield.

5.1 Comparison Table

Dimension Dividends Buybacks
Cash delivery Direct cash to all shareholders Cash only to selling shareholders
Tax treatment (US) Taxed as dividend income Deferred until shares are sold (capital gains)
Signal Strong commitment — cuts are punished Flexible — can be paused quietly
Effect on share count No change Reduces shares outstanding, increasing EPS
EPS effect No mechanical effect Increases EPS (same earnings, fewer shares)
Statistical analogue Observable, regular signal Latent variable — must be inferred from share count changes
Stats Bridge

Dividends are an observable variable — you see the cash land in your account. Buybacks are more like a latent variable: they increase your ownership percentage but you don't receive explicit cash. The effect is indirect, operating through an increase in EPS. Detecting the signal of a buyback requires monitoring changes in shares outstanding — essentially a difference-in-differences estimation.

5.2 The Dividend Signaling Hypothesis

Finance theory holds that dividend changes are a signal from management about future prospects. Initiating or increasing a dividend signals confidence in sustained cash flows. Cutting a dividend signals distress. The market reacts accordingly:

This asymmetry means dividends are a sticky commitment. Once established, companies are reluctant to cut them, making dividend-paying stocks behave somewhat more like bonds in their predictability.

6. Market Cap & Enterprise Value

6.1 Market Capitalization

Market capitalization is the simplest measure of a company's total equity value:

Market Cap = Share Price × Shares Outstanding

This is the market's consensus estimate of the present value of all future cash flows to equity holders. Companies are classified by market cap:

Category Market Cap Range Return Distribution Characteristics
Mega-cap > $200B Lower volatility, more normally distributed, high liquidity
Large-cap $10B – $200B Moderate volatility, well-covered by analysts
Mid-cap $2B – $10B Higher volatility, less analyst coverage, potential alpha
Small-cap $300M – $2B High volatility, fat tails, illiquidity premium
Micro-cap < $300M Very high volatility, extreme tails, sparse trading

6.2 Enterprise Value (EV)

Enterprise Value provides a more complete picture by including debt:

EV = Market Cap + Total Debt − Cash & Equivalents

Why? Because if you were to acquire the company, you would pay the market cap (to buy all shares) but also assume its debt (which you must repay) while gaining its cash (which you can use). EV represents the total value of the firm's operations, independent of how they are financed.

Stats Bridge

Think of EV as the total variance of the firm's asset returns, while market cap only captures the equity component. Just as total variance = explained variance + residual variance in an ANOVA decomposition, EV = equity value + net debt. The EV/EBITDA ratio is often preferred over P/E because it is capital-structure neutral — analogous to using a test statistic that is invariant to nuisance parameters.

6.3 EV-Based Multiples

Multiple Formula When to Use
EV/Revenue Enterprise Value / Revenue Pre-profit companies, SaaS metrics
EV/EBITDA Enterprise Value / EBITDA Most widely used; capital-structure neutral
EV/EBIT Enterprise Value / EBIT When depreciation is meaningful (capex-heavy industries)
EV/FCF Enterprise Value / Free Cash Flow Most rigorous; accounts for capital expenditure

7. Growth vs. Value Stocks

One of the most important distinctions in equity investing is between growth stocks and value stocks. These represent two distinct regimes of the return-generating process.

Stats Bridge

Growth vs. value is a regime classification problem. Each stock's return distribution comes from one of two latent regimes (or a mixture). Growth stocks have higher expected returns but also higher variance and more positive skewness. Value stocks have lower expected returns with lower variance. The cross-section of stock returns can be modeled as a two-component mixture distribution.

7.1 Characteristics

Property Growth Stocks Value Stocks
P/E ratio High (25x–100x+) Low (5x–15x)
P/B ratio High (>3x) Low (<1.5x)
Dividend yield Low or zero Higher (2%–5%)
Revenue growth >15%/year <5%/year
Earnings volatility High Lower, more stable
Return distribution High variance, right-skewed Lower variance, more symmetric
Market behavior Outperform in expansions Outperform in recoveries
Examples Tesla, Nvidia, Shopify Berkshire Hathaway, JPMorgan, Exxon

7.2 The Value Premium

The value premium is the historical tendency of value stocks to outperform growth stocks over long horizons. This is one of the most robust findings in empirical asset pricing. On average, value stocks have returned 3–5% more per year than growth stocks since the 1930s.

Two competing explanations exist:

Key Insight

The growth/value distinction maps directly to the bias-variance tradeoff. Value investing is like using a simpler model (low variance, potentially some bias from ignoring growth opportunities). Growth investing is like using a complex model (lower bias in capturing opportunities, but higher variance in outcomes). Neither dominates the other in all market conditions.

7.3 Python: Classifying Stocks by Growth vs. Value

Pythonimport numpy as np
import pandas as pd

# Simulate a universe of 200 stocks with growth/value characteristics
np.random.seed(42)
n = 200

# Latent regime: 0 = value, 1 = growth
regime = np.random.binomial(1, 0.4, n)  # 40% growth, 60% value

# Generate characteristics conditional on regime
pe_ratio = np.where(regime == 1,
    np.random.lognormal(3.5, 0.4, n),   # Growth: high P/E
    np.random.lognormal(2.5, 0.3, n))   # Value: low P/E

pb_ratio = np.where(regime == 1,
    np.random.lognormal(1.5, 0.5, n),   # Growth: high P/B
    np.random.lognormal(0.3, 0.3, n))   # Value: low P/B

div_yield = np.where(regime == 1,
    np.random.exponential(0.005, n),   # Growth: near-zero dividends
    np.random.exponential(0.03, n))    # Value: meaningful dividends

# Generate returns — growth has higher variance
returns = np.where(regime == 1,
    np.random.normal(0.12, 0.30, n),    # Growth: higher E[r], higher vol
    np.random.normal(0.10, 0.18, n))    # Value: slightly lower E[r], lower vol

stocks = pd.DataFrame({
    'pe_ratio': pe_ratio,
    'pb_ratio': pb_ratio,
    'div_yield': div_yield,
    'annual_return': returns,
    'true_regime': np.where(regime == 1, 'Growth', 'Value')
})

# Summary statistics by regime
print("=== Return Distribution by Regime ===")
print(stocks.groupby('true_regime')['annual_return'].describe().round(3))

print("\n=== Characteristic Means by Regime ===")
print(stocks.groupby('true_regime')[['pe_ratio', 'pb_ratio', 'div_yield']].mean().round(3))

# Simple classification using P/E ratio threshold
# (analogous to a decision tree with a single split)
median_pe = stocks['pe_ratio'].median()
stocks['classified'] = np.where(stocks['pe_ratio'] > median_pe, 'Growth', 'Value')

# Classification accuracy
accuracy = (stocks['classified'] == stocks['true_regime']).mean()
print(f"\nClassification accuracy using median P/E split: {accuracy:.1%}")

8. Putting It All Together: A Valuation Framework

Here is a systematic approach to equity valuation that combines all the concepts in this module:

  1. Understand the business: What are the company's cash flow drivers? How stable are they? (Characterize the data-generating process.)
  2. Assess earnings quality: Is the signal-to-noise ratio of reported earnings high enough for P/E-based analysis? If not, use cash flow metrics.
  3. Apply relative valuation: Compare P/E (or EV/EBITDA) to sector peers. Is the stock cheap or expensive relative to comparable companies?
  4. Build a DCF model: Project cash flows, choose a discount rate, estimate terminal value. Run sensitivity analysis on key parameters.
  5. Triangulate: If relative and intrinsic valuation agree, you have stronger evidence. If they disagree, investigate why.
  6. Quantify uncertainty: Never present a point estimate. Give a range. Better yet, simulate the DCF with distributions on each input and present the distribution of intrinsic values.
Key Insight

The best equity analysts think like Bayesian statisticians: they start with a prior (industry P/E, historical growth rate), update as new data arrives (quarterly earnings, management guidance), and maintain a posterior distribution of fair value rather than a single number. The "price target" that Wall Street publishes is just the posterior mean — but the posterior variance matters enormously for position sizing.

8.1 Monte Carlo DCF

Pythonimport numpy as np

def monte_carlo_dcf(base_fcf, n_simulations=10000, n_years=5):
    """
    Monte Carlo DCF with uncertain growth, discount rate, and terminal growth.
    """
    np.random.seed(123)

    # Draw random parameters from prior distributions
    growth_mean = np.random.normal(0.10, 0.03, n_simulations)    # mean growth ~10%
    discount_rate = np.random.normal(0.10, 0.015, n_simulations)  # WACC ~10%
    terminal_g = np.random.normal(0.03, 0.005, n_simulations)    # terminal ~3%

    # Ensure valid parameters
    discount_rate = np.clip(discount_rate, 0.05, 0.20)
    terminal_g = np.clip(terminal_g, 0.01, 0.05)

    values = np.zeros(n_simulations)

    for i in range(n_simulations):
        r = discount_rate[i]
        g = growth_mean[i]
        tg = terminal_g[i]

        # Project FCFs with declining growth
        pv = 0
        fcf = base_fcf
        for t in range(1, n_years + 1):
            annual_g = g * (1 - 0.1 * t) + np.random.normal(0, 0.02)  # declining + noise
            fcf = fcf * (1 + annual_g)
            pv += fcf / (1 + r) ** t

        # Terminal value
        if r > tg:
            tv = fcf * (1 + tg) / (r - tg)
            pv += tv / (1 + r) ** n_years

        values[i] = pv

    # Remove extreme outliers (top/bottom 1%)
    values = values[(values > np.percentile(values, 1)) &
                    (values < np.percentile(values, 99))]

    print(f"Monte Carlo DCF Results (n = {len(values):,} simulations)")
    print(f"  Mean intrinsic value:   ${np.mean(values):>10,.0f}M")
    print(f"  Median:                 ${np.median(values):>10,.0f}M")
    print(f"  Std deviation:          ${np.std(values):>10,.0f}M")
    print(f"  5th percentile:         ${np.percentile(values, 5):>10,.0f}M")
    print(f"  95th percentile:        ${np.percentile(values, 95):>10,.0f}M")
    print(f"  90% confidence width:   ${np.percentile(values, 95) - np.percentile(values, 5):>10,.0f}M")

monte_carlo_dcf(base_fcf=500)

9. Summary

This module has established the statistical foundations of equity valuation:

Finance Concept Statistical Analogue
Stock price E[PV of future random cash flows]
DCF model Expected value of a weighted stochastic series
P/E ratio Sufficient statistic for relative valuation
Reported earnings Noisy measurement of true economic value
Earnings surprise Standardized prediction error
Growth vs. value Two regimes of the return distribution (mixture model)
Terminal value sensitivity High sensitivity to nuisance parameter
Enterprise value Total variance decomposition (equity + debt)

In the next module, we move to the other side of the capital structure: bonds and fixed income, where cash flows become (nearly) deterministic and the math gets delightfully precise. See you in Module 12.