# Yass

> Yet Another Stock Screener — screen stocks using fundamental signals, backtest with point-in-time data, evaluate with Monte Carlo analysis - jamesjxliao/yass

- **Website:** https://github.com/jamesjxliao/yass
- **Pricing:** unknown
- **Categories:** Developer Tools, Writing & Content
- **Tags:** developer-tools, writing-content, data-analytics
- **Platforms:** CLI
- **Last verified:** 2026-09-10
- **Canonical page:** https://linkrena.com/tools/yass

## About

Screen stocks using fundamental signals, backtest with point-in-time data, and evaluate with Monte Carlo analysis. Configure signals and weights in YAML — no code changes needed.

Read the numbers honestly: these are in-sample results (10 bps round-trip costs, survivorship-free S&P 500 membership, Sharadar data). On 108 monthly returns, the stationary-block-bootstrap 90% confidence interval on that Sharpe is [0.37, 1.38] — a 9-year backtest is a noisy point estimate, not a promise. The interval comes from src/screener/evaluation/robustness.py ; poetry run screener evaluate reproduces the charts.

cp .env.example .env # add your data API key (or skip — falls back to mock data)

No API key? No problem — the screener falls back to mock data so you can explore immediately.

Data provider: YASS supports Sharadar (Nasdaq Data Link) and Financial Modeling Prep (FMP) for market data. Set NASDAQ_DATA_LINK_API_KEY or FMP_API_KEY in .env — auto-selection prefers Sharadar; DATA_PROVIDER=sharadar|fmp|mock forces a choice. Without a key, mock data is used. Don't point both providers at the same DuckDB file — their caches must not mix.

The repo ships with 7 signals — use them as-is or adjust weights in config/example.yaml :

Signal names must match the name attribute on the signal class (e.g. momentum_12m , not momentum ); the loader raises if a name isn't found.

## Related tools

- [It Was Never You](https://linkrena.com/tools/it-was-never-you): Re-write their wrongs.
- [Slideops](https://linkrena.com/tools/slideops): Turn a repository into a slide deck that tells you when it stops matching the code - glukicov/slideops
- [THEYFELL](https://linkrena.com/tools/theyfell): A business, a website, a resume, a career, anything you built.
- [Openclip](https://linkrena.com/tools/openclip): Fast, open-source macOS floating text actions.
- [Lg C5 Webos25 Region Change](https://linkrena.com/tools/lg-c5-webos25-region-change): Contribute to hawshemi/lg-c5-webos25-region-change development by creating an account on GitHub.
- [Doc Scraper](https://linkrena.com/tools/doc-scraper): Go web crawler to scrape documentation sites and convert content to clean Markdown for LLM ingestion (RAG, training data).
