← Back to Skills Marketplace
rsoutar

Claw Screener

by Richard Soutar · GitHub ↗ · v1.0.3
cross-platform ✓ Security Clean
716
Downloads
0
Stars
2
Active Installs
4
Versions
Install in OpenClaw
/install claw-screener
Description
Stock screener combining Williams %R oversold signals with Warren Buffett-style fundamental analysis. Supports US (S&P 500) and Thai (SET) markets.
README (SKILL.md)

Claw-Screener

A stock screener that combines technical analysis (Williams %R oversold signals) with Warren Buffett-style fundamental analysis using SEC data. Supports US (S&P 500) and Thai (SET) markets.

When to Use This Skill

Use this skill when you need to:

  • Find oversold stocks with strong fundamentals
  • Screen for quality stocks using Buffett's 10 formulas
  • Screen for long-term compounders using Carlson filters (ROIC, growth, buybacks)
  • Analyze individual stocks for investment decisions
  • Get daily stock screening results in text, JSON, or Telegram format

Tools

This skill provides the following capabilities:

1. Combined Screening

Finds stocks that are both technically oversold (Williams %R \x3C -80) and fundamentally strong (Buffett score >= threshold).

Command:

bun run src/screening.ts [options]

Options:

Flag Description Default
--market Market: us or bk us
--min-score Minimum Buffett score (0-10) 5
--top-n Number of results to show 10
--format Output: text, json, telegram text

Examples:

bun run src/screening.ts
bun run src/screening.ts --market us --min-score 7 --top-n 5
bun run src/screening.ts --market bk
bun run src/screening.ts --format json
bun run src/screening.ts --format telegram

2. Technical Only Scan

Fast oversold scan using Williams %R indicator only. No SEC data required. Works for both US and Thai markets.

Command:

bun run src/technicalOnly.ts [options]

Options:

Flag Description Default
--market Market: us or bk us
--threshold Williams %R threshold -80
--top-n Number of results to show 20
--format Output: text, json, telegram text

Examples:

bun run src/technicalOnly.ts
bun run src/technicalOnly.ts --threshold -70 --top-n 50
bun run src/technicalOnly.ts --market bk

3. Analyze Stock

Deep analysis of a single stock using Buffett's 10 formulas.

Command:

bun run src/analyze.ts \x3Cticker> [options]

Options:

Flag Description Default
--format Output: text, json, telegram text

Examples:

bun run src/analyze.ts AAPL
bun run src/analyze.ts MSFT --format telegram
bun run src/analyze.ts GOOGL --format json
bun run src/analyze.ts PTT.BK

4. Compounding Machine

Screens for "compounders" using Carlson-style filters:

  • Revenue and net income YoY trend strength
  • ROIC threshold (default >15%)
  • Share count reduction over 3 years (buyback signal)
  • Operating margin threshold (default >20%)
  • Includes current yield vs 5-year average and a simple 10-year DCF context

Command:

bun run src/compoundingMachine.ts [options]

Options:

Flag Description Default
--market Market universe: us or bk us
--tickers Comma-separated tickers (overrides market universe) -
--max-tickers Limit universe size all
--top-n Number of passing stocks to show 25
--concurrency Parallel fetch workers 4
--format Output: text or json text
--db-path SQLite cache path sec_cache.db
--ttl-days Cache TTL in days 7
--min-roic ROIC threshold (%) 15
--min-op-margin Operating margin threshold (%) 20
--min-buyback Required 3Y share reduction (%) 2
--show-rejected Include failed tickers with reasons in output off

Examples:

bun run src/compoundingMachine.ts
bun run src/compoundingMachine.ts --tickers AAPL,MSFT,NVDA --top-n 10
bun run src/compoundingMachine.ts --format json --max-tickers 100
bun run src/compoundingMachine.ts --tickers PLTR --show-rejected

Runtime / Caching Notes:

  • First uncached run on full US universe can take ~20-30+ minutes.
  • This is expected: each ticker requires multiple Yahoo fundamentals/quote requests and retry backoff for rate-limit resilience.
  • Subsequent runs are much faster due to SQLite caching (sec_cache.db, TTL default 7 days).
  • For quick checks, run smaller scans first (for example --max-tickers 50 or specific --tickers).

Agent Guidance for User Messaging:

  • If user runs full-universe Compounding Machine scan, explicitly warn that initial run may take ~20-30 minutes.
  • Suggest quick-test alternatives while waiting:
    • bun run src/compoundingMachine.ts --max-tickers 50
    • bun run src/compoundingMachine.ts --tickers AAPL,MSFT,NVDA

5. Watchlist Management

Track stocks you're interested in and get alerts when they become oversold or overbought.

Command:

bun run src/watchList.ts \x3Ccommand> [options]

Commands:

Command Description
add \x3Cticker> Add a stock to your watchlist
remove \x3Cticker> Remove a stock from your watchlist
list Show all watched stocks

Options:

