Investment Strategies
Quantitative strategies from legendary investors and influential books, with specific thresholds and metrics required to implement them.
Warren Buffett — Quality at a Fair Price
Buy wonderful companies at fair prices. Focus on durable competitive advantages (moats), consistent earnings, and shareholder-friendly management.
| Metric | Threshold | Function |
|---|
ROE (5yr avg) | > 15% | __c.roe(read, sym) |
ROIC | > 15% | __c.roic(read, sym) |
Debt/Equity | < 0.5 | __c.debtToEquity(read, sym) |
Net Profit Margin | > 10% | __c.netMargin(read, sym) |
Operating Margin | > 15% | __c.operatingMargin(read, sym) |
Free Cash Flow | Positive and growing | __c.fcfGrowth(read, sym) |
Earnings Growth | Consistent > 10% YoY | __c.earningsGrowth(read, sym) |
P/E Ratio | Below industry avg or < 15 | __c.peRatio(read, sym) |
Quality of Earnings | OCF > Net Income | __c.qualityOfEarnings(read, sym) > 1 |
Benjamin Graham — Deep Value
Buy stocks trading significantly below intrinsic value. The "margin of safety" protects against errors in analysis.
| Metric | Threshold | Function |
|---|
P/E Ratio | < 15 | __c.peRatio(read, sym) |
P/B Ratio | < 1.5 | __c.pbRatio(read, sym) |
P/E × P/B | < 22.5 (Graham Number) | peRatio × pbRatio |
Current Ratio | > 2.0 | __c.currentRatio(read, sym) |
Debt/Equity | < 1.0 | __c.debtToEquity(read, sym) |
Earnings Growth | Positive EPS last 10 years | historical check |
Dividend | Uninterrupted 20+ years | dividend history |
Graham Number Formula
Graham Number = √(22.5 × EPS × Book Value per Share)
Buy when: price < Graham Number
Joel Greenblatt — Magic Formula
Rank stocks by quality (return on capital) and cheapness (earnings yield). Buy the top-ranked combination.
| Metric | Calculation | Function |
|---|
Earnings Yield | EBIT / Enterprise Value | __c.earningsYield(read, sym) |
Return on Capital | EBIT / (Net Fixed Assets + Working Capital) | __c.roce(read, sym) |
Rules: Rank all stocks by both metrics, combine ranks, buy top 20-30, hold 1 year. Exclude financials and utilities. Min market cap $100M.
Joseph Piotroski — F-Score
Among cheap stocks (low P/B), use 9 binary signals to separate improving companies from deteriorating ones. Score 0-9.
| # | Condition | Score 1 if... |
|---|
1 | ROA | ROA > 0 this year |
2 | Operating Cash Flow | OCF > 0 this year |
3 | ROA Change | ROA this year > ROA last year |
4 | Accruals | OCF > Net Income |
5 | Leverage | Long-term debt decreased YoY |
6 | Liquidity | Current ratio increased YoY |
7 | Dilution | No new shares issued |
8 | Gross Margin | Gross margin increased YoY |
9 | Asset Turnover | Asset turnover increased YoY |
Buy: F-Score ≥ 8 AND P/B < 1.5. Avoid: F-Score ≤ 2. Rebalance annually.
Peter Lynch — GARP
Find growth stocks reasonably priced relative to their growth rate. The PEG ratio is the key metric.
| Metric | Threshold | Function |
|---|
PEG Ratio | < 1.0 (ideally < 0.5) | peRatio / (epsGrowth × 100) |
Earnings Growth | 15-30% annually | __c.earningsGrowth(read, sym) |
Debt/Equity | < 0.33 | __c.debtToEquity(read, sym) |
P/E Ratio | < Earnings Growth Rate | __c.peRatio(read, sym) |
Free Cash Flow | Positive | freeCashFlow > 0 |
Fair Value = EPS × Growth Rate
Buy when: Price < Fair Value (PEG < 1)
Sell when: PEG > 1.5 or growth decelerating
William O'Neil — CAN SLIM
Combine fundamental strength with technical momentum. Buy leading stocks breaking out of proper bases.
| Letter | Metric | Threshold |
|---|
C | Current quarterly EPS | Up ≥ 25% YoY |
A | Annual earnings growth | Up ≥ 25% for 3-5 years |
N | New product/high/management | Near 52-week high |
S | Supply & demand | Low float, volume surge |
L | Leader or laggard | RS Rating ≥ 80 |
I | Institutional sponsorship | Increasing ownership |
M | Market direction | Uptrend confirmed |
Altman Z-Score — Bankruptcy Prediction
Z = 1.2×(Working Capital/Total Assets)
+ 1.4×(Retained Earnings/Total Assets)
+ 3.3×(EBIT/Total Assets)
+ 0.6×(Market Cap/Total Liabilities)
+ 1.0×(Revenue/Total Assets)
| Z-Score | Zone | Meaning |
|---|
> 2.99 | Safe | Low bankruptcy risk |
1.81 - 2.99 | Grey | Moderate risk |
< 1.81 | Distress | High bankruptcy risk |
Dogs of the Dow
Buy the 10 highest-yielding Dow Jones stocks annually. High yield often indicates temporary undervaluation.
Rules: On Jan 1, identify 10 DJIA stocks with highest dividend yield. Invest equal amounts. Hold 1 year. Rebalance.
Momentum / Trend Following
| Metric | Threshold | Implementation |
|---|
12-month return | Top decile | price change over 252 bars |
6-month return | Top quartile | price change over 126 bars |
200-day SMA | Price above | __c.priceAboveSma(bar, 200) |
50/200 cross | Golden cross | __c.smaCrossAbove(bar, prevBar, 50, 200) |
Mean Reversion (Short-term)
| Metric | Threshold | Implementation |
|---|
RSI | < 30 (buy) / > 70 (sell) | __c.rsiBelow(bar, 14, 30) |
Bollinger Band | Within 5% of lower band | __c.bbProximity(bar, 'lower', 5, 20, 2) |
Distance from 50 SMA | > 2 std devs below | price vs SMA calculation |
Ray Dalio — All Weather / Risk Parity
Balance risk across economic environments rather than concentrating in equities.
| Environment | Indicators | Assets |
|---|
Growth Rising | GDP accelerating, PMI > 50 | Stocks, Commodities, Corporate Bonds |
Growth Falling | GDP decelerating, unemployment rising | Long-term Treasuries, TIPS |
Inflation Rising | CPI accelerating, commodities up | Commodities, TIPS, Gold |
Inflation Falling | CPI decelerating | Stocks, Long-term Treasuries |
Tobias Carlisle — Acquirer's Multiple
Buy the cheapest stocks by enterprise value to operating earnings. Pure cheapness outperforms quality+cheapness.
Acquirer's Multiple = Enterprise Value / Operating Earnings
Operating Earnings = Revenue - COGS - SG&A
| Metric | Threshold | Function |
|---|
EV/Operating Earnings | Bottom decile (< 4x) | __c.evToEbitda(read, sym) |
Market Cap | > $100M | screener |
Mark Minervini — Trend Template (SEPA)
Only buy stocks in confirmed Stage 2 uptrends that meet strict technical criteria.
| # | Condition | Implementation |
|---|
1 | Price > 150-day SMA | __c.priceAboveSma(bar, 150) |
2 | Price > 200-day SMA | __c.priceAboveSma(bar, 200) |
3 | 150-day SMA > 200-day SMA | sma(bar,150) > sma(bar,200) |
4 | 200-day SMA trending up ≥ 1 month | SMA slope positive |
5 | 50-day SMA > 150-day SMA > 200-day SMA | stacked SMAs |
6 | Price > 50-day SMA | __c.priceAboveSma(bar, 50) |
7 | Price ≥ 25% above 52-week low | price vs 252-bar low |
8 | Price within 25% of 52-week high | price vs 252-bar high |
Stan Weinstein — Stage Analysis
Stocks move through 4 stages. Only buy in Stage 2 (advancing), short in Stage 4 (declining).
| Stage | Condition | Action |
|---|
1 (Basing) | Price oscillates around flat 30-week MA | Watch |
2 (Advancing) | Price breaks above 30-week MA on volume, MA turns up | BUY |
3 (Topping) | Price oscillates around flattening 30-week MA | SELL |
4 (Declining) | Price below declining 30-week MA | Avoid/Short |
David Dreman — Contrarian Value
Buy out-of-favor stocks with strong fundamentals. Market overreacts to bad news.
| Metric | Threshold | Function |
|---|
P/E Ratio | Bottom 20% of market | __c.peRatio(read, sym) |
P/B Ratio | Bottom 20% of market | __c.pbRatio(read, sym) |
Dividend Yield | Top 20% of market | __c.dividendYield(read, sym) |
Payout Ratio | < 50% | __c.payoutRatio(read, sym) |
Debt/Equity | < industry average | __c.debtToEquity(read, sym) |
Hold 2-3 years for mean reversion.
Martin Zweig — Growth + Momentum
Earnings acceleration is the #1 signal. Revenue must confirm earnings (both growing).
| Metric | Threshold | Function |
|---|
Revenue Growth | Accelerating (this Q > last Q) | __c.revenueGrowth(read, sym) |
EPS Growth | ≥ 15% and accelerating | __c.epsGrowth(read, sym) |
P/E Ratio | < 3× growth rate, not > 43 | __c.peRatio(read, sym) |
Debt/Equity | < industry median | __c.debtToEquity(read, sym) |
Dividend Aristocrats
Companies that have raised dividends for 25+ consecutive years have proven business models.
| Metric | Threshold | Function |
|---|
Consecutive increases | ≥ 25 years | dividend history |
Dividend Yield | > 2% | __c.dividendYield(read, sym) |
Payout Ratio | < 75% | __c.payoutRatio(read, sym) |
Debt/Equity | < 1.0 | __c.debtToEquity(read, sym) |
FCF covers dividend | FCF > dividendsPaid | cash flow check |
Shareholder Yield Strategy
Total cash returned to shareholders (dividends + buybacks + debt paydown) is a better predictor than dividend yield alone.
Shareholder Yield = Dividend Yield + Buyback Yield + Debt Paydown Yield
| Metric | Threshold | Function |
|---|
Shareholder Yield | Top quintile (> 8%) | __c.shareholderYield(read, sym) |
Dividend Yield | > 0% | __c.dividendYield(read, sym) |
Buyback Yield | Positive (shares decreasing) | __c.buybackRatio(read, sym) |
Valuation | P/E < 20 | __c.peRatio(read, sym) |
John Neff — Low P/E Contrarian
Buy unfashionable stocks with low P/E ratios, decent growth, and high dividend yields.
Total Return Ratio = (Earnings Growth + Dividend Yield) / P/E Ratio
Buy when: Total Return Ratio > 2
| Metric | Threshold | Function |
|---|
P/E Ratio | Below market average | __c.peRatio(read, sym) |
Earnings Growth | 7-20% | __c.earningsGrowth(read, sym) |
Dividend Yield | > 0% | __c.dividendYield(read, sym) |
Revenue Growth | Positive | __c.revenueGrowth(read, sym) |
Philip Fisher — Growth Quality
Buy outstanding companies with superior management and hold for the very long term.
| Metric | Threshold | Function |
|---|
Revenue Growth | > 10% annually for 5+ years | __c.revenueGrowth(read, sym) |
Net Margin | Improving trend | __c.netMargin(read, sym) |
Operating Margin | > 15% | __c.operatingMargin(read, sym) |
ROE | > 15% | __c.roe(read, sym) |
Debt/Equity | < 0.35 | __c.debtToEquity(read, sym) |
EPS Growth | > 15% sustained | __c.epsGrowth(read, sym) |
John Templeton — Maximum Pessimism
Buy at the point of maximum pessimism. Look globally for the cheapest markets.
| Metric | Threshold | Function |
|---|
P/E Ratio | < 5 (extreme value) | __c.peRatio(read, sym) |
P/B Ratio | < 1.0 | __c.pbRatio(read, sym) |
Price vs 52-week high | Down > 50% | price decline |
Earnings | Still positive | netIncome > 0 |
Debt/Equity | < 1.0 | __c.debtToEquity(read, sym) |
Diversify across 100+ positions globally. Hold 4-5 years for mean reversion.
Dual Momentum — Gary Antonacci
Combine relative momentum (which asset is strongest) with absolute momentum (is it positive at all) to avoid bear markets.
| Step | Condition | Implementation |
|---|
1 | Calculate 12-month return of each asset | price change over 252 bars |
2 | Relative: Pick asset with highest return | compare returns |
3 | Absolute: Is winner's return > T-bill rate? | return > treasury year1 |
4 | If yes → invest in winner | buy signal |
5 | If no → move to bonds/cash | defensive |
Sector Rotation — Business Cycle
Different sectors outperform at different phases of the economic cycle.
| Phase | Economic Signal | Favored Sectors |
|---|
Early Recovery | GDP accelerating, rates low | Technology, Industrials, Consumer Discretionary |
Mid Cycle | GDP strong, rates rising | Technology, Industrials, Energy |
Late Cycle | GDP slowing, inflation rising | Energy, Materials, Healthcare |
Recession | GDP negative, rates falling | Utilities, Healthcare, Consumer Staples |
Pat Dorsey — Economic Moat Investing
Identify companies with sustainable competitive advantages (moats) and buy them at reasonable prices.
| Moat Signal | Metric | Threshold |
|---|
Pricing Power | Gross Margin | > 40% stable for 10yr |
Efficiency | ROIC | > 15% for 10yr |
Scale | Operating Margin | > industry, expanding |
Capital Light | Capex/Revenue | < 5% |
Cash Generation | FCF Conversion | > 80% of earnings |
Only buy moat stocks when P/E < 20 or FCF Yield > 5%.
William Bernstein — The Four Pillars of Investing
Successful investing rests on four pillars: Theory (risk and return are related), History (markets are cyclical), Psychology (your worst enemy is yourself), and Business (Wall Street is not your friend). Use broad diversification, tilt toward value/small, keep costs low, and rebalance mechanically.
The Four Pillars
| Pillar | Lesson | Application |
|---|
Theory | Higher risk = higher expected return | Tilt toward small cap & value for premium |
History | Bubbles and crashes repeat | Don't chase performance, rebalance into fear |
Psychology | Investors buy high, sell low | Use rules-based rebalancing, ignore emotions |
Business | Fees destroy returns | Use index funds, minimize costs |
No-Brainer Portfolio
| Allocation | Asset | ETF Example |
|---|
25% | US Large Cap Stocks | VTI / SPY |
25% | US Small Cap Stocks | VB / IJR |
25% | International Small Cap | VSS / SCZ |
25% | Short-Term Treasuries | SHY / VGSH |
Four Pillars Medium (Value Tilt)
| Allocation | Asset | ETF Example |
|---|
15% | US Large Cap | VTI |
10% | US Large Value | VTV |
10% | US Small Cap | VB |
10% | US Small Value | VBR |
5% | US REITs | VNQ |
15% | International Large | VEA |
10% | International Small | VSS |
5% | Emerging Markets | VWO |
20% | Short-Term Bonds | BSV |
Rebalancing Rules
| Rule | Threshold | Implementation |
|---|
Calendar rebalance | Annually (Jan 1) | fixed schedule |
Band rebalance | When allocation drifts > 5% from target | monitor drift |
Contrarian rebalance | Sell winners, buy losers back to target | mechanical |
Value Tilt Signals
| Signal | Condition | Source |
|---|
Value spread wide | Value P/E << Growth P/E | __c.peRatio(read, sym) |
Small cap discount | Small cap P/E < Large cap P/E | compare metrics |
Yield curve normal | 10Y > 2Y (economy healthy) | treasury-rates |
After crash | Market down > 30% from peak | price vs high |
Key Quantitative Principles
| Principle | Rule |
|---|
Expected stock return | Dividend Yield + Earnings Growth + Valuation Change |
Rebalancing bonus | Diversified assets with low correlation add ~0.5-1%/yr |
Small cap premium | Small caps outperform large by ~2%/yr long-term |
Value premium | Value outperforms growth by ~3%/yr long-term |
Bonds allocation | Age in bonds (30yr old = 30% bonds) or fixed 25% |
Never hold > 80% stocks | Even aggressive investors need ballast |
Macro Timing (Valuation-Informed)
| Market Condition | Signal | Action |
|---|
Stocks cheap | CAPE < 15, dividend yield > 3% | Increase stock allocation by 10% |
Stocks expensive | CAPE > 30, dividend yield < 1.5% | Decrease stock allocation by 10% |
Normal | CAPE 15-30 | Hold target allocation |
Yield curve inverted | 2Y > 10Y treasury | Reduce risk, increase bonds |