Methodology — Graham-Buffett Value Investing Framework
Overview
STOKS implements a systematic stock screening pipeline inspired by the investment philosophies of Benjamin Graham (father of value investing) and Warren Buffett (quality + moat emphasis). The pipeline runs six sequential stages to identify stocks that offer both quality and value.
Market Coverage & Currency Handling
STOKS screens five markets, each on its own dashboard:
- 🇺🇸 US — S&P 500 + S&P 400 MidCap constituents (~900 names).
- 🇮🇱 Israel (TASE) — Tel Aviv listed equities sourced from Yahoo's
Israeli equity screener. Corporate bond series (symbols like
ABOU-B1.TA) are excluded: Yahoo mislabels them as equities, but they carry no financial statements. - 🇯🇵 Japan (TSE) — Tokyo listed equities above ¥100B market cap
(~1,000 names). Regional Fukuoka/Sapporo quotes (
9942@F.T) and preferred shares (five-digit codes like94345.T) are excluded — Yahoo reports both under the Tokyo exchange code. - 🇫🇷 France (Euronext Paris) — Paris listed equities above
€100M market cap. Yahoo's French feed is dominated by the pan-European
Euronext book (Amsterdam, Brussels, Lisbon), so only quotes on the Paris
exchange itself are kept. Retail bonds mislabelled as equities
(
ACALS.PA, "CASA1,4%20JUL27") and ISIN-coded structured products (FR0000047797.PA) are excluded. - 🇩🇪 Germany (XETRA) — the one market not sourced from a screener. Yahoo's German feed is unusable: of 3,000 quotes, 2,339 are Frankfurt retail lines and only 456 are XETRA, whose top 20 by market cap is NVIDIA, Apple, Alphabet, Microsoft and Amazon — not one German company. The universe is therefore DAX + MDAX + TecDAX + SDAX membership, the same approach used for the US. A DAX constituent is a German company by definition, so contamination is structurally impossible rather than something to filter for. SDAX has no ticker column on Wikipedia, so its members are resolved through Yahoo search under a strict full-token name-identity rule. Members registered abroad (Airbus in Leiden, Aroundtown and RTL in Luxembourg, Qiagen in Venlo) are excluded so no company appears on two market pages.
Why currency matters here. Tel Aviv stocks are quoted in agorot (1/100 of a shekel), and many dual-listed Israeli companies report their financial statements in US dollars while still trading in agorot. Comparing a raw quote against statement-derived intrinsic value would therefore be wrong by a factor of 100 — or by the whole exchange rate — and would silently make every Israeli stock look drastically overvalued. Tokyo, by contrast, quotes in whole yen with no minor unit, and Paris and XETRA quote in euros, so no divisor is applied in those markets.
To avoid this, STOKS converts the quote into the currency the company reports in (its "analysis currency") rather than converting years of financial statements. Valuation, margin of safety and all ratios are then computed with price and fundamentals in the same currency. Where a conversion was applied, the ticker page shows the original exchange quote and the rate used. If an exchange rate cannot be retrieved, the stock is skipped rather than valued on a guess.
Screening thresholds are identical across markets, so a signal means the same thing on every dashboard. Note that the default sector exclusions (Financial Services and Real Estate) remove a large share of the TASE, which is heavily weighted toward banks, insurers and property companies. Market-cap floors, by contrast, are calibrated per exchange rather than converted from the US figure — a nominal-dollar large-cap floor applied to a smaller exchange truncates it to mega-caps instead of selecting quality.
Stage A — Hard Filters
Eliminates stocks that fail fundamental Graham-style safety criteria:
- P/E Ratio ≤ 10 — strict Graham value threshold
- Consistent Positive EPS — minimum years of positive earnings
- Consistent Positive FCF — free cash flow track record
- Debt/Equity ≤ 1.0 — conservative leverage
- Current Ratio ≥ 1.5 — adequate liquidity
- Share Dilution < 3% CAGR — shareholder-friendly capital allocation
Stage B — Quality Score
Evaluates the business quality through a weighted composite score (0-100):
- ROIC (25%) — Return on invested capital, the key Buffett metric
- ROE (20%) — Return on equity
- Margin Stability (20%) — Consistency of gross margins over time
- Operating Margin Trend (15%) — Improving or stable margins
- Revenue Trend (10%) — Organic growth trajectory
- FCF Margin (10%) — Cash conversion efficiency
Stage C — Cyclicality Detection
Identifies cyclical businesses and normalizes their earnings to avoid buying at peak cycle. Uses operating margin deviation analysis and sector-based heuristics. Cyclical companies get their EPS normalized to mid-cycle levels for fairer valuation.
Stage D — Intrinsic Value & Margin of Safety
Estimates intrinsic value using two complementary methods:
- Earnings Power Value (EPV) — What the company is worth based on current normalized earnings, assuming no growth (Graham approach)
- Conservative DCF — Discounted cash flow model with conservative growth assumptions (Buffett approach)
Margin of Safety thresholds: Strong Buy ≥ 45%, Buy ≥ 30%. Discount rate: 11% (approximating long-term equity returns).
Stage E — Value Trap Detection
Checks for red flags that often indicate a stock is cheap for good reason:
- Revenue and margin declining simultaneously
- FCF diverging negatively from reported EPS
- Accelerating debt growth
- Deteriorating interest coverage
Stage F — Final Scoring & Signal
Produces a weighted composite score and assigns a signal:
- STRONG BUY — High quality + large margin of safety + no traps
- BUY — Good quality + adequate margin of safety
- WATCH — Interesting but needs monitoring
- REJECT — Fails one or more critical criteria
Data Sources & Limitations
Currently using Yahoo Finance (via yfinance library) for financial data. The free API provides ~4 years of annual statement data, which limits lookback periods. All calculations adapt automatically to available data depth.
Important: This tool is a screening aid, not a recommendation engine. Always verify data independently and conduct thorough qualitative analysis before making any investment decision.