Flag Description Default
--market us|th Market: us (US) or th (Thai) us
--notes '...' Optional notes for the stock -
--alert-threshold Williams %R threshold for alerts -

Examples:

bun run src/watchList.ts add AAPL
bun run src/watchList.ts add AAPL --market us --notes 'Big tech'
bun run src/watchList.ts add PTT.BK --market th
bun run src/watchList.ts remove AAPL
bun run src/watchList.ts list
bun run src/watchList.ts list --market us

Storage: Watchlist is saved to ~/.claw-screener-watchlist.json

Buffett's 10 Formulas

The fundamental analysis evaluates stocks against Warren Buffett's criteria:

# Formula Target Description
1 Cash Test > Total Debt Cash covers all debt
2 Debt-to-Equity \x3C 0.5 Low leverage
3 Return on Equity > 15% Efficient use of capital
4 Current Ratio > 1.5 Short-term liquidity
5 Operating Margin > 12% Operational efficiency
6 Asset Turnover > 0.5 Asset efficiency
7 Interest Coverage > 3x Ability to pay interest
8 Earnings Stability Positive Consistent profitability
9 Free Cash Flow > 0 Cash generation
10 Capital Allocation > 15% ROE Management effectiveness

Scoring: Each passing formula earns 1 point. Maximum score: 10/10.

Technical Indicator

Williams %R (Williams Percent Range)

  • Range: -100 to 0
  • Oversold: \x3C -80 (potential buy signal)
  • Overbought: > -20 (potential sell signal)

Combined Score Formula

Combined score = (Technical Score × 0.3) + (Fundamental Score × 0.7)

  • Technical Score: (Williams %R + 100) / 100
  • Fundamental Score: (Buffett Score / 10) × 100

Data Sources

  • US Stocks: SEC EDGAR for fundamentals, Yahoo Finance for prices
  • Thai Stocks: Yahoo Finance only (no SEC data available)

Installation

Runtime Requirements

  • Bun (>=1.3.1) - Required runtime for executing TypeScript scripts
  • Node.js is NOT required as Bun provides all necessary runtime functionality

Install Bun

If you don't have Bun installed, run:

# macOS/Linux
curl -fsSL https://bun.sh/install | bash

# Windows (PowerShell)
iwr https://bun.sh/install -outfile "install.ps1"; ./install.ps1

Install Dependencies

bun install

File Persistence

This skill creates and manages the following files:

File Location Purpose TTL
Watchlist ~/.claw-screener-watchlist.json User's stock watchlist Permanent
SEC Cache sec_cache.db Cached SEC EDGAR financial data 7 days (default)
Price Cache price_cache.db Cached stock price data 1 day (default)

Cache Management

  • Cache files are automatically created on first run
  • Use --ttl-days flag with compounding machine to adjust cache TTL
  • Cache files can be deleted to force fresh data fetch
  • Cache improves performance significantly on subsequent runs

Notes

  • First run on full US universe can take ~20-30+ minutes (expected behavior)
  • Subsequent runs are much faster due to caching
  • For quick tests, use --max-tickers 50 or specific --tickers

Bun Scripts

bun run dev              # Run screening (alias for bun run src/screening.ts)
bun run screening        # Run combined screening
bun run technical        # Run technical-only scan
bun run analyze          # Analyze a stock (requires ticker argument)
bun run compounder       # Run Compounding Machine screener
bun run watchlist:add    # Add stock to watchlist
bun run watchlist:remove # Remove stock from watchlist
bun run watchlist:list   # List watched stocks

Output Format Examples

Text (Default)

📊 Combined Quality Screening (US (S&P 500))
Technical: Oversold signals (Williams %R \x3C -80)
Fundamental: Warren Buffett's 10 formulas on SEC data
Minimum Buffett Score: 5/10

Results:
  Total Scanned: 503
  Oversold Found: 42
  Quality Stocks: 8 (Buffett ≥5/10)

Top 10 Opportunities:

1. AAPL   — Combined: 85.2% | Buffett: 8/10 | WR: -82.3
2. MSFT   — Combined: 79.1% | Buffett: 7/10 | WR: -85.1

Telegram

📊 Combined Quality Screening (US (S&P 500))
Scanned: 503 stocks
Oversold: 42
Quality (Buffett ≥5/10): 8

🌟 Top 10 Quality Opportunities:

