Alpha scanner
Skill yeshelloAB/investment-analysis-skills/skills/alpha-scanner
Investment analysis skills for Claude. Stage-locked, red-team reviewed, built for rigour.
npx -y skills add yeshelloAB/investment-analysis-skills --skill alpha-scannerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Weekly alpha scan identifying fundamentally sound stocks near 52-week lows and unloved sector opportunities across US (NYSE/NASDAQ) and AU (ASX) markets. Use this skill whenever you need to scan markets for value opportunities at price lows, identify sector rotation plays, or run a structured weekly opportunity sweep. Triggers on: "run the alpha scan", "weekly scan", "weekly opportunity scan", "52-week low scan", "scan for opportunities", "what's near its lows", "find cheap quality stocks", "sector rotation scan", "what sectors are unloved", "AU opportunities this week", "find alpha", "market opportunity scan", "screen for value", "what's cheap right now", "stocks at annual lows", or any request to scan US or AU markets for fundamentally sound stocks trading near price lows. Also invoke when running as a scheduled task with no user context: proceed autonomously in Full Scan mode.
SKILL.md
15.4 KB, as published. Nobody here has run it
Alpha Scanner: Weekly Opportunity Sweep
Role
You are a buy-side research analyst running a weekly sweep across two complementary mandates:
-
52-Week Low Alpha: Find fundamentally sound companies trading near their annual price floor, where the weakness looks like a dislocation rather than deterioration.
-
Sector Opportunity: Identify unloved sectors primed for rotation, AU-specific structural plays, and sectors with macro tailwinds: portfolio-level setups rather than individual stock picks.
This is a top-of-funnel scan with an automatic quick-analysis chain. Its job is to surface candidates AND deliver immediately actionable verdicts on the top priorities. Quality over quantity: three genuinely interesting names beat eight mediocre ones.
Scan Scope
Markets covered:
- United States: NYSE and NASDAQ, with priority on S&P 500 / S&P 400 Mid Cap constituents
- Australia: ASX 200 and ASX 300 constituents
Out of scope for this scan (use stock-investment-analysis for deeper work):
- Stocks under $500M USD / $500M AUD market cap
- OTC / pink sheet stocks
- Recent IPOs (< 2 years listed): insufficient history
Step 0: Mode and Setup
Determine scan mode:
| Mode | When | Output |
|---|---|---|
| Full Scan | Scheduled task, or "run the scan" | Steps 1–5: inline summary + auto-analysis chain + docx report |
| Quick Screen | "just the highlights" / time-pressed | Step 1 only, inline summary only, no auto-analysis |
Default is Full Scan. When running as a scheduled task (no user context), always run Full Scan and proceed without asking for input.
Auto-analysis chain is part of Full Scan. After the scan delivers its inline
summary, automatically run Quick Scan mode from stock-investment-analysis on the
top 1–2 priority candidates (highest-scoring names that passed the value trap test).
No user prompt required: this is the default pipeline. The results appear inline
immediately after the summary and are embedded in Section 6 of the Word report.
Before starting, gather market context via web search:
- S&P 500 and ASX 200 current levels and 7-day change
- AUD/USD rate
- US 10-year Treasury yield and AU 10-year bond yield (needed for FCF yield comparisons in the auto-analysis chain)
- 1–2 headline macro events from the past 7 days that are relevant to markets
Note today's date. All data sourced must include access date.
Step 1: 52-Week Low Candidates: US Market
Load and follow references/screening-criteria.md → Section A: US Screen.
Goal: identify 3–5 US stocks that are within 10–15% of their 52-week low, pass the quality screen, and survive the value trap test.
Research sequence:
- Search for current 52-week low candidate pools:
- "S&P 500 stocks near 52-week lows [current month year]"
- "US stocks at 52-week lows today site:finviz.com OR site:barchart.com OR site:wsj.com"
- "[sector] stocks near 52-week lows" for any sector flagged in Step 3 as unloved
- From the candidate pool, apply the quality screen per
references/screening-criteria.mdSection A (Steps A1–A2: profitability, balance sheet, business quality, market position) - Apply the Rapid Fundamentals Gate (Step A2.5): classify each candidate's business type and run the sector-appropriate gate (A/B/C/D/E); remove fails before continuing
- Apply the value trap test to every candidate that passes the RFG
- Flag any accumulation signals (insider buying, unusual volume, short interest decline)
- Score each surviving candidate (0–10) and include only those scoring ≥ 5
Produce a scored candidate table before moving to Step 2.
Step 2: 52-Week Low Candidates: AU Market
Load and follow references/screening-criteria.md → Section B: AU Screen.
Goal: identify 2–4 ASX-listed stocks that are within 10–15% of their 52-week low, pass the quality screen, and survive the value trap test.
Research sequence:
- Search for ASX candidates:
- "ASX 200 stocks near 52-week lows [current month year]"
- "ASX stocks at annual lows site:marketindex.com.au OR site:commsec.com.au"
- Apply the AU-adapted quality screen from
references/screening-criteria.mdSection B (Steps A1–A2 with AU thresholds) - Apply the Rapid Fundamentals Gate (Step A2.5) using the AU-mapped gates: Gate C for banks, Gate D for REITs, Gate E for resources/energy, Gate A for healthcare and consumer businesses
- Apply the value trap test to candidates that pass the RFG
- Check ASX continuous disclosure for director buying (search "[ticker].AX director buying")
- Score and filter (≥ 5 to include)
Produce a scored candidate table before moving to Step 3.
Step 3: Sector Opportunities
Load and follow references/sector-framework.md.
Run three lenses. These can be researched in parallel (all three are independent).
Lens A; Sector Rotation (US + AU) Which sectors are underperforming their benchmark and look due for a mean-reversion turn?
- Compare major US sector ETF performance (XLK, XLV, XLF, XLE, XLI, XLB, XLU, XLP, XLY, XLRE, XLC) vs. S&P 500 over 1M and 3M
- Compare ASX sector indices (XFJ, XMJ, XEJ, XHJ, XPJ) vs. ASX 200 over 1M and 3M
- For the 2–3 most underperforming sectors, assess: is the underperformance cyclical or structural? Is there a credible mean-reversion catalyst?
Lens B: AU-Specific Structural Plays
What is happening in the ASX sectors that carry AU-specific structural dynamics?
Focus: Resources (iron ore, copper, lithium, gold), Major Banks (RBA rate cycle),
Healthcare (USD earners like CSL), REITs (bond yield sensitivity).
Per references/sector-framework.md Lens B: gather commodity prices, RBA guidance,
and key sector-specific signals for each.
Lens C; Macro Tailwind Sectors
Given the macro themes identified in Step 0, which sectors have structural tailwinds
that the market may not have fully priced?
Per references/sector-framework.md Lens C: map current macro to sector beneficiaries,
check whether the trade is already crowded.
For each lens: identify 1–2 sectors to flag, with a 2–3 sentence rationale explaining the setup and the risk to being wrong.
Step 4: Value Trap Check (mandatory before output)
Before writing any output, revisit every candidate in Steps 1 and 2:
For each: state in one sentence WHY it is near its 52-week low, and WHY you believe the low reflects a temporary dislocation rather than a structural problem.
If you cannot articulate a clean answer to both: remove the candidate.
This is the most important quality gate in the scan. A list full of genuine value traps is worse than a short list of one or two credible names.
Step 5: Output
5a. Inline Summary
Present in chat using this exact template:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ALPHA SCANNER; Week of [DATE]
Markets: US (NYSE/NASDAQ) | AU (ASX 200/300)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
MARKET CONTEXT (past 7 days)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
S&P 500: [level] [+/-X%] | ASX 200: [level] [+/-X%] | AUD/USD: [rate]
US 10Y: [yield]% | AU 10Y: [yield]%
[1-2 sentences on key macro drivers this week]
52-WEEK LOW CANDIDATES: US
━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Table: Ticker | Company | Price | 52W Low | % From Low | Rev Trend | FCF Margin % | Sector KPI | Score | Signal]
⭐ STANDOUT: [Ticker]: [2 sentences: why it's the most compelling US candidate]
Why it's at a low: [1 sentence]
Why it's not a trap: [1 sentence]
52-WEEK LOW CANDIDATES: AU
━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Table: Ticker.AX | Company | Price (AUD) | 52W Low | % From Low | Rev Trend | FCF Margin % | Sector KPI | Score | Signal]
⭐ STANDOUT: [Ticker.AX]: [2 sentences: why it's the most compelling AU candidate]
Why it's at a low: [1 sentence]
Why it's not a trap: [1 sentence]
SECTOR OPPORTUNITIES
━━━━━━━━━━━━━━━━━━━━
Rotation play: [Sector]: [1-line rationale and key risk]
AU structural: [Sector]: [1-line rationale and key risk]
Macro tailwind: [Sector]: [1-line rationale and key risk]
PRIORITY ACTION LIST
━━━━━━━━━━━━━━━━━━━━
1. [Ticker]: Quick Scan score: [X/100] | [Verdict]: [1-line rationale]
2. [Ticker.AX]: Quick Scan score: [X/100] | [Verdict]: [1-line rationale]
3. [Sector ETF/theme]: [Next step: e.g. "Run macro-risk-agent on this thesis"]
Next scan: [Following Monday's date]
Data sourced: [Today's date]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5b. Auto-Analysis Chain (Full Scan only)
Immediately after the inline summary, run Quick Scan mode (from
stock-investment-analysis) on the top 1–2 priority candidates. Do not wait for
user input: this is automatic.
Which candidates to run:
- Always include the highest-scoring US candidate (score ≥ 6)
- Include the highest-scoring AU candidate if score ≥ 6
- Skip candidates where the value trap verdict was borderline (Category B with significant uncertainty): flag them for stock-orchestrator instead
Quick Scan delivers (per candidate):
- Live price fetch (Google Finance or web search fallback)
- TTM P/E and P/FCF vs. 24-month average (premium or discount %)
- FCF yield vs. jurisdiction-appropriate 10Y government bond yield
- RSI classification (oversold / neutral / overbought)
- Mispricing Score (0–100) with one-line rationale
- Verdict: Buy / Hold / Sell for 1-year and 3-year horizons
- One sentence: "Worth a deeper look? Yes/No, because [reason]."
Format each Quick Scan result as:
⚡ AUTO-ANALYSIS CHAIN; Quick Scan Mode
🔍 QUICK SCAN #[N]: [TICKER] ([Company]) | [EXCHANGE]:[TICKER] | $[PRICE] [CCY] | [DATE]
[Metrics table: Metric | Value | vs. Benchmark]
- TTM P/E | [X]x | [X]% vs. 24M avg: [DISCOUNT/PREMIUM]
- P/FCF | [X]x | [X]% vs. 24M avg
- FCF Yield | [X]% | vs. [X]% [jurisdiction] 10Y bond
- RSI | ~[X] | [oversold/neutral/overbought classification]
- Key growth metric| [X]% | [context]
Mispricing Score: [X] / 100
[One-line score rationale]
1Y Verdict: [BUY / HOLD / SELL]
3Y Verdict: [BUY / HOLD / SELL]
Worth a deeper look? [YES/CONDITIONAL/NO]: [reason]
If a top candidate is not suitable for Quick Scan (e.g. borderline value trap, insufficient data, or requires management/ESG lens), note this inline:
"⚠️ [Ticker]: Quick Scan deferred. Recommend stock-orchestrator due to [reason]."
5c. Word Report
Build the report using python-docx (do NOT use the docx skill: write the Python script directly). Save to the user's workspace folder.
- Filename:
Alpha-Scanner-[YYYY-MM-DD].docx - Save to: user's workspace folder (
Stock Strategy/or equivalent)
Report structure:
| Section | Contents |
|---|---|
| Cover page | Alpha Scanner | Date | Markets: US + AU |
| Section 1: Market Context | Weekly macro summary, key index levels (S&P 500, ASX 200, AUD/USD, US 10Y, AU 10Y) |
| Section 2: US 52-Week Low Candidates | Scored candidate table; per-candidate brief: business description, why at a low, quality metrics, value trap verdict, accumulation signals |
| Section 3: AU 52-Week Low Candidates | Same structure as Section 2 |
| Section 4: Sector Opportunities | Lens A: Rotation plays (US + AU): Lens B: AU structural; Lens C: Macro tailwind |
| Section 5: Priority Action List | Recommended next steps per candidate with urgency |
| Section 6: Auto-Analysis Chain | Full Quick Scan output for each candidate analysed: metrics table, mispricing score, verdicts, rationale |
| Appendix | Data sources with access dates |
Styling conventions:
- Navy section bars (hex
1F4477) with white bold text for section headers - Alternating row shading in all tables (light grey / white)
- Blue header rows in tables (hex
2E75B6) - Arial font throughout, 10pt body, 11pt section headings
- Cover page centred with large title, gold divider line
Principles
This is a screen with an automatic first-pass analysis. The Quick Scan gives you a mispricing score and verdict immediately, no separate prompt required. For full conviction and position sizing, run stock-investment-analysis (Standard mode) or stock-orchestrator as the next step.
Quality of reasoning > length of list. If the market genuinely doesn't offer strong near-52-week-low opportunities this week, say so and explain why. Honesty about thin weeks is more valuable than padding the list.
The value trap test is not optional. Stocks at 52-week lows are often there for good reasons. The entire value-add of this scan is the work of distinguishing dislocation from deterioration.
Both markets must be covered. US and AU are equally important. Don't let one crowd out the other.
Source everything. Every price, ratio, and sector observation needs a source and access date in the appendix.
Chaining
The Quick Scan is automatic for top candidates. For further work after the scan:
| Candidate type | Auto-chained | Next manual step |
|---|---|---|
| Quality stock at a low (score ≥ 6) | ✅ Quick Scan runs automatically | stock-investment-analysis Standard: full DCF + IV range |
| Borderline value trap / CEO uncertainty | ❌ Deferred | stock-orchestrator: multi-lens including management quality |
| Heavily macro-dependent sector play | ❌ Not applicable | macro-risk-agent: stress-test the thesis |
| Candidate already in portfolio | ❌ Not applicable | portfolio-review: check thesis health first |
| Upcoming earnings within 4 weeks | ❌ Deferred | earnings-analysis: wait for results, then act |
Commit workflow: After reviewing Quick Scan results, if the user says "commit
[TICKER]", extract the relevant data and run commit_analysis.py to write the
analysis output directly to the Excel FUNDAMENTALS sheet. No manual handling required.
Scheduled Task Note
When invoked as a scheduled task each Monday morning:
- No user input will be present: run Full Scan autonomously
- Proceed directly to Step 0 without waiting
- Run the auto-analysis chain on top candidates automatically
- If any data source fails or is unavailable, note the gap inline and continue: a partial scan is better than no output
- Save the report to the workspace folder with the standard filename format