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.
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.
Files included with this skill beyond the listing page.
skill mdSKILL.md5,250 B
docsSUMMARY.md421 B
History
First seen on skills.sh
First recorded snapshot · 83 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.