Skip to content

walkerbrown/omaha-sieve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Omaha Sieve

"I'd be a bum on the street with a tin cup if the markets were always efficient."
-Warren E. Buffett

A value stock screener for US-listed common equities and ordinary ADRs using publicly available SEC EDGAR, Nasdaq, and ECB data. Each company is scored on the latest usable annual SEC XBRL filing within a rolling 24-month window. REITs, ETFs, ETNs, BDCs, and other non-common-equity instruments are excluded. No API keys required.

Data sources include

  • current price and market cap from Nasdaq, Inc.
  • annual fundamentals from nightly SEC EDGAR companyfacts.zip
  • annual filing metadata from nightly SEC EDGAR submissions.zip
  • USD normalization for non-USD annual filings using official ECB FX history

The tool is designed to surface companies that may merit deeper intrinsic-value analysis.

Financial Metrics

Operating Model

  • Earnings yield
$$\text{earnings\_yield} = \frac{\text{net\_income}}{\text{market\_cap}}$$
  • Free cash flow proxy
$$\text{fcf} = \text{operating\_cash\_flow} - \text{capex}$$
  • Cash conversion
$$\text{cash\_conversion} = \text{clamp}\left(\frac{\text{fcf}}{\text{net\_income}}, 0.0, 1.5\right)$$
  • Owner earnings
$$\text{owner\_earnings} = \text{earnings\_yield} \times \text{cash\_conversion}$$
  • Invested capital
$$\text{invested\_capital} = \text{equity} + \text{total\_debt} - \text{cash}$$
  • Return on invested capital
$$\text{roic} = \frac{\text{operating\_income} \times (1 - 0.21)}{\text{invested\_capital}}$$
  • Debt to equity
$$\text{debt\_to\_equity} = \frac{\text{total\_debt}}{\text{equity}}$$
  • Price to book
$$\text{price\_to\_book} = \frac{\text{market\_cap}}{\text{equity}}$$
  • Price to earnings
$$\text{p/e} = \frac{\text{market\_cap}}{\text{net\_income}}$$
  • Operating margin
$$\text{operating\_margin} = \frac{\text{operating\_income}}{\text{revenue}}$$
  • Gross margin, when gross profit is available
$$\text{gross\_margin} = \frac{\text{gross\_profit}}{\text{revenue}}$$
  • Margin quality

If both current and prior annual filings include gross profit:

$$\text{margin\_quality} = \frac{ \left(\text{gross\_margin}_{\text{current}} - \text{gross\_margin}_{\text{prior}}\right) + \left(\text{operating\_margin}_{\text{current}} - \text{operating\_margin}_{\text{prior}}\right) }{2}$$

If gross profit is unavailable in either year:

$$\text{margin\_quality} = \text{operating\_margin}_{\text{current}} - \text{operating\_margin}_{\text{prior}}$$

If the current filing and immediately previous annual filing do not yield a usable prior-year comparison, the company stays in the operating universe and receives a neutral margin_quality rank contribution instead of a hard exclusion.

Financial Model

  • Earnings yield
$$\text{earnings\_yield} = \frac{\text{net\_income}}{\text{market\_cap}}$$
  • Price to book
$$\text{price\_to\_book} = \frac{\text{market\_cap}}{\text{equity}}$$
  • Return on equity
$$\text{roe} = \frac{\text{net\_income}}{\text{equity}}$$
  • Return on assets
$$\text{roa} = \frac{\text{net\_income}}{\text{total\_assets}}$$
  • Equity to assets
$$\text{equity\_to\_assets} = \frac{\text{equity}}{\text{total\_assets}}$$

