agentleFS
yeshelloAByeshelloAB/investment-analysis-skills/skills/alpha-scanner/SKILL.md

alpha-scanner

Skill1 starsChanged 5 months agoApache-2.0View on GitHub

Weekly alpha scan identifying fundamentally sound stocks near 52-week lows and unloved sector opportunities across US (NYSE/NASDAQ) and AU (ASX) markets.

1 other project uses a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

18 rules. About 0 are common, 16 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈16

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Default is Full Scan: When running as a scheduled task (no user context), always run Full Scan and proceed without asking for input.

    line 60
  2. Very specific:

    Auto-analysis chain is part of Full Scan: After the scan delivers its inline summary, automatically run Quick Scan mode from …

    line 63
  3. Distinctive:

    No user prompt required: this is the default pipeline.

    line 66
  4. Distinctive:

    Before starting, gather market context via web search:

    line 69
  5. Distinctive:

    Search for current 52-week low candidate pools:

    line 87
  6. Distinctive:

    Search for ASX candidates:

    line 111
  7. Distinctive:

    Check ASX continuous disclosure for director buying (search "[ticker].AX director buying")

    line 119
  8. Distinctive:

    Run three lenses. These can be researched in parallel (all three are independent).

    line 130
  9. Distinctive:

    Before writing any output, revisit every candidate in Steps 1 and 2:

    line 160
  10. Distinctive:

    If you cannot articulate a clean answer to both: remove the candidate.

    line 165
  11. Distinctive:

    Always include the highest-scoring US candidate (score ≥ 6)

    line 232
  12. Distinctive:

    Quality of reasoning > length of list: If the market genuinely doesn't offer strong near-52-week-low opportunities this week, say so and …

    line 312
  13. Distinctive:

    Source everything: Every price, ratio, and sector observation needs a source and access date in the appendix.

    line 323
  14. Very specific:

    Commit workflow: After reviewing Quick Scan results, if the user says "commit [TICKER]", extract the relevant data and run …

    line 340
  15. Distinctive:

    When invoked as a scheduled task each Monday morning:

    line 348
  16. Distinctive:

    No user input will be present: run Full Scan autonomously

    line 349
  17. Distinctive:

    Run the auto-analysis chain on top candidates automatically

    line 351
  18. Distinctive:

    If any data source fails or is unavailable, note the gap inline and continue: a partial scan is better than no output

    line 352

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Alpha Scanner: Weekly Opportunity Sweep

Role

You are a buy-side research analyst running a weekly sweep across two complementary mandates:

  1. 52-Week Low Alpha: Find fundamentally sound companies trading near their annual price floor, where the weakness looks like a dislocation rather than deterioration.
  2. 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:

ModeWhenOutput
Full ScanScheduled task, or "run the scan"Steps 1–5: inline summary + auto-analysis chain + docx report
Quick Screen"just the highlights" / time-pressedStep 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:

  1. 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
  2. From the candidate pool, apply the quality screen per references/screening-criteria.md Section A (Steps A1–A2: profitability, balance sheet, business quality, market position)
  3. 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
  4. Apply the value trap test to every candidate that passes the RFG
  5. Flag any accumulation signals (insider buying, unusual volume, short interest decline)
  6. 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:

  1. 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"
  2. Apply the AU-adapted quality screen from references/screening-criteria.md Section B (Steps A1–A2 with AU thresholds)
  3. 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
  4. Apply the value trap test to candidates that pass the RFG
  5. Check ASX continuous disclosure for director buying (search "[ticker].AX director buying")
  6. 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:

SectionContents
Cover pageAlpha Scanner | Date | Markets: US + AU
Section 1: Market ContextWeekly macro summary, key index levels (S&P 500, ASX 200, AUD/USD, US 10Y, AU 10Y)
Section 2: US 52-Week Low CandidatesScored candidate table; per-candidate brief: business description, why at a low, quality metrics, value trap verdict, accumulation signals
Section 3: AU 52-Week Low CandidatesSame structure as Section 2
Section 4: Sector OpportunitiesLens A: Rotation plays (US + AU): Lens B: AU structural; Lens C: Macro tailwind
Section 5: Priority Action ListRecommended next steps per candidate with urgency
Section 6: Auto-Analysis ChainFull Quick Scan output for each candidate analysed: metrics table, mispricing score, verdicts, rationale
AppendixData 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 typeAuto-chainedNext manual step
Quality stock at a low (score ≥ 6)✅ Quick Scan runs automaticallystock-investment-analysis Standard: full DCF + IV range
Borderline value trap / CEO uncertainty❌ Deferredstock-orchestrator: multi-lens including management quality
Heavily macro-dependent sector play❌ Not applicablemacro-risk-agent: stress-test the thesis
Candidate already in portfolio❌ Not applicableportfolio-review: check thesis health first
Upcoming earnings within 4 weeks❌ Deferredearnings-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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.