[04] The 90/10 Portfolio — Dividend Core + Growth Satellite with a Live Simulator

Published: (May 2, 2026 at 06:43 PM EDT)
3 min read
Source: Dev.to

Source: Dev.to

Dividend Snowball Model (Core 90%)

The core holds companies with DOE (Dividend on Equity) or progressive dividend policies. DOE means dividends grow automatically as book value grows—programmatic, not discretionary.

# dividend_model.py
from dataclasses import dataclass

@dataclass
class DividendStock:
    ticker: str
    shares: int
    annual_dividend: float   # per‑share
    growth_rate: float       # annual dividend growth

    def projected_income(self, year: int) -> float:
        return self.annual_dividend * (1 + self.growth_rate) ** year * self.shares

CORE = [
    DividendStock("A", 15000,  78, 0.05),  # Retail — progressive
    DividendStock("B", 50000,  24, 0.05),  # Auto dealer — progressive
    DividendStock("C", 20000,  60, 0.06),  # Education — DOE 6%
    DividendStock("D", 50000,  21, 0.06),  # Advertising — DOE 6%
]

for y in range(11):
    income = sum(s.projected_income(y) for s in CORE)
    fire = "🔥" if income > 9_600_000 else ""
    print(f"  {2026+y}  ¥{income:>10,.0f}/yr  {fire}")

Output (selected years)

2026  ¥ 5,220,000/yr
2027  ¥ 5,525,200/yr
2028  ¥ 5,848,712/yr
...
2032  ¥ 7,637,548/yr
2034  ¥ 8,571,892/yr
2036  ¥ 9,620,423/yr  🔥

The snowball alone reaches FIRE around year 10. Slow, but reliable—the core doesn’t need to be exciting.

Core Characteristics

  • Generates yield
  • Grows 5‑6 % / year
  • Covers living expenses
  • Shields against downside
  • Provides the “snowball” effect

Satellite (10%) – Deep‑Value Position

The satellite is a single deep‑value stock priced at PSR 0.11 with a restructuring catalyst.

Kenneth Fisher’s framework

  • PSR < 0.75 → buy
  • PSR < 0.30 → exceptional

A PSR of 0.11 suggests either bankruptcy or a 3‑5× upside. The strategy bets on the latter, offering an asymmetric payoff.

Satellite Characteristics

  • Generates capital gains
  • Binary outcome: 3‑5× upside or flat
  • Accelerates FIRE timeline
  • Bounded loss (≈ 14 % of portfolio)
  • Acts as a “slingshot” to the core snowball

Interactive PSR Simulator (Live Tool)

The simulator is a single HTML file (no server, no dependencies). Drag the sliders to model different scenarios. It calculates:

  • Target price from EPS × PER
  • Fisher PSR at current and target valuations
  • Impact on the total portfolio

Scenario Impact Table

ScenarioPortfolio ImpactFIRE Timeline
Satellite → 0× (loss)–14 % (¥124 M → ¥107 M)Delayed ~1 year
Satellite → 3×+28 % (¥124 M → ¥159 M)Accelerated ~2 years
Satellite → 5×+56 % (¥124 M → ¥194 M)Essentially immediate

The core absorbs any downside, while the satellite amplifies upside. Even without a satellite success, the core eventually reaches FIRE; a successful turnaround compresses years of compounding into a single event.

Key takeaway: Bounded loss, unbounded gain—this is the whole strategy in one line.

Next Steps

  • Next week: [05] When to Pull the Trigger on FIRE — “FIRE isn’t a number. It’s a probability.”
  • Series: Building Investment Systems with Python — Engineering financial independence with code.
0 views
Back to Blog

Related posts

Read more »