Notes

  • For normalized comparison, this analysis considers the most recent annual filings only.
  • When multiple exchange symbols share one issuer CIK, the screener resolves a single canonical listing from SEC submissions tickers; if SEC metadata does not disambiguate the symbols, the issuer is excluded instead of guessed.
  • total_debt is a conservative all-financing-obligations measure, not a narrow funded-debt-only figure.
  • It counts borrowings, notes payable, convertible debt, secured debt, lease liabilities, and supplier-finance obligations when those balances are reported on the selected annual filing.
  • For each financing category, the screener uses the larger of an explicit total-balance tag or the sum of recognized current and noncurrent tags, then adds the categories together.
  • Missing debt is treated as zero only after this broader financing-obligation scan finds no recognized balance tags.
  • Cash can come from either pure cash-and-equivalents tags or broader cash-plus-short-term-investment tags when the issuer reports liquid balances that way in standardized facts.
  • Capex is scanned from a broader set of standardized annual reinvestment concepts, including a few sector-specific fallbacks. If no usable capex fact survives normalization, the operating model uses $0.00 capex rather than excluding the issuer, which broadens coverage but can overstate cash-conversion and owner-earnings metrics for some companies.
  • Negative book equity does not automatically exclude an operating company. When equity <= 0, the operating model treats P/B and Debt/Equity as not meaningful and leaves those fields blank instead of showing negative or infinite ratios.
  • When equity + total_debt - cash <= 0, the operating model also treats ROIC as not meaningful and assigns a neutral rank contribution instead of forcing an exclusion on buyback-heavy, asset-light businesses.
  • Annual filings older than 24 months from the run date are excluded instead of being used as indefinite fallback candidates.
  • Operating companies must have at least two annual filings total. The selected filing must be recent, but prior-year margin comparison can come from the same accession's comparative facts or from the immediately prior annual filing.
  • BDCs and similar 1940 Act issuers are permanently excluded with a narrow rule: explicit Business Development / BDC name matches, or unmistakable BDC-style forms such as 40-17G, 40-APP, N-2, N-2ASR, N-23C-2, N-54A, and N-54C combined with clearly fund-like issuer wording such as fund, trust, capital, or investment.
  • Gross profit is optional in the operating model; if it is unavailable, margin quality falls back to operating-margin change only.
  • Non-USD annual filings are converted to USD using ECB historical rates before scoring.
  • When one accession publishes both local-currency and USD convenience amounts, the screener anchors the annual record to one monetary filing currency before selecting facts, rather than mixing units concept by concept. When both are equally complete, the non-USD monetary filing currency is preferred over USD convenience amounts.
  • Nasdaq Finance-sector issuers route to the Financial model even when the industry label is noisy.

Scoring for Operating Companies

Weights:

  • owner_earnings = 0.30
  • roic = 0.25
  • low_debt = 0.15
  • cash_conversion = 0.15
  • margin_quality = 0.15

Scoring for Financial Companies

Weights:

  • earnings_yield = 0.30
  • low_price_to_book = 0.25
  • return_on_equity = 0.20
  • return_on_assets = 0.15
  • equity_to_assets = 0.10

Excluded Listings

The screener excludes:

  • REITs
  • ETFs
  • ETNs
  • BDCs and other 1940 Act investment-company structures
  • funds
  • listed notes and debentures
  • warrants
  • rights
  • units
  • preferreds
  • depositary-share structures that do not represent ordinary common equity

Configure and Run

Copy config.toml.example to config.toml and set the SEC user-agent with your email.

The default market-cap floor is $1B.

cargo run

For materially faster runs on the SEC bulk archives:

cargo run --release
cargo run -- --csv
cargo run -- --us-only
cargo run -- config.toml --csv --us-only

Each run prints separate Operating and Financial tables to stdout. A dated CSV named omaha_sieve_YYYY-MM-DD.csv is written only when --csv is provided.

--us-only restricts the universe to issuers Nasdaq identifies as United States and excludes ADR/depositary listings.

License

Copyright 2026 Dylan Walker Brown

Licensed under either of

at your option. Please find an additional disclaimer of liability in the attached NOTICE file.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

A value stock screener for US-listed equities. No API keys required. πŸ“ˆ

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages