This skill should be used when analyzing weekly price charts for stocks, stock indices, cryptocurrencies, or forex pairs. Use this skill when the user provides chart images and requests technical analysis, trend identification, support/resistance levels, scenario planning, or probability assessments based purely on chart data without consideration of news or fundamental factors.
npx skills add https://github.com/tradermonty/claude-trading-skills --skill technical-analyst
This skill enables comprehensive technical analysis of weekly price charts. Analyze chart images to identify trends, support and resistance levels, moving average relationships, volume patterns, and develop probabilistic scenarios for future price movement. All analysis is conducted objectively using only chart data, without influence from news, fundamentals, or market sentiment.
This skill generates markdown analysis reports saved to the reports/ directory:
[SYMBOL]_technical_analysis_[YYYY-MM-DD].mdWhen the user provides one or more weekly chart images for analysis:
Before beginning analysis, read the comprehensive technical analysis methodology:
Read: references/technical_analysis_framework.md
This reference contains detailed guidance on:
For each chart image, conduct a systematic analysis following this sequence:
For each analyzed chart, create 2-4 distinct scenarios for future price movement:
Each scenario must include:
Adjust probabilities based on strength of supporting technical factors. Ensure probabilities are realistic and sum to 100%.
For each chart analyzed, create a comprehensive markdown report using the template structure:
Read and use as template: assets/analysis_template.md
The report must include all sections:
10. Disclaimer
File Naming Convention: Save each analysis as [SYMBOL]_technical_analysis_[YYYY-MM-DD].md
Example: SPY_technical_analysis_2025-11-02.md
If multiple charts are provided:
Do not batch analyses. Complete and save each report before moving to the next chart.
Example 1: Single Chart Analysis
User: "Please analyze this weekly chart of the S&P 500"
[Provides chart image]
Analyst:
1. Confirms receipt of chart image
2. Reads technical_analysis_framework.md for methodology
3. Conducts systematic analysis (trend, S/R, MA, volume, patterns)
4. Develops 3 scenarios with probabilities (e.g., 55% bullish continuation, 30% consolidation, 15% reversal)
5. Generates comprehensive analysis report using template
6. Saves as SPY_technical_analysis_2025-11-02.md
Example 2: Multiple Chart Analysis
User: "Analyze these three charts: Bitcoin, Ethereum, and Nasdaq"
[Provides 3 chart images]
Analyst:
1. Confirms receipt of 3 charts
2. Reads technical_analysis_framework.md
3. Analyzes Bitcoin chart completely → Generates report → Saves as BTC_technical_analysis_2025-11-02.md
4. Analyzes Ethereum chart completely → Generates report → Saves as ETH_technical_analysis_2025-11-02.md
5. Analyzes Nasdaq chart completely → Generates report → Saves as NDX_technical_analysis_2025-11-02.md
6. Notifies user that all three analyses are complete
Example 3: Focused Analysis Request
User: "I'm particularly interested in whether this stock will break above resistance. Analyze the chart."
[Provides chart image]
Analyst:
1. Conducts full systematic analysis
2. Pays special attention to resistance levels and breakout probability
3. Develops scenarios with emphasis on breakout vs. rejection possibilities
4. Assigns probabilities based on volume, trend strength, and proximity to resistance
5. Generates complete report with focused scenario analysis
This is an ADDITIVE mode, separate from the pure chart-analysis workflow
above. It activates only on an explicit contrarian-confirmation request —
typically after cot-contrarian-detector (step 1) has flagged a market
crowded and, optionally, news-reaction-failure-analyzer (step 2) has
shown it failed to react to favorable news. A plain "analyze this chart"
request still runs the original workflow (Steps 1-6 above) unchanged.
Confirm whether the WEEKLY chart is showing price-action evidence that a
crowded market is reversing: a weekly key reversal, an intraweek failed
extreme, or a confirmed-then-rejected failed breakout — vetoed by a
continuation check (a new closing extreme in the crowd's direction more
recent than any signal found). See
references/contrarian-confirmation-checklist.md for the full,
word-for-word methodology shared by both chart mode and script mode.
CROWDED_LONG or CROWDED_SHORT — from the user,or from a prior cot-contrarian-detector report.
way as the existing workflow, using the strict definitions below.
scripts/check_weekly_price_action.pywhen no chart is supplied, or when an auditable, deterministic result is
wanted instead of (or alongside) a visual read.
weeks) followed by a close through the prior week's opposite level.
level (default 52 weeks) that closes back through it the same week.
extreme-lookback level, rejected (closed back through) within <=3
subsequent weeks — week_of is the FAILURE week, never the breakout
week.
strictly more recent than the newest triggered signal above, vetoes
confirmation regardless of what triggered.
with a documented fallback) supplies stop_reference — the nearest
swing high when fading a crowded LONG, the nearest swing low when
fading a crowded SHORT.
Every comparison is a STRICT inequality; window truncation is
per-evaluated-week, not per-run. Full definitions, the direction-mirror
table, worked examples, and the confidence-HIGH rule are in
references/contrarian-confirmation-checklist.md — read it before
producing a chart-mode verdict, so chart and script judge identically.
symbol: BT
direction: CROWDED_LONG
mode: data # "chart" for a Claude chart-image read
verdict: CONFIRMED | NOT_CONFIRMED | INSUFFICIENT_DATA
confidence: HIGH | MEDIUM | LOW # LOW reserved, never emitted in v1
verdict_reason: key_reversal | failed_extreme | failed_breakout |
continuation_intact | no_reversal_evidence |
insufficient_weekly_bars | no_price_source | ...
checks:
weekly_key_reversal:
{ triggered, week_of, swing_window_weeks_used,
extreme_window_weeks_used, is_full_window_extreme, detail }
failed_extreme: { triggered, attempted_level, week_of, window_weeks_used, detail }
failed_breakout: { triggered, breakout_level, week_of, window_weeks_used, detail }
continuation: { new_closing_extreme_with_crowd, week_of, window_weeks_used }
swing_levels:
nearest_swing_high: { price, week_of, fallback }
nearest_swing_low: { price, week_of, fallback }
stop_reference: 0.0
weekly_bars_used: 52
last_completed_week: 2026-07-06
handoff: # consumed by contrarian-setup-gate (#241)
price_action: { verdict, confidence, stop_reference, report_path }
run_context:
{
price_symbol,
price_source,
proxy_used,
as_of,
lookbacks,
recency,
min_weeks,
detector_json,
detector_age_days,
schema_version,
}
Invariant: checks (and swing_levels) is null whenever
verdict: INSUFFICIENT_DATA — regardless of the specific reason
(no_price_source, insufficient_weekly_bars, a detector-json refusal,
...). A downstream consumer can check verdict alone before deciding
whether checks.* is safe to read, without branching on
verdict_reason.
File naming: ta_confirmation_<SYMBOL>_<as-of>.json and
ta_confirmation_<SYMBOL>_<as-of>.md, saved to reports/.
Chart images remain the PRIMARY input, consistent with this skill's
identity. Run the script instead of (or alongside) a chart read when no
chart is supplied, or when an auditable, deterministic result is
preferred:
python3 skills/technical-analyst/scripts/check_weekly_price_action.py \
--symbol BT --direction CROWDED_LONG --as-of 2026-07-15 \
--output-dir reports/
Or resolve direction from a cot-contrarian-detector report directly:
python3 skills/technical-analyst/scripts/check_weekly_price_action.py \
--symbol BT --detector-json reports/cot_crowding_2026-07-12.json \
--as-of 2026-07-15 --output-dir reports/
The script fetches weekly-resampled OHLC via a documented futures-to-ETF
fallback chain (see the module docstring in
scripts/check_weekly_price_action.py), truncates daily bars to --as-of
BEFORE resampling (no lookahead), and fails closed to
INSUFFICIENT_DATA — never a crash — on an unreadable (missing file),
syntactically invalid, stale, or structurally malformed --detector-json,
too little price history (--min-weeks, default 30), or no usable price
source.
If both chart mode and script mode produce a result for the same
symbol/direction and their verdicts DISAGREE, the final verdict is
NOT_CONFIRMED (verdict_reason: mode_disagreement), with both
sub-results attached for review — never silently prefer one mode. If one
mode is INSUFFICIENT_DATA and the other is a clean verdict, the clean
verdict stands.
confirms step 3 of 5 (Shapiro's process). Entry and exit planning are
still manual and still required; position sizing belongs to
position-sizer / futures-position-sizer, not this mode.
INSUFFICIENT_DATA never advances the pipeline — fail-closed onevery degraded input, always exits 0 with a report written.
only activates on an explicit contrarian-confirmation request.
the Confidence section of references/contrarian-confirmation-checklist.md.
This skill includes the following bundled resources:
Comprehensive methodology for technical analysis including:
Usage: Read this file before conducting analysis to ensure systematic, objective approach.
Structured template for technical analysis reports with all required sections.
Usage: Use this template structure for every analysis report. Copy the format and populate with specific findings for each chart.
Full methodology for Contrarian Confirmation Mode (Shapiro Step 3): direction
convention, window/truncation rules, the 3 signal checks + continuation
veto, swing-level (fractal pivot) rules, verdict synthesis, confidence
rules, the output contract, a chart-mode walkthrough, and the conservative
disagreement rule.
Usage: Read this file before producing a Contrarian Confirmation Mode
verdict — chart mode and scripts/check_weekly_price_action.py must judge
identically, so the same strict definitions apply to both.
Data-driven fallback CLI for Contrarian Confirmation Mode. Fetches
weekly-resampled OHLC (documented futures-to-ETF fallback chain,
--as-of information cutoff applied before resampling), runs the 3
signal checks + continuation veto + swing-level detection, and writes
ta_confirmation_<SYMBOL>_<as-of>.json/.md to reports/.
Usage: Run when no chart image is supplied, or when an auditable,
deterministic result is wanted. See the Contrarian Confirmation Mode
section above for invocation examples.
Query the U.S. Treasury Fiscal Data REST API for federal financial data. No API key required. Use for national debt (Debt to the Penny), Daily Treasury Statements, Monthly Treasury Statements, Treasury securities auctions, interest rates, foreign exchange rates, savings bonds, or U.S. government revenue and spending statistics.
Comprehensive US stock analysis including fundamental analysis (financial metrics, business quality, valuation), technical analysis (indicators, chart patterns, support/resistance), stock comparisons, and investment report generation. Use when user requests analysis of US stock tickers (e.g., "analyze AAPL", "compare TSLA vs NVDA", "give me a report on Microsoft"), evaluation of financial metrics, technical chart analysis, or investment recommendations for American stocks.
> Zero-shot time series forecasting with Google's TimesFM foundation model. Use this skill when forecasting ANY univariate time series — sales, sensor readings, stock prices, energy demand, patient vitals, weather, or scientific measurements — without training a custom model. Automatically checks system RAM/GPU before loading the model, supports CSV/DataFrame/array inputs, and returns point forecasts with calibrated prediction intervals. Includes a preflight system checker script that MUST be run before first use to verify the machine can load the model. For classical statistical time series models (ARIMA, SARIMAX, VAR) use statsmodels; for time series classification/clustering use aeon.
Query the U.S. Treasury Fiscal Data API for federal financial data including national debt, government spending, revenue, interest rates, exchange rates, and savings bonds. Access 54 datasets and 182 data tables with no API key required. Use when working with U.S. federal fiscal data, national debt tracking (Debt to the Penny), Daily Treasury Statements, Monthly Treasury Statements, Treasury securities auctions, interest rates on Treasury securities, foreign exchange rates, savings bonds, or any U.S. government financial statistics.
Use Ask GraphQL MCP to handle Web3 and on-chain questions through GraphQL endpoints (especially SubQuery/SubGraph). Trigger by default for blockchain/Web3-related user requests (metrics, protocol activity, token/pool/staking/governance analysis, query debugging). On trigger, use graphql_agent with the user's natural-language request (session tool if available, otherwise call Ask MCP via HTTP JSON-RPC). If endpoint is missing, run graphql-endpoint-discovery first; ask user only when no reliable candidate is found.
Cryptofeed - Real-time cryptocurrency market data feeds from 40+ exchanges. WebSocket streaming, normalized data, order books, trades, tickers. Python library for algorithmic trading and market data analysis.
Audit a spreadsheet for formula accuracy, errors, and common mistakes. Scopes to a selected range, a single sheet, or the entire model (including financial-model integrity checks like BS balance, cash tie-out, and logic sanity). Triggers on "audit this sheet", "check my formulas", "find formula errors", "QA this spreadsheet", "sanity check this", "debug model", "model check", "model won't balance", "something's off in my model", "model review".
Generate professional client-facing performance reports with portfolio returns, allocation breakdowns, and market commentary. Suitable for quarterly or annual distribution. Triggers on "client report", "performance report", "quarterly report for [client]", "generate reports", or "client statement".
Take tradermonty/technical-analyst from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.