Detect IBD-style Distribution Days for QQQ/SPY (close down at least 0.2% on higher volume), track 25-session expiration and 5% invalidation, count d5/d15/d25 clusters, classify market risk (NORMAL/CAUTION/HIGH/SEVERE), and emit TQQQ/QQQ exposure recommendations.
All-time #7371Trending #5602Hot #327First seen May 1, 2026
Detect IBD-style Distribution Days for QQQ/SPY (close down at least 0.2% on higher volume), track 25-session expiration and 5% invalidation, count d5/d15/d25 clusters, classify market risk (NORMAL/CAUTION/HIGH/SEVERE), and emit TQQQ/QQQ exposure recommendations.
Use after market close, before TQQQ exposure changes, or as input to FTD/market-state frameworks.
Does not execute trades.
Similar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Claude CodeNot declared
CursorNot declared
CodexNot declared
GitHub CopilotNot declared
WindsurfNot declared
Gemini CLINot declared
ClineNot declared
OpenCodeNot declared
Repository health
Stars2.8K
LicenseLICENSE
Default branchmain
Open issues31
Status
Active
Package contents
Files included with this skill beyond the listing page.
skill mdSKILL.md5,250 B
docsSUMMARY.md3,976 B
History
First seen on skills.sh
First recorded snapshot · 1,600 installs
SKILL.md
IBD Distribution Day Monitor
Purpose
Detect IBD-style Distribution Days for major market ETFs (QQQ as Nasdaq proxy, SPY as S&P 500 proxy) and produce a daily market deterioration signal plus a TQQQ/QQQ exposure recommendation. Designed for post-market review.
When to Use
Invoke this skill:
Daily after the US market close.
Before increasing TQQQ exposure or rebalancing leveraged positions.
When evaluating whether an uptrend is becoming vulnerable to a correction.
As an upstream input to FTD (Follow-Through Day) detection or other market-state frameworks.
Do NOT use this skill to:
Execute trades or modify orders.
Generate discretionary market predictions outside of the IBD ruleset.
Inputs
Symbols (default: QQQ, SPY) and lookback (default 80 trading sessions).
Optional --as-of YYYY-MM-DD for backtesting against a historical session.
Strategy context: instrument (TQQQ or QQQ), current exposure %, base trailing stop %.
FMP API key via --api-key, config.data.apikey, or FMPAPI_KEY env var (in that priority order).
Core Rules
A Distribution Day is detected when:
Today's close is at least 0.2% below yesterday's close.
Today's volume is greater than yesterday's volume.
A Distribution Day is removed from the active count when either:
More than 25 trading sessions have elapsed since the DD.
The index has gained 5% from the DD close (using post-DD high by default; configurable to close-source).
Today's DD is never invalidated immediately because there are no post-DD sessions to evaluate the 5% gain against.
Counting Conventions
d5count / d15count / d25count count active records with agesessions <= N.
This means N+1 sessions are inspected (age 0..N inclusive). Reports therefore say "within N elapsed sessions" rather than "直近 N 取引日" to avoid ambiguity.
Risk Classification
Risk
Trigger
NORMAL
d25 <= 2
CAUTION
d25 >= 3
HIGH
d25 >= 5 OR d15 >= 3 OR d5 >= 2
SEVERE
d25 >= 6 OR d15 >= 4 OR (marketbelow21emaor50ma AND d25 >= 5)
When both QQQ and SPY are loaded, QQQ-weighted overall logic applies (TQQQ-aware): a single SEVERE escalates to SEVERE; QQQ HIGH escalates to overall HIGH; QQQ NORMAL + SPY HIGH still escalates to HIGH (broad-market spillover).
TQQQ Exposure Policy
Risk
Action
Target Exposure
Trailing Stop
NORMAL
HOLDORFOLLOWBASESTRATEGY
100%
base
CAUTION
AVOIDNEWADDS
75%
min(base, 7%)
HIGH
REDUCE_EXPOSURE
50%
min(base, 5%)
SEVERE
CLOSETQQQOR_HEDGE
25%
min(base, 3%)
QQQ uses a less aggressive policy (HIGH=75%, SEVERE=50%) since it lacks 3x leverage.
Workflow
Load OHLCV for the configured symbols via FMP (gethistoricalprices).
Validate data quality; record skipped sessions in audit.
Rebase via prepareeffectivehistory so effective_history[0] is the evaluation session.
Detect raw Distribution Days; enrich with high_since, invalidation event, and status.
Count d5 / d15 / d25 active records.
Compute 21EMA and 50SMA filters; flag marketbelow21emaor50ma (None if data insufficient).
Classify each index, then combine using QQQ-weighted policy.
Generate portfolio action for the configured instrument.
Write JSON + Markdown reports to --output-dir with API keys redacted.
Outputs
Saved to reports/ (or --output-dir):
ibddistributiondaymonitorYYYY-MM-DD_HHMMSS.json
ibddistributiondaymonitorYYYY-MM-DD_HHMMSS.md
JSON is UTF-8 with ensureascii=False (Japanese explanations preserved). Sensitive keys (apikey, fmpapikey, token, etc.) are redacted automatically.
Operating Principles
Do not override the IBD rule definitions unless config/default.yaml is changed deliberately.
Always explain which dates contributed to the active count.
Treat missing or unreliable volume data as a warning (audit_flag), not as a Distribution Day.
Do not place trades. The portfolio action is a risk-management suggestion, not an execution instruction.