1. **AAPL** — Combined: 85% | Buffett: 8/10 | WR: -82.3
2. **MSFT** — Combined: 79% | Buffett: 7/10 | WR: -85.1
Usage Guidance
This skill appears to do what it says: fetch public Yahoo/SEC data, compute indicators, and cache results locally. Before installing or running it: (1) verify src/secApi.ts to confirm it only calls EDGAR or other documented public endpoints (no hidden upload/telemetry endpoints); (2) be aware it needs network access and will create SQLite cache files and a watchlist JSON (run it in a sandbox or dedicated folder if you want to contain files); (3) ensure you have bun >=1.3.1 available or run via a Node environment that supports the dependencies; (4) no credentials are required — do not provide secrets. If you want extra assurance, run the code in a disposable container and inspect outgoing network traffic on first run.
Capability Analysis
Type: OpenClaw Skill Name: claw-screener Version: 1.0.3 The OpenClaw AgentSkills skill bundle 'claw-screener' is classified as benign. All code and documentation align with the stated purpose of a stock screener. Network requests are made to legitimate financial data sources (Yahoo Finance, SEC EDGAR, GitHub for S&P 500 list). File system operations are limited to creating and managing SQLite cache files (`sec_cache.db`, `price_cache.db`) and a user watchlist (`~/.claw-screener-watchlist.json`), all of which are explicitly declared in `SKILL.md`. There is no evidence of data exfiltration, unauthorized execution, persistence mechanisms, or prompt injection attempts in `SKILL.md` designed to subvert the agent's behavior. The `curl | bash` command for Bun installation, while a general security consideration for any external script, is for installing a runtime dependency and does not indicate malicious intent within the skill's own code or instructions.
Capability Assessment
Purpose & Capability
Name/description (technical + Buffett-style fundamental screening for US/Thai markets) matches the code and SKILL.md. The code uses yahoo-finance2 and SEC data (via a local SECClient), maintains local caches, and provides the CLI entrypoints described. Declared runtime (bun >=1.3.1) and cache/watchlist files align with the stated purpose.
Instruction Scope
Runtime instructions run TypeScript files via bun. The scripts read/write local cache files (sec_cache.db, price_cache.db) and a watchlist (~/.claw-screener-watchlist.json) which is reasonable for a screener. As with any networked screener, the skill performs many network calls to Yahoo and EDGAR; the SKILL.md explicitly documents long initial run times. Recommend reviewing src/secApi.ts to confirm it only queries public EDGAR endpoints (no hidden/private endpoints).
Install Mechanism
No installer or remote download is declared (instruction-only for running the included code). The repo contains package.json/package-lock with standard npm dependencies (yahoo-finance2, sql.js). No unusual external binary downloads or obfuscated install steps were observed in the provided manifest.
Credentials
The skill does not request environment variables or credentials. It only needs network access to public data sources and file system access to store local SQLite caches and a watchlist file — proportionate to its purpose. There are no signs it requires unrelated tokens or secrets.
Persistence & Privilege
always:false and user-invocable — normal. The skill creates/updates local cache DBs (sec_cache.db, price_cache.db) and a watchlist JSON; this is expected for caching/alerts. If you prefer, run in a controlled directory or container to confine these files to a location you control.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install claw-screener
  3. After installation, invoke the skill by name or use /claw-screener
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.3
**Changelog for claw-screener v1.0.3** - Added explicit file requirements and runtime version (Bun ≥1.3.1) to SKILL.md metadata - Declared additional persisted files: `sec_cache.db` and `price_cache.db` in SKILL.md - Listed config path and described storage files in documentation - Updated installation instructions to clarify Bun as required runtime - No functional code changes—documentation and metadata improvements only
v1.0.2
**Adds "Compounding Machine" screener for long-term compounders.** - Introduced a new "Compounding Machine" tool (via `src/compoundingMachine.ts`) to screen for compounders using Carlson-style filters (ROIC, revenue/net income growth, buybacks, operating margin). - Updated documentation (README.md, SKILL.md) to describe the new feature and its command-line options. - Added guidance for expected scan runtimes and caching behavior for the compounding tool. - Updated NPM scripts to include the new "compounder" command. - No breaking changes to existing screening or watchlist functionality.
v1.0.1
- Added watchlist management: track stocks, add/remove/list, set alert thresholds, and attach notes. - Introduced new CLI (`src/watchList.ts`) and related NPM scripts for watchlist operations. - Watchlist is saved to `~/.claw-screener-watchlist.json`. - Updated documentation to include watchlist commands, usage examples, and requirements.
v1.0.0
- Initial release of claw-screener. - Combines Williams %R technical oversold screening with Warren Buffett-style fundamental analysis (10 formulas). - Supports both US (S&P 500) and Thai (SET) stock markets. - Provides combined screening, technical-only screening, and deep fundamental analysis for individual stocks. - Multiple output formats: text, JSON, and Telegram. - Includes clear CLI usage with customizable options for each screening mode.
Metadata
Slug claw-screener
Version 1.0.3
License
All-time Installs 2
Active Installs 2
Total Versions 4
Frequently Asked Questions

What is Claw Screener?

Stock screener combining Williams %R oversold signals with Warren Buffett-style fundamental analysis. Supports US (S&P 500) and Thai (SET) markets. It is an AI Agent Skill for Claude Code / OpenClaw, with 716 downloads so far.

How do I install Claw Screener?

Run "/install claw-screener" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Claw Screener free?

Yes, Claw Screener is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Claw Screener support?

Claw Screener is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Claw Screener?

It is built and maintained by Richard Soutar (@rsoutar); the current version is v1.0.3.

💬 Comments