agent-instructions
Use when writing project instructions for a coding agent (CLAUDE.md, AGENTS.md, or equivalent). Covers what belongs in them, what does not, structure, and…
Use when building a screen to find candidates. Covers screen design, criteria that actually discriminate, avoiding overfitting, survivorship bias, and turning a screen's output into a shortlist rather than a shopping list.
$ npx -y skills add nimadorostkar/Claude-Skills-collection --skill stock-screening --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/stock-screeningContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when building a screen to find candidates. Covers screen design, criteria that actually discriminate, avoiding overfitting, survivorship bias, and turning a screen's output into a shortlist rather than a shopping list.
name: stock-screening description: Use when building a screen to find candidates. Covers screen design, criteria that actually discriminate, avoiding overfitting, survivorship bias, and turning a screen's output into a shortlist rather than a shopping list. metadata: category: finance version: 1.0.0 tags: [screening, filters, factors, selection, bias]
Build a screen that narrows a universe to a reviewable shortlist. A screen is a filter, not a decision — its output is a list of things to look at, and treating it as a list of things to buy is the fastest way to lose money with a spreadsheet.
1. **Define the universe first** — Liquidity and market-capitalization floors. A screen that returns illiquid microcaps you cannot actually trade is returning noise. 2. **Choose criteria with a mechanism** — Each filter should have a reason it should work, stated before you test it. "It scored well in the backtest" is not a mechanism; it is a warning sign. 3. **Use few criteria** — Three to six. Each additional filter cuts the result set and increases the chance you have fitted the screen to the past rather than to a real effect. 4. **Set thresholds at round, defensible numbers** — A revenue growth threshold of 23.7% is fitted. 20% is a judgment. The former will not survive out of sample. 5. **Check the biases** — Does the historical universe include companies that no longer exist? If not, the backtest is measuring the performance of survivors, which is not a strategy you could have run. 6. **Rank and review manually** — The screen produces candidates. A human — or a careful, separate analysis — decides. The screen does not know why a company is cheap.
**A screen with few criteria, each with a mechanism:**
def momentum_quality_screen(universe: pd.DataFrame) -> pd.DataFrame:
"""Each filter has a stated mechanism. None was found by searching.
Mechanisms:
- Liquidity: we must be able to enter and exit without moving the price.
- Relative strength: momentum is one of the most durable documented
anomalies. Persistence over 6-12 months is the effect.
- Trend structure: we do not want falling knives. Above a rising 200-day.
- Profitability: quality screens out the low-priced momentum that is
momentum toward zero.
- Earnings growth: confirms the price move has a fundamental driver.
"""
return (
universe
# Liquidity: tradable, not theoretical.
.query("market_cap_usd > 2e9 and avg_dollar_volume_50d > 20e6")
# Relative strength: top quintile over 6 months, versus the benchmark.
.query("rs_126d > rs_126d.quantile(0.80)")
# Trend: above a rising 200-day. No falling knives.
.query("close > ma200 and ma200_slope_20d > 0")
# Quality: profitable. Filters momentum-toward-zero.
.query("roe > 0.15 and net_margin > 0.05")
# Fundamental confirmation of the price move.
.query("eps_growth_yoy > 0.20 and revenue_growth_yoy > 0.10")
.sort_values("rs_126d", ascending=False)
.head(25) # a reviewable shortlist, not a portfolio
)
# Five criteria. Round thresholds. Each defensible without reference to a
# backtest. It will not be the best-performing screen in a backtest, and it is
# far more likely to work out of sample than one that is.**The bias that makes a backtest lie:**
# WRONG: today's index constituents, tested historically. Every company that # was delisted, acquired, or went to zero is absent. The screen appears to # have avoided them; in reality it was never offered them. universe = current_sp500_members() backtest(screen, universe, start="2010-01-01") # results are fiction # RIGHT: point-in-time membership, including everything that later failed. universe = sp500_members_as_of(date) # survivorship-free fundamentals = fundamentals_as_reported(date) # not as later restated,
A curated library of 137 production-grade skills for Claude and other AI coding agents. Every skill follows one structure, speaks with one voice, and earns its place by changing what the agent does.
Repo: nimadorostkar/Claude-Skills-collection
Use when writing project instructions for a coding agent (CLAUDE.md, AGENTS.md, or equivalent). Covers what belongs in them, what does not, structure, and…
Use when an agent needs state that survives a session or a context compaction. Covers what to persist, file-based memory, structuring notes for retrieval, and…
Use when automating agent behavior with lifecycle hooks. Covers hook events, deterministic enforcement of rules the model should not be trusted to remember,…
Use when packaging skills, commands, hooks, and MCP servers into a distributable plugin. Covers manifest structure, bundling, versioning, testing, and…
Use when writing a new skill for an AI agent. Covers scoping, description writing for reliable triggering, progressive disclosure, and the difference between a…
Use when reviewing or improving an existing agent skill. Covers triggering accuracy, content quality, redundancy with the base model, and measuring whether the…