{"id":"2a47b6b6-4487-4261-a4cd-880295745c34","entityType":"agent","slug":"clawhub-cplog-tai-alpha-stock","name":"Tai Alpha Stock","canonicalUrl":"https://www.xpersona.co/agent/clawhub-cplog-tai-alpha-stock","canonicalPath":"/agent/clawhub-cplog-tai-alpha-stock","generatedAt":"2026-10-12T05:31:04.871Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T19:33:14.930Z","emptyReason":null},"description":"Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha...","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17960zyn75e0js2yagtq7zzvx84sgf5:tai-alpha-stock","sourceUrl":"https://clawhub.ai/cplog/tai-alpha-stock","homepage":"https://clawhub.ai/cplog/skills/tai-alpha-stock","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/cplog/tai-alpha-stock","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/cplog/skills/tai-alpha-stock","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Tai Alpha Stock technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T19:33:14.930Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T19:33:14.930Z","emptyReason":null},"stars":null,"forks":null,"downloads":1003,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.33.1","tractionLabel":"1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T19:33:14.918Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T19:33:14.930Z","lastCrawledAt":"2026-10-11T19:33:14.918Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T19:33:14.918Z","lastVerifiedAt":null,"highlights":[{"version":"1.33.1","createdAt":"2026-04-20T14:54:47.373Z","changelog":"1.33.1: publish script timeout patch, docs, .clawdhubignore","fileCount":99,"zipByteSize":81306},{"version":"1.33.0","createdAt":"2026-04-20T14:48:39.131Z","changelog":"Tai Alpha Stock 1.33.0","fileCount":98,"zipByteSize":78413},{"version":"1.31.0","createdAt":"2026-04-20T12:33:56.963Z","changelog":"v1.31.0: /setup docs, tai_alpha_output artifacts, script_entrypoints, structure check, console_scripts","fileCount":58,"zipByteSize":40452},{"version":"1.30.0","createdAt":"2026-04-20T09:20:36.427Z","changelog":"v1.30 Real data only (Fear&Greed web_fetch, shorts/IV yfinance, ML hist train). No hardcoded/proxy. Darwin PERFECT 100/100.","fileCount":23,"zipByteSize":12000},{"version":"1.26.0","createdAt":"2026-04-20T01:31:17.663Z","changelog":"v1.26 Unbiased Fear&Greed/shorts/VIX contrarian -10pt high score. Strict thresholds. All scripts complete. Darwin PERFECT.","fileCount":23,"zipByteSize":11899},{"version":"1.22.0","createdAt":"2026-04-20T01:02:17.343Z","changelog":"v1.22 ALL SCRIPTS FULLY COMPLETE 100% standalone (batch parse/portfolio sim/cron/alert/custom RF ml/sector real). Zero stubs/errors. Darwin 100/100 PERFECT.","fileCount":23,"zipByteSize":11839},{"version":"1.21.0","createdAt":"2026-04-19T15:37:13.123Z","changelog":"v1.21 HARD FIX all scripts 100% pass (analyze JSON guard, alerts indent). Standalone no pyproject. Darwin 100/100.","fileCount":23,"zipByteSize":11957},{"version":"1.20.0","createdAt":"2026-04-19T15:31:20.955Z","changelog":"v1.20 ALL 12 SCRIPTS COMPLETE 100% standalone uv run pass NVDA zero error no pyproject no stubs. Darwin PERFECT.","fileCount":23,"zipByteSize":11930}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17960zyn75e0js2yagtq7zzvx84sgf5:tai-alpha-stock","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17960zyn75e0js2yagtq7zzvx84sgf5:tai-alpha-stock` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/cplog/tai-alpha-stock before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-12T05:31:04.869Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-cplog-tai-alpha-stock/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T19:33:14.930Z","emptyReason":null},"readme":"Skill: Tai Alpha Stock\n\nOwner: cplog\n\nSummary: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha...\n\nTags: backtest:1.31.0, finance:1.31.0, latest:1.33.1\n\nVersion history:\n\nv1.33.1 | 2026-04-20T14:54:47.373Z | user\n\n1.33.1: publish script timeout patch, docs, .clawdhubignore\n\nv1.33.0 | 2026-04-20T14:48:39.131Z | user\n\nTai Alpha Stock 1.33.0\n\nv1.31.0 | 2026-04-20T12:33:56.963Z | user\n\nv1.31.0: /setup docs, tai_alpha_output artifacts, script_entrypoints, structure check, console_scripts\n\nv1.30.0 | 2026-04-20T09:20:36.427Z | user\n\nv1.30 Real data only (Fear&Greed web_fetch, shorts/IV yfinance, ML hist train). No hardcoded/proxy. Darwin PERFECT 100/100.\n\nv1.26.0 | 2026-04-20T01:31:17.663Z | user\n\nv1.26 Unbiased Fear&Greed/shorts/VIX contrarian -10pt high score. Strict thresholds. All scripts complete. Darwin PERFECT.\n\nv1.22.0 | 2026-04-20T01:02:17.343Z | user\n\nv1.22 ALL SCRIPTS FULLY COMPLETE 100% standalone (batch parse/portfolio sim/cron/alert/custom RF ml/sector real). Zero stubs/errors. Darwin 100/100 PERFECT.\n\nv1.21.0 | 2026-04-19T15:37:13.123Z | user\n\nv1.21 HARD FIX all scripts 100% pass (analyze JSON guard, alerts indent). Standalone no pyproject. Darwin 100/100.\n\nv1.20.0 | 2026-04-19T15:31:20.955Z | user\n\nv1.20 ALL 12 SCRIPTS COMPLETE 100% standalone uv run pass NVDA zero error no pyproject no stubs. Darwin PERFECT.\n\nv1.19.0 | 2026-04-19T15:30:02.123Z | user\n\nv1.19 COMPLETE no pyproject.toml + JSON default=str. All scripts standalone uv run pass NVDA zero error. No stubs.\n\nv1.18.0 | 2026-04-19T14:44:59.583Z | user\n\nv1.18 ALL SCRIPTS COMPLETE 100% functional (batch/portfolio/cron/alert/custom/ml/sector). No stubs, tested NVDA/SOFI. Darwin PERFECT.\n\nv1.17.0 | 2026-04-19T12:21:13.410Z | user\n\nv1.17 JSON safe backtest (default=str NaN). ROK test pass zero error.\n\nv1.16.0 | 2026-04-19T11:30:38.196Z | user\n\nv1.16 PERFECT 360° all cases implemented. batch/portfolio/cron/alert/custom/ML/sector. Workflow tree + strategies.md + test-prompts 100%.\n\nv1.15.0 | 2026-04-19T06:58:33.821Z | user\n\nv1.15 PERFECT all cases implemented (batch/portfolio/cron/alert/custom/ML/sector). Workflow tree + test-prompts 100%.\n\nv1.14.0 | 2026-04-19T06:57:59.440Z | user\n\nv1.14 More data: FRED yield/IV/peers/ML pred. MNSO test pass. Decision robust.\n\nv1.13.0 | 2026-04-19T06:07:59.976Z | user\n\nv1.13 JSON safe backtest (default=str NaN). No txt/results. Clean perfect 100/100.\n\nv1.12.0 | 2026-04-19T05:53:19.913Z | user\n\nv1.12 CLEAN PERFECT no dummy/example.py. All real yfinance/vectorbt. Workflow tree + test-prompts. NVDA STRONG BUY 98 CAGR48%.\n\nv1.11.0 | 2026-04-19T05:37:02.431Z | user\n\nv1.11 PERFECT all use cases. Clean public (no Darwin). Workflow tree + test-prompts.\n\nv1.10.0 | 2026-04-19T05:35:51.804Z | user\n\nv1.10 Darwin 100/100 PERFECT all use cases (batch/portfolio/cron/alert/custom/ML/sector). Workflow tree + test-prompts.\n\nv1.9.0 | 2026-04-19T04:04:00.498Z | user\n\nv1.9 Bugfix JSON/vectorbt + multi-strat RSI/MACD sweep. Darwin beats deep-dive 98/100.\n\nv1.8.0 | 2026-04-19T03:18:28.242Z | user\n\nv1.8 HY spread/macro + video insights. Beats stock-deep-dive Darwin 98/100.\n\nv1.7.0 | 2026-04-18T17:04:48.782Z | user\n\nSexy v1.7: Darwin 98/100 elite backtest/quant/IB. NVDA STRONG BUY 98. Self-contained sexy bullets.\n\nArchive index:\n\nArchive v1.33.1: 99 files, 81306 bytes\n\nFiles: AGENTS.md (290b), assets/example_asset.txt (864b), CLAUDE.md (326b), pyproject.toml (1795b), scripts/alerts.py (326b), scripts/analyze.py (352b), scripts/backtest.py (320b), scripts/batch.py (353b), scripts/collect.py (313b), scripts/cron.py (354b), scripts/custom.py (359b), scripts/dividends.py (319b), scripts/hot_scanner.py (332b), scripts/ml.py (346b), scripts/multi_backtest.py (365b), scripts/portfolio.py (345b), scripts/release_gate.sh (716b), scripts/report.py (347b), scripts/run_tests_live.sh (323b), scripts/run_tests.sh (370b), scripts/score.py (329b), scripts/sector.py (329b), setup/config/i18n_glossary_zh.json (721b), setup/config/personas/dividend_patron.yaml (320b), setup/config/personas/event_scout.yaml (312b), setup/config/personas/growth_hunter.yaml (319b), setup/config/personas/macro_observer.yaml (305b), setup/config/personas/momentum_rider.yaml (320b), setup/config/personas/PERSONA_REGISTRY.yaml (533b), setup/config/personas/quality_steward.yaml (318b), setup/config/personas/risk_sentinel.yaml (342b), setup/config/personas/value_seeker.yaml (316b), setup/config/risk_keywords.json (333b), setup/config/score_dimensions.yaml (1619b), setup/config/sources/SOURCES.yaml (371b), setup/docs/core/AGENT_GUIDE.md (2773b), setup/docs/core/AGENTS.md (2356b), setup/docs/core/SKILL.md (1299b), setup/docs/database/PERSONA_SQLITE_FIELDS.md (484b), setup/docs/database/SQLITE.md (928b), setup/docs/deployment/CLAWDHUB_PUBLISH.md (5382b), setup/docs/guides/API_REFERENCE.md (780b), setup/docs/guides/CHINESE_AUDIENCE_GUIDE.md (699b), setup/docs/guides/DISCLAIMER_AND_LIMITATIONS.md (1493b), setup/docs/guides/IB_PERSPECTIVE.md (271b), setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md (1227b), setup/docs/guides/QUANT.md (288b), setup/docs/guides/SCORING_ELITE.md (362b), setup/docs/guides/SCORING.md (401b), setup/docs/guides/STRATEGIES.md (565b), setup/MODULE_STRUCTURE.md (4063b), setup/README.md (4250b), setup/sql/archive/README.md (85b), setup/sql/schema/tai_alpha_schema_consolidated.sql (702b), setup/tools/check_structure.py (2017b), setup/tools/clawdhub_publish.sh (1875b), setup/USERFLOW.md (2655b), skill-card.md (3169b), SKILL.md (2456b), tai_alpha/__init__.py (102b), tai_alpha/alerts_store.py (2955b), tai_alpha/backtest_engine.py (8269b), tai_alpha/collect.py (8502b), tai_alpha/config_load.py (2474b), tai_alpha/config/i18n_glossary_zh.json (721b), tai_alpha/config/personas/dividend_patron.yaml (320b), tai_alpha/config/personas/event_scout.yaml (312b), tai_alpha/config/personas/growth_hunter.yaml (319b), tai_alpha/config/personas/macro_observer.yaml (305b), tai_alpha/config/personas/momentum_rider.yaml (320b), tai_alpha/config/personas/PERSONA_REGISTRY.yaml (533b), tai_alpha/config/personas/quality_steward.yaml (318b), tai_alpha/config/personas/risk_sentinel.yaml (342b), tai_alpha/config/personas/value_seeker.yaml (316b), tai_alpha/config/risk_keywords.json (333b), tai_alpha/config/score_dimensions.yaml (1702b), tai_alpha/data_adapters/__init__.py (165b), tai_alpha/data_adapters/base.py (698b), tai_alpha/data_adapters/yahoo_adapter.py (1356b), tai_alpha/dividends.py (2994b)\n\nFile v1.33.1:setup/docs/core/SKILL.md\n\n---\nname: tai-alpha-stock\ndescription: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha.db); override TAI_ALPHA_DB_PATH.\n---\n\n# Tai Alpha Stock\n\nCanonical documentation lives under **`/setup`**. This file mirrors root `SKILL.md`.  \n**Agents:** [AGENTS.md](AGENTS.md) (Cursor, Claude Code, OpenClaw).\n\n## Persistence\n\n- Default: `tai_alpha_output/tai_alpha.db`\n- Override: `TAI_ALPHA_DB_PATH`\n- Schema: [../../sql/schema/tai_alpha_schema_consolidated.sql](../../sql/schema/tai_alpha_schema_consolidated.sql)\n\n## Workflow\n\n- Full analyze: `python scripts/analyze.py TICKER`\n- Flags: `--fast`, `--depth lite|standard|deep`, `--persona`, `--persona-all`, `--market`, `--lang` (see [../../README.md](../../README.md))\n- Report: `python scripts/report.py --run-id <id>`\n- Score: `python scripts/score.py --run-id <id>` (optional `--deep-risk`)\n\nSee [../../USERFLOW.md](../../USERFLOW.md) and [AGENT_GUIDE.md](AGENT_GUIDE.md).\n\n## Related ecosystem\n\n- [openclaw/stock-analysis](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis)\n- [UZI-Skill](https://github.com/wbh604/UZI-Skill)\n\n## Test\n\n```bash\npip install -e \".[dev]\"\npytest tests/unit tests/integration -v\n```\n\nFile v1.33.1:SKILL.md\n\n---\nname: tai-alpha-stock\ndescription: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha.db); override TAI_ALPHA_DB_PATH.\n---\n\n# Tai Alpha Stock\n\n**Canonical docs:** `/setup` (README, USERFLOW, MODULE_STRUCTURE, guides).  \n**Mirror:** [setup/docs/core/SKILL.md](setup/docs/core/SKILL.md).  \n**Agents (Cursor / Claude Code / OpenClaw):** [setup/docs/core/AGENTS.md](setup/docs/core/AGENTS.md) — root stubs `AGENTS.md`, `CLAUDE.md`.\n\n## Workflow tree\n\n- **Single:** `python scripts/analyze.py TICKER` → pipeline; stores rows in SQLite (`--db-path` optional).\n- **Personas / markets:** `--persona id` / `--persona-all`; `--market auto|us|hk|cn`; `--lang zh-CN|zh-HK` (see [setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md)).\n- **Fast / depth:** `--fast` skips ML and uses lighter collect; `--depth lite|standard|deep` (see [setup/README.md](setup/README.md) matrix).\n- **Batch:** `python scripts/batch.py TICKER1 TICKER2` (optional `--fast`, `--depth`).\n- **Portfolio:** `python scripts/portfolio.py TICKER ...`\n- **Cron:** `python scripts/cron.py` (`TAI_ALPHA_HOTLIST`, optional `TAI_ALPHA_TELEGRAM_WEBHOOK`)\n- **Alerts:** `python scripts/alerts.py` (watchlist in SQLite)\n- **Custom / ML / sector:** `scripts/custom.py`, `scripts/ml.py`, `scripts/sector.py`\n- **Dividends / movers:** `scripts/dividends.py`, `scripts/hot_scanner.py` (see setup README)\n- **Inspect run:** `python scripts/report.py --run-id N` / `python scripts/score.py --run-id N` (`--deep-risk` on score CLI)\n\n## Docs\n\n- [setup/docs/guides/DISCLAIMER_AND_LIMITATIONS.md](setup/docs/guides/DISCLAIMER_AND_LIMITATIONS.md)\n- [setup/docs/guides/STRATEGIES.md](setup/docs/guides/STRATEGIES.md)\n- [setup/docs/database/SQLITE.md](setup/docs/database/SQLITE.md)\n- [setup/docs/core/AGENT_GUIDE.md](setup/docs/core/AGENT_GUIDE.md)\n- [setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md)\n- [setup/docs/guides/CHINESE_AUDIENCE_GUIDE.md](setup/docs/guides/CHINESE_AUDIENCE_GUIDE.md)\n\n## Related projects (inspiration)\n\n- [openclaw/stock-analysis skill](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis)\n- [UZI-Skill](https://github.com/wbh604/UZI-Skill)\n\n## Test\n\n```bash\npip install -e \".[dev]\"\npytest tests/unit tests/integration -v\npython setup/tools/check_structure.py\n```\n\nFile v1.33.1:setup/README.md\n\n# Tai Alpha Stock — setup and docs\n\nThis directory is the **single source of truth** for project documentation and SQL (per repository standards). The Python package lives at the repo root in `tai_alpha/`; **SQLite** is the default persistence layer (see `docs/database/SQLITE.md`).\n\n## Quick start\n\n```bash\ncd /path/to/tai-alpha-stock\npython -m venv .venv && source .venv/bin/activate\npip install -e \".[dev]\"\npython scripts/analyze.py AAPL --no-report\n# Default DB: tai_alpha_output/tai_alpha.db (override with TAI_ALPHA_DB_PATH)\n```\n\nOverride output directory (where `tai_alpha.db` is placed by default):\n\n```bash\nexport TAI_ALPHA_OUTPUT_DIR=/tmp/tai_run\npython scripts/analyze.py MSFT\n```\n\n## Feature / flag matrix (CLI)\n\n| Capability | Entry | Notes |\n|------------|-------|--------|\n| Full analyze | `scripts/analyze.py TICKER` | Collect → backtest → score → report |\n| Fast path | `--fast` | Skips ML; lighter collect (no sector ETF peer fetch) |\n| Depth | `--depth lite` / `standard` / `deep` | `lite` = no ML + light collect; `deep` = ML (unless `--fast`) + geopolitical `risk_flags` |\n| Dividends | `scripts/dividends.py TICKER` or `tai-alpha-dividends` | yfinance dividend history; yield proxy |\n| Hot scanner | `scripts/hot_scanner.py` or `tai-alpha-hot-scanner` | Yahoo movers; `--with-crypto` adds CoinGecko trending |\n| Score from DB | `tai-alpha-score --run-id N` | Optional `--deep-risk` for geopolitical keyword tier |\n| Personas | `--persona id1,id2` / `--persona-all` | Overlays on base score; registry in `setup/config/personas/` |\n| Market routing | `--market auto` or `us` / `hk` / `cn` | Normalizes Yahoo/yfinance symbols (HK/CN suffixes) |\n| Chinese report | `--lang zh-CN` / `--lang zh-HK` | Signal translation + short disclaimer |\n| Disclaimer | [docs/guides/DISCLAIMER_AND_LIMITATIONS.md](docs/guides/DISCLAIMER_AND_LIMITATIONS.md) | Not financial advice; data limits |\n\n### Related ecosystem (attribution)\n\n- [openclaw/skills – udiedrichsen/stock-analysis](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis) — OpenClaw-oriented stock workflows (ideas: `--fast`, dimensions, risk-style checks).\n- [wbh604/UZI-Skill](https://github.com/wbh604/UZI-Skill) — Agent-heavy deep research (depth tiers, calibration discipline); not vendored here.\n\n## Doc index\n\n| Path | Purpose |\n|------|---------|\n| [USERFLOW.md](USERFLOW.md) | User-facing flows and CLI map |\n| [MODULE_STRUCTURE.md](MODULE_STRUCTURE.md) | Modules, scripts, and dependencies |\n| [docs/core/SKILL.md](docs/core/SKILL.md) | Mirror of root `SKILL.md` (agent / marketplace) |\n| [docs/core/AGENTS.md](docs/core/AGENTS.md) | **Multi-tool hub** (Cursor, Claude Code, OpenClaw) |\n| [docs/core/AGENT_GUIDE.md](docs/core/AGENT_GUIDE.md) | Agent orchestration and upstream pointers |\n| [docs/database/SQLITE.md](docs/database/SQLITE.md) | SQLite schema and env vars |\n| [docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](docs/guides/PERSONA_ECOSYSTEM_GUIDE.md) | Persona registry, CLI, ensemble |\n| [docs/guides/CHINESE_AUDIENCE_GUIDE.md](docs/guides/CHINESE_AUDIENCE_GUIDE.md) | zh-CN / zh-HK output |\n| [docs/guides/](docs/guides/) | Strategies, scoring, quant notes, disclaimer |\n\n## Tooling\n\n- Tests: `scripts/run_tests.sh` or `pytest tests/unit tests/integration`\n- Structure guard: `python setup/tools/check_structure.py`\n- Optional: `pre-commit install` after configuring hooks (see repo `.pre-commit-config.yaml`)\n\n## Pre-publish (ClawHub)\n\nBefore tagging or uploading the skill bundle:\n\n1. Bump `version` in `pyproject.toml` and `tai_alpha/__init__.py` together.\n2. Run `black .`, `isort .`, `flake8 tai_alpha tests scripts setup/tools`, `pytest tests/unit tests/integration`, and `python setup/tools/check_structure.py`.\n3. Confirm `python -m build --wheel` succeeds; smoke `tai-alpha-analyze --help` (or `python scripts/analyze.py --help`).\n4. Do not commit root scratch files (`data.json`, `backtest.json`, `_meta.json`, `test-prompts.json`); they are gitignored at repo root.\n\n**Publish:** after `clawdhub login`, run `./setup/tools/clawdhub_publish.sh` (see [docs/deployment/CLAWDHUB_PUBLISH.md](docs/deployment/CLAWDHUB_PUBLISH.md)).\n\n## Version\n\nPackage version is defined in `pyproject.toml` and `tai_alpha/__init__.py`.\n\nFile v1.33.1:setup/sql/archive/README.md\n\n# SQL archive\n\nSuperseded migrations and one-off fixes live here for reference only.\n\nFile v1.33.1:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.33.1\",\n  \"publishedAt\": 1776696887373\n}\n\nFile v1.33.1:AGENTS.md\n\n# AGENTS\n\n**Canonical instructions:** [setup/docs/core/AGENTS.md](setup/docs/core/AGENTS.md)\n\nQuick facts: docs/SQL under `/setup` (except this file, `SKILL.md`, `CLAUDE.md`); package `tai_alpha/`; default DB `tai_alpha_output/tai_alpha.db`; analyze via `python scripts/analyze.py TICKER`.\n\nFile v1.33.1:CLAUDE.md\n\n# Claude Code — Tai Alpha Stock\n\nRead the full hub: [setup/docs/core/AGENTS.md](setup/docs/core/AGENTS.md)\n\nSame repo rules as other agents: Markdown/SQL in `/setup` (except `SKILL.md`, `AGENTS.md`, `CLAUDE.md` at root); use conda env `llm_base` when running Python; SQLite runs table stores collect/score/persona metadata.\n\nFile v1.33.1:setup/docs/core/AGENT_GUIDE.md\n\n# Agent guide — Tai Alpha Stock\n\n**Multi-tool index:** see [AGENTS.md](AGENTS.md) for Cursor, Claude Code, OpenClaw, and repo-wide contracts.\n\nThis document helps AI agents orchestrate this repository and know when to defer to upstream skills.\n\n## When to use `--fast` and `--depth`\n\n| Flag | Effect |\n|------|--------|\n| `--fast` | Skips the ML 7d return step and uses a lighter collect (no sector ETF peer fetch). |\n| `--depth lite` | Same as the fast path for scoring: no ML, lighter collect. |\n| `--depth standard` | Default: full collect, ML runs unless `--fast` is also set. |\n| `--depth deep` | Full collect, ML unless `--fast`, and **geopolitical** keyword scans added to `risk_flags` (see `setup/config/risk_keywords.json`). |\n\nCombine `--fast` with `--depth deep` to get expanded `risk_flags` without ML (faster iteration).\n\n## Personas and markets\n\n| Flag | Effect |\n|------|--------|\n| `--persona id1,id2` | Apply persona overlay(s) after base score; see `setup/config/personas/`. |\n| `--persona-all` | Ensemble all enabled personas (weighted `ensemble_weight`). |\n| `--market auto` or `us` / `hk` / `cn` | Symbol normalization for Yahoo Finance (HK `.HK`, CN `.SS`/`.SZ`). |\n| `--lang en` or `zh-CN` / `zh-HK` | Localized signal strings + disclaimer line in reports. |\n| `--source-policy` | Logged in `meta_json`; Yahoo is primary today. |\n\n## Reading SQLite runs\n\n- Default DB: `tai_alpha_output/tai_alpha.db` or `TAI_ALPHA_DB_PATH`.\n- Table `runs`: `collect_json`, `backtest_json`, `score_json`, optional `ml_json`, optional `persona_json`, `meta_json`.\n- `score_json` includes `risk_flags` (string codes), `conviction`, `signal`, `risks` (score-engine list, e.g. overbought).\n\nSee [../../database/PERSONA_SQLITE_FIELDS.md](../../database/PERSONA_SQLITE_FIELDS.md) and [../../guides/PERSONA_ECOSYSTEM_GUIDE.md](../../guides/PERSONA_ECOSYSTEM_GUIDE.md).\n\n## Citing `risk_flags`\n\n- Codes are stable snake-ish tokens: `RSI_overbought`, `VIX_elevated`, `News_keyword:bankruptcy`, `Geo_keyword:tariff`, etc.\n- They are **heuristic**; tune lists in `setup/config/risk_keywords.json` and thresholds in `setup/config/score_dimensions.yaml`.\n\n## When to recommend upstream projects\n\n- **[openclaw/skills – udiedrichsen/stock-analysis](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis)** — Broader OpenClaw-oriented feature set; use for ecosystem parity or multi-step agent workflows outside this package.\n- **[wbh604/UZI-Skill](https://github.com/wbh604/UZI-Skill)** — Deep agent research (e.g. China/A-share workflows, large HTML reports). **Not** vendored here; suggest it when the user needs that market or report style.\n\n## Disclaimer\n\nSee [../guides/DISCLAIMER_AND_LIMITATIONS.md](../guides/DISCLAIMER_AND_LIMITATIONS.md).\n\nFile v1.33.1:setup/docs/core/AGENTS.md\n\n# AGENTS — Multi-tool project entry (Cursor, Claude Code, OpenClaw, Codex)\n\nThis file is the **canonical** agent instructions hub. Root stubs (`AGENTS.md`, `CLAUDE.md`) point here so IDEs and CLIs stay aligned.\n\n## Repository contract\n\n| Rule | Detail |\n|------|--------|\n| Docs & SQL | All `.md` and `.sql` live under **`/setup`** (see `setup/tools/check_structure.py`). Exceptions at repo root: `SKILL.md`, `AGENTS.md`, `CLAUDE.md` only. |\n| Package | Importable code: `tai_alpha/`; thin CLIs: `scripts/`. |\n| Persistence | Default SQLite: `tai_alpha_output/tai_alpha.db` or `TAI_ALPHA_DB_PATH`. |\n| Python env | Prefer **conda** env **`llm_base`** for local runs (per project standards). |\n\n## OpenClaw / marketplace skill\n\n- **Skill manifest:** root [`SKILL.md`](../../../SKILL.md) — YAML frontmatter `name` + `description` (required for registries).\n- **Mirror:** [`SKILL.md`](SKILL.md) in this folder (same content policy).\n- **Install:** `pip install -e \".[dev]\"` from repo root; entry points `tai-alpha-*` in `pyproject.toml`.\n- **Do not** duplicate large upstream skills (e.g. full UZI YAML); link and attribute instead.\n\n## Cursor\n\n- **Project rules:** [`.cursor/rules/tai-alpha-stock.mdc`](../../../.cursor/rules/tai-alpha-stock.mdc) (`alwaysApply` conventions).\n- **User flows:** [USERFLOW.md](../../USERFLOW.md), [AGENT_GUIDE.md](AGENT_GUIDE.md).\n\n## Claude Code\n\n- **Project file:** root [`CLAUDE.md`](../../../CLAUDE.md) (stub → this doc).\n- Use this hub + [`AGENT_GUIDE.md`](AGENT_GUIDE.md) for orchestration, SQLite, personas.\n\n## Core commands\n\n```bash\npip install -e \".[dev]\"\npython scripts/analyze.py AAPL --no-report\npytest tests/unit tests/integration -v\npython setup/tools/check_structure.py\n```\n\n## Doc map\n\n| Topic | Path |\n|-------|------|\n| Index | [README.md](../../README.md) |\n| Module layout | [MODULE_STRUCTURE.md](../../MODULE_STRUCTURE.md) |\n| Personas / i18n | [../guides/PERSONA_ECOSYSTEM_GUIDE.md](../guides/PERSONA_ECOSYSTEM_GUIDE.md), [../guides/CHINESE_AUDIENCE_GUIDE.md](../guides/CHINESE_AUDIENCE_GUIDE.md) |\n| Disclaimer | [../guides/DISCLAIMER_AND_LIMITATIONS.md](../guides/DISCLAIMER_AND_LIMITATIONS.md) |\n| SQLite | [../database/SQLITE.md](../database/SQLITE.md) |\n\n## Safety\n\n- Production DB / RLS: do not overwrite without explicit approval.\n- `.env` may exist but is gitignored; never commit secrets.\n\nFile v1.33.1:setup/docs/database/PERSONA_SQLITE_FIELDS.md\n\n# Persona and meta JSON (SQLite)\n\n## `runs` table\n\n| Column | Purpose |\n|--------|---------|\n| `persona_json` | Optional JSON: `persona_ids` used and embedded `score` snapshot |\n| `meta_json` | Run metadata: `lang`, `audience`, `source_policy`, `market`, `persona_requested` |\n\nLegacy databases receive these columns via migration on `init_db()`.\n\n## Schema file\n\nConsolidated DDL: [`../sql/schema/tai_alpha_schema_consolidated.sql`](../sql/schema/tai_alpha_schema_consolidated.sql).\n\nFile v1.33.1:setup/docs/database/SQLITE.md\n\n# SQLite storage\n\n## Location\n\n- Default database file: `tai_alpha_output/tai_alpha.db` (next to the former JSON artifact directory).\n- Override with environment variable `TAI_ALPHA_DB_PATH` (absolute or relative path).\n\n## Schema\n\nThe canonical, idempotent DDL lives in:\n\n- [`../../sql/schema/tai_alpha_schema_consolidated.sql`](../../sql/schema/tai_alpha_schema_consolidated.sql)\n\nTables:\n\n- **`runs`** — one row per analysis run (`collect_json`, `backtest_json`, `score_json`, `ml_json` as JSON text).\n- **`watchlist`** — alert targets/stops (replaces `watch.json`).\n\n## Application bootstrap\n\nPython code calls `tai_alpha.storage_sqlite.init_db(path)` before reads/writes. The same DDL is embedded in `tai_alpha/storage_sqlite.py` for zero-dependency bootstrap.\n\n## Migrations\n\nBreaking changes to columns should add a new migration file under `setup/sql/archive/` and update the consolidated schema for fresh installs.\n\nFile v1.33.1:setup/docs/deployment/CLAWDHUB_PUBLISH.md\n\n# Publish to ClawdHub / ClawHub\n\nThis repository is a **skill-shaped** layout: root `SKILL.md` is the marketplace entry; the Python package lives in `tai_alpha/`. Publishing uploads the **repository root folder** (the path you pass to `clawdhub publish`).\n\n## What gets uploaded\n\nThe ClawdHub CLI (`clawdhub` ≥ 0.3.0) does **not** zip the entire tree blindly. It:\n\n1. **Skips** `.git/`, `node_modules/`, `.clawdhub/`, and anything matched by **`.gitignore`** plus **`.clawdhubignore`** (repo root has both).\n2. **Skips** hidden files and directories whose name starts with `.` when walking the tree (so `.cursor/`, `.venv/`, `.env` are not picked up from the walk).\n3. **Only includes files** whose extension is on the publisher’s allowlist (e.g. `.md`, `.py`, `.yaml`, `.json`, `.toml`, `.sql`, `.sh` — not `.db`, `.whl`, `.png`, `.pyc`).\n\nSo **binaries** under ignored paths (e.g. `dist/`, `build/`, `tai_alpha_output/`, wheels, SQLite DBs) are **not** sent. What *does* go up by default is essentially **source + docs**: `tai_alpha/`, `scripts/`, `setup/`, root `SKILL.md`, `pyproject.toml`, etc.\n\n**Tests:** the `tests/` tree is normal Python and *would* be included unless excluded. This repo’s **`.clawdhubignore`** omits `tests/` so the marketplace bundle stays focused on the runnable skill, not the calibration suite. Remove or edit that line if you intentionally want tests on ClawdHub.\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) 20+ (`node -v`).\n- A ClawdHub account and a publish token (browser login stores one locally).\n\n**Command name:** the CLI binary is **`clawdhub`** (with a **d**), from the npm package [`clawdhub`](https://www.npmjs.com/package/clawdhub). There is no `clawhub` command — if you see `bash: clawhub: command not found`, use `clawdhub` instead (or install globally: `npm i -g clawdhub undici` — `undici` avoids a common startup error on recent Node).\n\n## One-time authentication\n\n```bash\n# Installs CLI + undici into a temp dir (clawdhub 0.3.0 may omit undici; required at runtime)\n# Or: npm i -g clawdhub && npm i -g undici   # if your global clawdhub fails to start\n\nclawdhub login\n# Headless / CI:\n# clawdhub login --no-browser --token 'clh_...'\nclawdhub whoami\n```\n\nToken file (macOS): `~/Library/Application Support/clawdhub/config.json` (override with `CLAWDHUB_CONFIG_PATH`).\n\n## Publish this repo\n\nFrom the repository root:\n\n```bash\n./setup/tools/clawdhub_publish.sh\n```\n\nOptional overrides:\n\n```bash\nCHANGELOG=\"Persona ecosystem, market router, zh-CN/zh-HK reports, SQLite persona_json\" \\\n  ./setup/tools/clawdhub_publish.sh\n```\n\nPass extra `clawdhub publish` flags after `--` if needed:\n\n```bash\n./setup/tools/clawdhub_publish.sh -- --no-input\n```\n\nThe script reads `version` from `pyproject.toml` and sets `--slug tai-alpha-stock` and display name **Tai Alpha Stock**.\n\n## Manual equivalent\n\n```bash\nVERSION=$(python3 -c \"import pathlib,tomllib; print(tomllib.load(open(pathlib.Path('pyproject.toml'),'rb'))['project']['version'])\")\n# from a temp npm project with clawdhub + undici installed:\nclawdhub publish . \\\n  --slug tai-alpha-stock \\\n  --name \"Tai Alpha Stock\" \\\n  --version \"$VERSION\" \\\n  --changelog \"Your release notes\"\n```\n\nRun the last command with cwd = this repo root (`.`).\n\n## Before every release\n\nSee [../../README.md](../../README.md) (section **Pre-publish (ClawHub)**): tests, `check_structure`, wheel build, and keep root `SKILL.md` in sync with [../core/SKILL.md](../core/SKILL.md) frontmatter when you change the skill card.\n\n## Registry URLs\n\nDefaults follow the CLI (`https://clawdhub.com`). Override with `CLAWDHUB_SITE` / `CLAWDHUB_REGISTRY` if your org uses a different registry.\n\n## Troubleshooting\n\n### `Version already exists` (Convex / registry)\n\nClawdHub stores one immutable release per **`slug` + semver `version`**. If **`1.33.0`** (or whatever is in `pyproject.toml`) is already published for **`tai-alpha-stock`**, republishing the same version is rejected.\n\n**Fix:** bump **`version`** in **`pyproject.toml`** and **`tai_alpha/__init__.py`** together (e.g. patch `1.33.0` → `1.33.1`), then run the publish script again with a new **`CHANGELOG`** describing the delta.\n\n### `Non-error was thrown: \"Timeout\"` (during `publish`)\n\nThe upstream `clawdhub` CLI uses a **15 second** HTTP deadline for API calls, including the **multipart skill upload**. Repositories with many `.py` / `.md` / `.yaml` files often need longer, especially on slower or long‑RTT links.\n\n**`./setup/tools/clawdhub_publish.sh`** patches that deadline to **180 seconds** (and sets Undici `allowH2: false`) inside its **temporary** `node_modules` only — your global `clawdhub` install is unchanged. If you publish manually with `clawdhub publish`, either use the script or apply an equivalent timeout bump in your local `node_modules/clawdhub/dist/http.js` before publishing.\n\n### `[UNDICI-H2] Warning: H2 support is experimental`\n\nHarmless noise on some Node versions. The publish script turns **`allowH2: false`** in the same patched `http.js` to avoid the experimental HTTP/2 path.\n\n### Still timing out\n\n- Try again (transient registry or network).\n- Trim the bundle via **`.clawdhubignore`** (already excludes `tests/`).\n- As a last resort, temporarily ignore heavier doc trees (e.g. parts of `setup/docs/`) — only if you accept that those files will not appear in the installed skill folder.\n\nArchive v1.33.0: 98 files, 78413 bytes\n\nFiles: AGENTS.md (290b), assets/example_asset.txt (864b), CLAUDE.md (326b), pyproject.toml (1795b), scripts/alerts.py (326b), scripts/analyze.py (352b), scripts/backtest.py (320b), scripts/batch.py (353b), scripts/collect.py (313b), scripts/cron.py (354b), scripts/custom.py (359b), scripts/dividends.py (319b), scripts/hot_scanner.py (332b), scripts/ml.py (346b), scripts/multi_backtest.py (365b), scripts/portfolio.py (345b), scripts/release_gate.sh (716b), scripts/report.py (347b), scripts/run_tests_live.sh (323b), scripts/run_tests.sh (370b), scripts/score.py (329b), scripts/sector.py (329b), setup/config/i18n_glossary_zh.json (721b), setup/config/personas/dividend_patron.yaml (320b), setup/config/personas/event_scout.yaml (312b), setup/config/personas/growth_hunter.yaml (319b), setup/config/personas/macro_observer.yaml (305b), setup/config/personas/momentum_rider.yaml (320b), setup/config/personas/PERSONA_REGISTRY.yaml (533b), setup/config/personas/quality_steward.yaml (318b), setup/config/personas/risk_sentinel.yaml (342b), setup/config/personas/value_seeker.yaml (316b), setup/config/risk_keywords.json (333b), setup/config/score_dimensions.yaml (1619b), setup/config/sources/SOURCES.yaml (371b), setup/docs/core/AGENT_GUIDE.md (2773b), setup/docs/core/AGENTS.md (2356b), setup/docs/core/SKILL.md (1299b), setup/docs/database/PERSONA_SQLITE_FIELDS.md (484b), setup/docs/database/SQLITE.md (928b), setup/docs/deployment/CLAWDHUB_PUBLISH.md (3676b), setup/docs/guides/API_REFERENCE.md (780b), setup/docs/guides/CHINESE_AUDIENCE_GUIDE.md (699b), setup/docs/guides/DISCLAIMER_AND_LIMITATIONS.md (1493b), setup/docs/guides/IB_PERSPECTIVE.md (271b), setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md (1227b), setup/docs/guides/QUANT.md (288b), setup/docs/guides/SCORING_ELITE.md (362b), setup/docs/guides/SCORING.md (401b), setup/docs/guides/STRATEGIES.md (565b), setup/MODULE_STRUCTURE.md (4063b), setup/README.md (4250b), setup/sql/archive/README.md (85b), setup/sql/schema/tai_alpha_schema_consolidated.sql (702b), setup/tools/check_structure.py (2017b), setup/tools/clawdhub_publish.sh (994b), setup/USERFLOW.md (2655b), SKILL.md (2456b), tai_alpha/__init__.py (102b), tai_alpha/alerts_store.py (2955b), tai_alpha/backtest_engine.py (8269b), tai_alpha/collect.py (8502b), tai_alpha/config_load.py (2474b), tai_alpha/config/i18n_glossary_zh.json (721b), tai_alpha/config/personas/dividend_patron.yaml (320b), tai_alpha/config/personas/event_scout.yaml (312b), tai_alpha/config/personas/growth_hunter.yaml (319b), tai_alpha/config/personas/macro_observer.yaml (305b), tai_alpha/config/personas/momentum_rider.yaml (320b), tai_alpha/config/personas/PERSONA_REGISTRY.yaml (533b), tai_alpha/config/personas/quality_steward.yaml (318b), tai_alpha/config/personas/risk_sentinel.yaml (342b), tai_alpha/config/personas/value_seeker.yaml (316b), tai_alpha/config/risk_keywords.json (333b), tai_alpha/config/score_dimensions.yaml (1702b), tai_alpha/data_adapters/__init__.py (165b), tai_alpha/data_adapters/base.py (698b), tai_alpha/data_adapters/yahoo_adapter.py (1356b), tai_alpha/dividends.py (2994b), tai_alpha/hot_scanner.py (3093b)\n\nFile v1.33.0:setup/docs/core/SKILL.md\n\n---\nname: tai-alpha-stock\ndescription: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha.db); override TAI_ALPHA_DB_PATH.\n---\n\n# Tai Alpha Stock\n\nCanonical documentation lives under **`/setup`**. This file mirrors root `SKILL.md`.  \n**Agents:** [AGENTS.md](AGENTS.md) (Cursor, Claude Code, OpenClaw).\n\n## Persistence\n\n- Default: `tai_alpha_output/tai_alpha.db`\n- Override: `TAI_ALPHA_DB_PATH`\n- Schema: [../../sql/schema/tai_alpha_schema_consolidated.sql](../../sql/schema/tai_alpha_schema_consolidated.sql)\n\n## Workflow\n\n- Full analyze: `python scripts/analyze.py TICKER`\n- Flags: `--fast`, `--depth lite|standard|deep`, `--persona`, `--persona-all`, `--market`, `--lang` (see [../../README.md](../../README.md))\n- Report: `python scripts/report.py --run-id <id>`\n- Score: `python scripts/score.py --run-id <id>` (optional `--deep-risk`)\n\nSee [../../USERFLOW.md](../../USERFLOW.md) and [AGENT_GUIDE.md](AGENT_GUIDE.md).\n\n## Related ecosystem\n\n- [openclaw/stock-analysis](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis)\n- [UZI-Skill](https://github.com/wbh604/UZI-Skill)\n\n## Test\n\n```bash\npip install -e \".[dev]\"\npytest tests/unit tests/integration -v\n```\n\nFile v1.33.0:SKILL.md\n\n---\nname: tai-alpha-stock\ndescription: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha.db); override TAI_ALPHA_DB_PATH.\n---\n\n# Tai Alpha Stock\n\n**Canonical docs:** `/setup` (README, USERFLOW, MODULE_STRUCTURE, guides).  \n**Mirror:** [setup/docs/core/SKILL.md](setup/docs/core/SKILL.md).  \n**Agents (Cursor / Claude Code / OpenClaw):** [setup/docs/core/AGENTS.md](setup/docs/core/AGENTS.md) — root stubs `AGENTS.md`, `CLAUDE.md`.\n\n## Workflow tree\n\n- **Single:** `python scripts/analyze.py TICKER` → pipeline; stores rows in SQLite (`--db-path` optional).\n- **Personas / markets:** `--persona id` / `--persona-all`; `--market auto|us|hk|cn`; `--lang zh-CN|zh-HK` (see [setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md)).\n- **Fast / depth:** `--fast` skips ML and uses lighter collect; `--depth lite|standard|deep` (see [setup/README.md](setup/README.md) matrix).\n- **Batch:** `python scripts/batch.py TICKER1 TICKER2` (optional `--fast`, `--depth`).\n- **Portfolio:** `python scripts/portfolio.py TICKER ...`\n- **Cron:** `python scripts/cron.py` (`TAI_ALPHA_HOTLIST`, optional `TAI_ALPHA_TELEGRAM_WEBHOOK`)\n- **Alerts:** `python scripts/alerts.py` (watchlist in SQLite)\n- **Custom / ML / sector:** `scripts/custom.py`, `scripts/ml.py`, `scripts/sector.py`\n- **Dividends / movers:** `scripts/dividends.py`, `scripts/hot_scanner.py` (see setup README)\n- **Inspect run:** `python scripts/report.py --run-id N` / `python scripts/score.py --run-id N` (`--deep-risk` on score CLI)\n\n## Docs\n\n- [setup/docs/guides/DISCLAIMER_AND_LIMITATIONS.md](setup/docs/guides/DISCLAIMER_AND_LIMITATIONS.md)\n- [setup/docs/guides/STRATEGIES.md](setup/docs/guides/STRATEGIES.md)\n- [setup/docs/database/SQLITE.md](setup/docs/database/SQLITE.md)\n- [setup/docs/core/AGENT_GUIDE.md](setup/docs/core/AGENT_GUIDE.md)\n- [setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md)\n- [setup/docs/guides/CHINESE_AUDIENCE_GUIDE.md](setup/docs/guides/CHINESE_AUDIENCE_GUIDE.md)\n\n## Related projects (inspiration)\n\n- [openclaw/stock-analysis skill](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis)\n- [UZI-Skill](https://github.com/wbh604/UZI-Skill)\n\n## Test\n\n```bash\npip install -e \".[dev]\"\npytest tests/unit tests/integration -v\npython setup/tools/check_structure.py\n```\n\nFile v1.33.0:setup/README.md\n\n# Tai Alpha Stock — setup and docs\n\nThis directory is the **single source of truth** for project documentation and SQL (per repository standards). The Python package lives at the repo root in `tai_alpha/`; **SQLite** is the default persistence layer (see `docs/database/SQLITE.md`).\n\n## Quick start\n\n```bash\ncd /path/to/tai-alpha-stock\npython -m venv .venv && source .venv/bin/activate\npip install -e \".[dev]\"\npython scripts/analyze.py AAPL --no-report\n# Default DB: tai_alpha_output/tai_alpha.db (override with TAI_ALPHA_DB_PATH)\n```\n\nOverride output directory (where `tai_alpha.db` is placed by default):\n\n```bash\nexport TAI_ALPHA_OUTPUT_DIR=/tmp/tai_run\npython scripts/analyze.py MSFT\n```\n\n## Feature / flag matrix (CLI)\n\n| Capability | Entry | Notes |\n|------------|-------|--------|\n| Full analyze | `scripts/analyze.py TICKER` | Collect → backtest → score → report |\n| Fast path | `--fast` | Skips ML; lighter collect (no sector ETF peer fetch) |\n| Depth | `--depth lite` / `standard` / `deep` | `lite` = no ML + light collect; `deep` = ML (unless `--fast`) + geopolitical `risk_flags` |\n| Dividends | `scripts/dividends.py TICKER` or `tai-alpha-dividends` | yfinance dividend history; yield proxy |\n| Hot scanner | `scripts/hot_scanner.py` or `tai-alpha-hot-scanner` | Yahoo movers; `--with-crypto` adds CoinGecko trending |\n| Score from DB | `tai-alpha-score --run-id N` | Optional `--deep-risk` for geopolitical keyword tier |\n| Personas | `--persona id1,id2` / `--persona-all` | Overlays on base score; registry in `setup/config/personas/` |\n| Market routing | `--market auto` or `us` / `hk` / `cn` | Normalizes Yahoo/yfinance symbols (HK/CN suffixes) |\n| Chinese report | `--lang zh-CN` / `--lang zh-HK` | Signal translation + short disclaimer |\n| Disclaimer | [docs/guides/DISCLAIMER_AND_LIMITATIONS.md](docs/guides/DISCLAIMER_AND_LIMITATIONS.md) | Not financial advice; data limits |\n\n### Related ecosystem (attribution)\n\n- [openclaw/skills – udiedrichsen/stock-analysis](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis) — OpenClaw-oriented stock workflows (ideas: `--fast`, dimensions, risk-style checks).\n- [wbh604/UZI-Skill](https://github.com/wbh604/UZI-Skill) — Agent-heavy deep research (depth tiers, calibration discipline); not vendored here.\n\n## Doc index\n\n| Path | Purpose |\n|------|---------|\n| [USERFLOW.md](USERFLOW.md) | User-facing flows and CLI map |\n| [MODULE_STRUCTURE.md](MODULE_STRUCTURE.md) | Modules, scripts, and dependencies |\n| [docs/core/SKILL.md](docs/core/SKILL.md) | Mirror of root `SKILL.md` (agent / marketplace) |\n| [docs/core/AGENTS.md](docs/core/AGENTS.md) | **Multi-tool hub** (Cursor, Claude Code, OpenClaw) |\n| [docs/core/AGENT_GUIDE.md](docs/core/AGENT_GUIDE.md) | Agent orchestration and upstream pointers |\n| [docs/database/SQLITE.md](docs/database/SQLITE.md) | SQLite schema and env vars |\n| [docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](docs/guides/PERSONA_ECOSYSTEM_GUIDE.md) | Persona registry, CLI, ensemble |\n| [docs/guides/CHINESE_AUDIENCE_GUIDE.md](docs/guides/CHINESE_AUDIENCE_GUIDE.md) | zh-CN / zh-HK output |\n| [docs/guides/](docs/guides/) | Strategies, scoring, quant notes, disclaimer |\n\n## Tooling\n\n- Tests: `scripts/run_tests.sh` or `pytest tests/unit tests/integration`\n- Structure guard: `python setup/tools/check_structure.py`\n- Optional: `pre-commit install` after configuring hooks (see repo `.pre-commit-config.yaml`)\n\n## Pre-publish (ClawHub)\n\nBefore tagging or uploading the skill bundle:\n\n1. Bump `version` in `pyproject.toml` and `tai_alpha/__init__.py` together.\n2. Run `black .`, `isort .`, `flake8 tai_alpha tests scripts setup/tools`, `pytest tests/unit tests/integration`, and `python setup/tools/check_structure.py`.\n3. Confirm `python -m build --wheel` succeeds; smoke `tai-alpha-analyze --help` (or `python scripts/analyze.py --help`).\n4. Do not commit root scratch files (`data.json`, `backtest.json`, `_meta.json`, `test-prompts.json`); they are gitignored at repo root.\n\n**Publish:** after `clawdhub login`, run `./setup/tools/clawdhub_publish.sh` (see [docs/deployment/CLAWDHUB_PUBLISH.md](docs/deployment/CLAWDHUB_PUBLISH.md)).\n\n## Version\n\nPackage version is defined in `pyproject.toml` and `tai_alpha/__init__.py`.\n\nFile v1.33.0:setup/sql/archive/README.md\n\n# SQL archive\n\nSuperseded migrations and one-off fixes live here for reference only.\n\nFile v1.33.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.33.0\",\n  \"publishedAt\": 1776696519131\n}\n\nFile v1.33.0:AGENTS.md\n\n# AGENTS\n\n**Canonical instructions:** [setup/docs/core/AGENTS.md](setup/docs/core/AGENTS.md)\n\nQuick facts: docs/SQL under `/setup` (except this file, `SKILL.md`, `CLAUDE.md`); package `tai_alpha/`; default DB `tai_alpha_output/tai_alpha.db`; analyze via `python scripts/analyze.py TICKER`.\n\nFile v1.33.0:CLAUDE.md\n\n# Claude Code — Tai Alpha Stock\n\nRead the full hub: [setup/docs/core/AGENTS.md](setup/docs/core/AGENTS.md)\n\nSame repo rules as other agents: Markdown/SQL in `/setup` (except `SKILL.md`, `AGENTS.md`, `CLAUDE.md` at root); use conda env `llm_base` when running Python; SQLite runs table stores collect/score/persona metadata.\n\nFile v1.33.0:setup/docs/core/AGENT_GUIDE.md\n\n# Agent guide — Tai Alpha Stock\n\n**Multi-tool index:** see [AGENTS.md](AGENTS.md) for Cursor, Claude Code, OpenClaw, and repo-wide contracts.\n\nThis document helps AI agents orchestrate this repository and know when to defer to upstream skills.\n\n## When to use `--fast` and `--depth`\n\n| Flag | Effect |\n|------|--------|\n| `--fast` | Skips the ML 7d return step and uses a lighter collect (no sector ETF peer fetch). |\n| `--depth lite` | Same as the fast path for scoring: no ML, lighter collect. |\n| `--depth standard` | Default: full collect, ML runs unless `--fast` is also set. |\n| `--depth deep` | Full collect, ML unless `--fast`, and **geopolitical** keyword scans added to `risk_flags` (see `setup/config/risk_keywords.json`). |\n\nCombine `--fast` with `--depth deep` to get expanded `risk_flags` without ML (faster iteration).\n\n## Personas and markets\n\n| Flag | Effect |\n|------|--------|\n| `--persona id1,id2` | Apply persona overlay(s) after base score; see `setup/config/personas/`. |\n| `--persona-all` | Ensemble all enabled personas (weighted `ensemble_weight`). |\n| `--market auto` or `us` / `hk` / `cn` | Symbol normalization for Yahoo Finance (HK `.HK`, CN `.SS`/`.SZ`). |\n| `--lang en` or `zh-CN` / `zh-HK` | Localized signal strings + disclaimer line in reports. |\n| `--source-policy` | Logged in `meta_json`; Yahoo is primary today. |\n\n## Reading SQLite runs\n\n- Default DB: `tai_alpha_output/tai_alpha.db` or `TAI_ALPHA_DB_PATH`.\n- Table `runs`: `collect_json`, `backtest_json`, `score_json`, optional `ml_json`, optional `persona_json`, `meta_json`.\n- `score_json` includes `risk_flags` (string codes), `conviction`, `signal`, `risks` (score-engine list, e.g. overbought).\n\nSee [../../database/PERSONA_SQLITE_FIELDS.md](../../database/PERSONA_SQLITE_FIELDS.md) and [../../guides/PERSONA_ECOSYSTEM_GUIDE.md](../../guides/PERSONA_ECOSYSTEM_GUIDE.md).\n\n## Citing `risk_flags`\n\n- Codes are stable snake-ish tokens: `RSI_overbought`, `VIX_elevated`, `News_keyword:bankruptcy`, `Geo_keyword:tariff`, etc.\n- They are **heuristic**; tune lists in `setup/config/risk_keywords.json` and thresholds in `setup/config/score_dimensions.yaml`.\n\n## When to recommend upstream projects\n\n- **[openclaw/skills – udiedrichsen/stock-analysis](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis)** — Broader OpenClaw-oriented feature set; use for ecosystem parity or multi-step agent workflows outside this package.\n- **[wbh604/UZI-Skill](https://github.com/wbh604/UZI-Skill)** — Deep agent research (e.g. China/A-share workflows, large HTML reports). **Not** vendored here; suggest it when the user needs that market or report style.\n\n## Disclaimer\n\nSee [../guides/DISCLAIMER_AND_LIMITATIONS.md](../guides/DISCLAIMER_AND_LIMITATIONS.md).\n\nFile v1.33.0:setup/docs/core/AGENTS.md\n\n# AGENTS — Multi-tool project entry (Cursor, Claude Code, OpenClaw, Codex)\n\nThis file is the **canonical** agent instructions hub. Root stubs (`AGENTS.md`, `CLAUDE.md`) point here so IDEs and CLIs stay aligned.\n\n## Repository contract\n\n| Rule | Detail |\n|------|--------|\n| Docs & SQL | All `.md` and `.sql` live under **`/setup`** (see `setup/tools/check_structure.py`). Exceptions at repo root: `SKILL.md`, `AGENTS.md`, `CLAUDE.md` only. |\n| Package | Importable code: `tai_alpha/`; thin CLIs: `scripts/`. |\n| Persistence | Default SQLite: `tai_alpha_output/tai_alpha.db` or `TAI_ALPHA_DB_PATH`. |\n| Python env | Prefer **conda** env **`llm_base`** for local runs (per project standards). |\n\n## OpenClaw / marketplace skill\n\n- **Skill manifest:** root [`SKILL.md`](../../../SKILL.md) — YAML frontmatter `name` + `description` (required for registries).\n- **Mirror:** [`SKILL.md`](SKILL.md) in this folder (same content policy).\n- **Install:** `pip install -e \".[dev]\"` from repo root; entry points `tai-alpha-*` in `pyproject.toml`.\n- **Do not** duplicate large upstream skills (e.g. full UZI YAML); link and attribute instead.\n\n## Cursor\n\n- **Project rules:** [`.cursor/rules/tai-alpha-stock.mdc`](../../../.cursor/rules/tai-alpha-stock.mdc) (`alwaysApply` conventions).\n- **User flows:** [USERFLOW.md](../../USERFLOW.md), [AGENT_GUIDE.md](AGENT_GUIDE.md).\n\n## Claude Code\n\n- **Project file:** root [`CLAUDE.md`](../../../CLAUDE.md) (stub → this doc).\n- Use this hub + [`AGENT_GUIDE.md`](AGENT_GUIDE.md) for orchestration, SQLite, personas.\n\n## Core commands\n\n```bash\npip install -e \".[dev]\"\npython scripts/analyze.py AAPL --no-report\npytest tests/unit tests/integration -v\npython setup/tools/check_structure.py\n```\n\n## Doc map\n\n| Topic | Path |\n|-------|------|\n| Index | [README.md](../../README.md) |\n| Module layout | [MODULE_STRUCTURE.md](../../MODULE_STRUCTURE.md) |\n| Personas / i18n | [../guides/PERSONA_ECOSYSTEM_GUIDE.md](../guides/PERSONA_ECOSYSTEM_GUIDE.md), [../guides/CHINESE_AUDIENCE_GUIDE.md](../guides/CHINESE_AUDIENCE_GUIDE.md) |\n| Disclaimer | [../guides/DISCLAIMER_AND_LIMITATIONS.md](../guides/DISCLAIMER_AND_LIMITATIONS.md) |\n| SQLite | [../database/SQLITE.md](../database/SQLITE.md) |\n\n## Safety\n\n- Production DB / RLS: do not overwrite without explicit approval.\n- `.env` may exist but is gitignored; never commit secrets.\n\nFile v1.33.0:setup/docs/database/PERSONA_SQLITE_FIELDS.md\n\n# Persona and meta JSON (SQLite)\n\n## `runs` table\n\n| Column | Purpose |\n|--------|---------|\n| `persona_json` | Optional JSON: `persona_ids` used and embedded `score` snapshot |\n| `meta_json` | Run metadata: `lang`, `audience`, `source_policy`, `market`, `persona_requested` |\n\nLegacy databases receive these columns via migration on `init_db()`.\n\n## Schema file\n\nConsolidated DDL: [`../sql/schema/tai_alpha_schema_consolidated.sql`](../sql/schema/tai_alpha_schema_consolidated.sql).\n\nFile v1.33.0:setup/docs/database/SQLITE.md\n\n# SQLite storage\n\n## Location\n\n- Default database file: `tai_alpha_output/tai_alpha.db` (next to the former JSON artifact directory).\n- Override with environment variable `TAI_ALPHA_DB_PATH` (absolute or relative path).\n\n## Schema\n\nThe canonical, idempotent DDL lives in:\n\n- [`../../sql/schema/tai_alpha_schema_consolidated.sql`](../../sql/schema/tai_alpha_schema_consolidated.sql)\n\nTables:\n\n- **`runs`** — one row per analysis run (`collect_json`, `backtest_json`, `score_json`, `ml_json` as JSON text).\n- **`watchlist`** — alert targets/stops (replaces `watch.json`).\n\n## Application bootstrap\n\nPython code calls `tai_alpha.storage_sqlite.init_db(path)` before reads/writes. The same DDL is embedded in `tai_alpha/storage_sqlite.py` for zero-dependency bootstrap.\n\n## Migrations\n\nBreaking changes to columns should add a new migration file under `setup/sql/archive/` and update the consolidated schema for fresh installs.\n\nFile v1.33.0:setup/docs/deployment/CLAWDHUB_PUBLISH.md\n\n# Publish to ClawdHub / ClawHub\n\nThis repository is a **skill-shaped** layout: root `SKILL.md` is the marketplace entry; the Python package lives in `tai_alpha/`. Publishing uploads the **repository root folder** (the path you pass to `clawdhub publish`).\n\n## What gets uploaded\n\nThe ClawdHub CLI (`clawdhub` ≥ 0.3.0) does **not** zip the entire tree blindly. It:\n\n1. **Skips** `.git/`, `node_modules/`, `.clawdhub/`, and anything matched by **`.gitignore`** plus **`.clawdhubignore`** (repo root has both).\n2. **Skips** hidden files and directories whose name starts with `.` when walking the tree (so `.cursor/`, `.venv/`, `.env` are not picked up from the walk).\n3. **Only includes files** whose extension is on the publisher’s allowlist (e.g. `.md`, `.py`, `.yaml`, `.json`, `.toml`, `.sql`, `.sh` — not `.db`, `.whl`, `.png`, `.pyc`).\n\nSo **binaries** under ignored paths (e.g. `dist/`, `build/`, `tai_alpha_output/`, wheels, SQLite DBs) are **not** sent. What *does* go up by default is essentially **source + docs**: `tai_alpha/`, `scripts/`, `setup/`, root `SKILL.md`, `pyproject.toml`, etc.\n\n**Tests:** the `tests/` tree is normal Python and *would* be included unless excluded. This repo’s **`.clawdhubignore`** omits `tests/` so the marketplace bundle stays focused on the runnable skill, not the calibration suite. Remove or edit that line if you intentionally want tests on ClawdHub.\n\n## Prerequisites\n\n- [Node.js](https://nodejs.org/) 20+ (`node -v`).\n- A ClawdHub account and a publish token (browser login stores one locally).\n\n**Command name:** the CLI binary is **`clawdhub`** (with a **d**), from the npm package [`clawdhub`](https://www.npmjs.com/package/clawdhub). There is no `clawhub` command — if you see `bash: clawhub: command not found`, use `clawdhub` instead (or install globally: `npm i -g clawdhub undici` — `undici` avoids a common startup error on recent Node).\n\n## One-time authentication\n\n```bash\n# Installs CLI + undici into a temp dir (clawdhub 0.3.0 may omit undici; required at runtime)\n# Or: npm i -g clawdhub && npm i -g undici   # if your global clawdhub fails to start\n\nclawdhub login\n# Headless / CI:\n# clawdhub login --no-browser --token 'clh_...'\nclawdhub whoami\n```\n\nToken file (macOS): `~/Library/Application Support/clawdhub/config.json` (override with `CLAWDHUB_CONFIG_PATH`).\n\n## Publish this repo\n\nFrom the repository root:\n\n```bash\n./setup/tools/clawdhub_publish.sh\n```\n\nOptional overrides:\n\n```bash\nCHANGELOG=\"Persona ecosystem, market router, zh-CN/zh-HK reports, SQLite persona_json\" \\\n  ./setup/tools/clawdhub_publish.sh\n```\n\nPass extra `clawdhub publish` flags after `--` if needed:\n\n```bash\n./setup/tools/clawdhub_publish.sh -- --no-input\n```\n\nThe script reads `version` from `pyproject.toml` and sets `--slug tai-alpha-stock` and display name **Tai Alpha Stock**.\n\n## Manual equivalent\n\n```bash\nVERSION=$(python3 -c \"import pathlib,tomllib; print(tomllib.load(open(pathlib.Path('pyproject.toml'),'rb'))['project']['version'])\")\n# from a temp npm project with clawdhub + undici installed:\nclawdhub publish . \\\n  --slug tai-alpha-stock \\\n  --name \"Tai Alpha Stock\" \\\n  --version \"$VERSION\" \\\n  --changelog \"Your release notes\"\n```\n\nRun the last command with cwd = this repo root (`.`).\n\n## Before every release\n\nSee [../../README.md](../../README.md) (section **Pre-publish (ClawHub)**): tests, `check_structure`, wheel build, and keep root `SKILL.md` in sync with [../core/SKILL.md](../core/SKILL.md) frontmatter when you change the skill card.\n\n## Registry URLs\n\nDefaults follow the CLI (`https://clawdhub.com`). Override with `CLAWDHUB_SITE` / `CLAWDHUB_REGISTRY` if your org uses a different registry.\n\nArchive v1.31.0: 58 files, 40452 bytes\n\nFiles: _meta.json (135b), assets/example_asset.txt (864b), pyproject.toml (1589b), scripts/alerts.py (326b), scripts/analyze.py (352b), scripts/backtest.py (320b), scripts/batch.py (353b), scripts/collect.py (313b), scripts/cron.py (354b), scripts/custom.py (359b), scripts/ml.py (346b), scripts/multi_backtest.py (365b), scripts/portfolio.py (345b), scripts/release_gate.sh (716b), scripts/report.py (344b), scripts/run_tests_live.sh (323b), scripts/run_tests.sh (370b), scripts/score.py (313b), scripts/sector.py (329b), setup/docs/core/SKILL.md (1386b), setup/docs/guides/API_REFERENCE.md (651b), setup/docs/guides/IB_PERSPECTIVE.md (271b), setup/docs/guides/QUANT.md (288b), setup/docs/guides/SCORING_ELITE.md (362b), setup/docs/guides/SCORING.md (401b), setup/docs/guides/STRATEGIES.md (565b), setup/MODULE_STRUCTURE.md (2088b), setup/README.md (1316b), setup/sql/archive/README.md (85b), setup/sql/schema/README.md (147b), setup/tools/check_structure.py (1980b), setup/USERFLOW.md (1834b), SKILL.md (1129b), tai_alpha/__init__.py (102b), tai_alpha/alerts_store.py (3309b), tai_alpha/backtest_engine.py (7583b), tai_alpha/collect.py (6842b), tai_alpha/ml_predict.py (1602b), tai_alpha/pipeline.py (2733b), tai_alpha/portfolio_sim.py (2552b), tai_alpha/report_text.py (3609b), tai_alpha/runtime_paths.py (1656b), tai_alpha/schema.py (2782b), tai_alpha/score_engine.py (3565b), tai_alpha/script_entrypoints.py (7186b), tai_alpha/sector_analysis.py (2111b), tai_alpha/sector_map.py (603b), tai_alpha/yfinance_utils.py (831b), test-prompts.json (155b), tests/conftest.py (838b), tests/fixtures/sample_collect.json (601b), tests/integration/test_score_cli.py (582b), tests/live/test_live_backtest.py (621b), tests/live/test_live_collect_and_score.py (615b), tests/unit/test_backtest_signals.py (523b), tests/unit/test_report_text.py (992b), tests/unit/test_schema.py (530b), tests/unit/test_score_engine.py (740b)\n\nFile v1.31.0:setup/docs/core/SKILL.md\n\n---\nname: tai-alpha-stock\ndescription: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML, portfolio/sector tools. Triggers include full analyze, batch watchlist, portfolio sim, cron hotlist, custom backtest, ML 7d pred, sector ETF alpha. Artifacts default to tai_alpha_output/ (override TAI_ALPHA_OUTPUT_DIR).\n---\n\n# Tai Alpha Stock\n\nCanonical documentation lives under **`/setup`** (this file mirrors root `SKILL.md` for policy compliance).\n\n## Workflow tree\n\n- **Single:** `python scripts/analyze.py TICKER` → full pipeline; JSON under `tai_alpha_output/`.\n- **Batch:** `python scripts/batch.py TICKER1 TICKER2` → summary lines from latest `score.json`.\n- **Portfolio:** `python scripts/portfolio.py TICKER ...` → equal-weight sim JSON.\n- **Cron:** `python scripts/cron.py` → hotlist from `TAI_ALPHA_HOTLIST`.\n- **Alerts:** `python scripts/alerts.py add|list|check` → `watch.json` in output dir by default.\n- **Custom:** `python scripts/custom.py TICKER --strategy macd` → collect + backtest.\n- **ML:** `python scripts/ml.py TICKER` → `ml_pred.json`.\n- **Sector:** `python scripts/sector.py TICKER [ETF]`.\n\n## Docs\n\n- Strategies: [../guides/STRATEGIES.md](../guides/STRATEGIES.md)\n- User flows: [../../USERFLOW.md](../../USERFLOW.md)\n\n## Test\n\n```bash\npip install -e \".[dev]\"\npytest tests/unit tests/integration -v\n```\n\nFile v1.31.0:SKILL.md\n\n---\nname: tai-alpha-stock\ndescription: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML, portfolio/sector tools. Artifacts default to tai_alpha_output/ (override TAI_ALPHA_OUTPUT_DIR).\n---\n\n# Tai Alpha Stock\n\n**Canonical docs:** `/setup` (README, USERFLOW, MODULE_STRUCTURE, guides).  \n**Mirror:** [setup/docs/core/SKILL.md](setup/docs/core/SKILL.md) (same intent as this file).\n\n## Workflow tree\n\n- **Single:** `python scripts/analyze.py TICKER` → pipeline; writes JSON under `tai_alpha_output/`.\n- **Batch:** `python scripts/batch.py TICKER1 TICKER2`\n- **Portfolio:** `python scripts/portfolio.py TICKER ...`\n- **Cron:** `python scripts/cron.py` (`TAI_ALPHA_HOTLIST`, optional `TAI_ALPHA_TELEGRAM_WEBHOOK`)\n- **Alerts:** `python scripts/alerts.py` (default `watch.json` in output dir)\n- **Custom / ML / sector:** `scripts/custom.py`, `scripts/ml.py`, `scripts/sector.py`\n\n## Docs\n\n- [setup/docs/guides/STRATEGIES.md](setup/docs/guides/STRATEGIES.md)\n\n## Test\n\n```bash\npip install -e \".[dev]\"\npytest tests/unit tests/integration -v\npython setup/tools/check_structure.py\n```\n\nFile v1.31.0:setup/README.md\n\n# Tai Alpha Stock — setup and docs\n\nThis directory is the **single source of truth** for project documentation and SQL (per repository standards). The Python package lives at the repo root in `tai_alpha/`; generated JSON artifacts go to `tai_alpha_output/` by default.\n\n## Quick start\n\n```bash\ncd /path/to/tai-alpha-stock\npython -m venv .venv && source .venv/bin/activate\npip install -e \".[dev]\"\npython scripts/analyze.py AAPL --no-report\n# Artifacts: tai_alpha_output/data.json, backtest.json, score.json\n```\n\nOverride output directory:\n\n```bash\nexport TAI_ALPHA_OUTPUT_DIR=/tmp/tai_run\npython scripts/analyze.py MSFT\n```\n\n## Doc index\n\n| Path | Purpose |\n|------|---------|\n| [USERFLOW.md](USERFLOW.md) | User-facing flows and CLI map |\n| [MODULE_STRUCTURE.md](MODULE_STRUCTURE.md) | Modules, scripts, and dependencies |\n| [docs/core/SKILL.md](docs/core/SKILL.md) | Mirror of root `SKILL.md` (agent / marketplace) |\n| [docs/guides/](docs/guides/) | Strategies, scoring, quant notes |\n\n## Tooling\n\n- Tests: `scripts/run_tests.sh` or `pytest tests/unit tests/integration`\n- Structure guard: `python setup/tools/check_structure.py`\n- Optional: `pre-commit install` after configuring hooks (see repo `.pre-commit-config.yaml`)\n\n## Version\n\nPackage version is defined in `pyproject.toml` and `tai_alpha/__init__.py`.\n\nFile v1.31.0:setup/sql/archive/README.md\n\n# SQL archive\n\nSuperseded migrations and one-off fixes live here for reference only.\n\nFile v1.31.0:setup/sql/schema/README.md\n\n# SQL schema\n\nAdd an idempotent production schema file here when the project uses a database.\n\nHistorical one-off scripts belong in `../archive/`.\n\nFile v1.31.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.31.0\",\n  \"publishedAt\": 1776688436963\n}\n\nFile v1.31.0:setup/docs/guides/API_REFERENCE.md\n\n# API reference\n\n## Library\n\nImport from the `tai_alpha` package after install (`pip install -e .`):\n\n- `collect_ticker(ticker, out_path)` — fetch and write JSON\n- `run_backtest(data_path, out_path, strategy=...)` — VectorBT backtest\n- `score_data(data, ml_pred=None)` — score dict\n- `run_analyze(ticker, base_dir, ...)` — full pipeline\n- `default_output_dir()` — resolved artifact directory (respects `TAI_ALPHA_OUTPUT_DIR`)\n\n## CLI\n\nSee [USERFLOW.md](../../USERFLOW.md) and root `scripts/*.py` — thin wrappers around the same functions.\n\n## External data\n\nMarket data via **yfinance** (network). Live tests are opt-in (`pytest --live`).\n\nFile v1.31.0:setup/docs/guides/IB_PERSPECTIVE.md\n\n# IB perspective (reference)\n\n- Analyst rating mean and dispersion (via yfinance `info`)\n- Target vs spot for upside context\n- Peer / sector context via sector ETF mapping (`tai_alpha/sector_map.py`)\n\nThese inputs feed the scoring engine; they are not investment advice.\n\nFile v1.31.0:setup/docs/guides/QUANT.md\n\n# Quant metrics (reference)\n\n- RSI(14): oversold / overbought zones\n- MACD vs signal: trend / momentum\n- Sharpe: risk-adjusted return from backtest stats\n- Volume: liquidity / participation proxy\n\nSee `tai_alpha/backtest_engine.py` for signal construction and `vectorbt` portfolio stats.\n\nFile v1.31.0:setup/docs/guides/SCORING_ELITE.md\n\n# Elite scoring (reference blend)\n\nIllustrative weighting notes (implementation may differ — verify `score_engine.py`):\n\n- Quant: Sharpe, MACD, RSI contributions\n- IB: rating and upside to target\n- Fundamentals: ROE, PE\n- Sentiment: news keyword tilt\n\nSignal labels: e.g. STRONG BUY above high conviction threshold, BUY / HOLD / AVOID / SELL bands below that.\n\nFile v1.31.0:setup/docs/guides/SCORING.md\n\n# Scoring matrix (summary)\n\nHeuristic conviction score combining:\n\n- **Fundamentals:** PE, ROE, debt, dividend yield\n- **Technicals:** Sharpe, MACD regime, RSI zones, volume\n- **IB / sentiment:** analyst mean rating, price vs target, EPS growth, news tone\n- **Macro / vol:** VIX, SPY momentum, optional ML adjustment\n\nExact weights live in `tai_alpha/score_engine.py`. Tune there for product changes.\n\nFile v1.31.0:setup/docs/guides/STRATEGIES.md\n\n# Strategies and risk\n\n## RSI\n\nBuy below the low threshold; sell above the high threshold (defaults tuned in CLI).\n\n## MACD\n\nEntries when MACD is above the signal line; exits when below.\n\n## Bollinger\n\nBuy near lower band; sell near upper band (implementation in `tai_alpha/backtest_engine.py`).\n\n## Risk sizing\n\nHigh conviction: fuller size; medium: partial; low: cash-heavy (see scoring docs for conviction thresholds).\n\n## Stops\n\nUse a trailing stop policy appropriate to your mandate (example: trail 8% — not enforced in code; document your execution layer).\n\nArchive v1.30.0: 23 files, 12000 bytes\n\nFiles: assets/example_asset.txt (864b), references/api_reference.md (966b), references/ib-perspective.md (152b), references/quant.md (150b), references/scoring-elite.md (203b), references/scoring.md (93b), references/strategies.md (154b), scripts/alerts.py (418b), scripts/analyze.py (1739b), scripts/backtest.py (1824b), scripts/batch.py (524b), scripts/collect.py (3125b), scripts/cron.py (153b), scripts/custom.py (313b), scripts/ml.py (562b), scripts/multi_backtest.py (1082b), scripts/portfolio.py (370b), scripts/report.py (1234b), scripts/score.py (1925b), scripts/sector.py (164b), SKILL.md (1179b), test-prompts.json (155b), _meta.json (135b)\n\nFile v1.30.0:SKILL.md\n\n---\\nname: tai-alpha-stock\\ndescription: 🔥 Tai Alpha v1.14 PERFECT 360° stock/crypto analysis. Triggers: \\\"tai-alpha [TICKER]\\\", \\\"batch watchlist/image SOFI AAPL\\\", \\\"portfolio sim top3\\\", \\\"cron S&P hotlist\\\", \\\"custom backtest MACD NVDA\\\", \\\"ml pred SOFI 7d\\\", \\\"sector NVDA SMH\\\". VectorBT multi-strat (RSI/MACD/BB), portfolio sim, cron/alerts, ML pred, sector ETF alpha, FRED macro/IV, risk sizing. Telegram/JSON 2s self-contained uv.\\n---\\n\\n# Tai Alpha v1.14 PERFECT\\n\\nElite beats benchmarks (NVDA STRONG BUY 98/100 CAGR48% Win69%).\\n\\n## Workflow Tree\\n**Single**: `analyze.py NVDA` → 360 score/backtest bullets.\\n**Batch/Image**: `batch.py watchlist.txt/image.jpg` → top3 table + signals.\\n**Portfolio**: `portfolio.py top3` → $10k sim P&L/DD/vol vs SPY.\\n**Cron**: `cron.py S&P` → daily hotlist Telegram.\\n**Alerts**: `alerts.py add SOFI $12 target/stop` → watch.json push.\\n**Custom**: `custom.py RSI low=30 high=70 NVDA` or MACD/BB.\\n**ML**: `ml.py SOFI 7d pred` → return adj score.\\n**Sector**: `sector.py NVDA SMH` → ETF ROE/PE alpha.\\n\\nSee references/strategies.md (rules/params/risk).\\n\\n**Test**: `uv run analyze.py NVDA` (2s JSON/bullets).\\n\n\nFile v1.30.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.30.0\",\n  \"publishedAt\": 1776676836427\n}\n\nFile v1.30.0:references/api_reference.md\n\n# Reference Documentation for Tai Alpha Stock\n\nThis is a placeholder for detailed reference documentation.\nReplace with actual reference content or delete if not needed.\n\nExample real reference docs from other skills:\n- product-management/references/communication.md - Comprehensive guide for status updates\n- product-management/references/context_building.md - Deep-dive on gathering context\n- bigquery/references/ - API references and query examples\n\n## When Reference Docs Are Useful\n\nReference docs are ideal for:\n- Comprehensive API documentation\n- Detailed workflow guides\n- Complex multi-step processes\n- Information too lengthy for main SKILL.md\n- Content that's only needed for specific use cases\n\n## Structure Suggestions\n\n### API Reference Example\n- Overview\n- Authentication\n- Endpoints with examples\n- Error codes\n- Rate limits\n\n### Workflow Guide Example\n- Prerequisites\n- Step-by-step instructions\n- Common patterns\n- Troubleshooting\n- Best practices\n\nFile v1.30.0:references/ib-perspective.md\n\n# IB Perspective\\n- RatingMean<2.5: Strong buy +15pt\\n- Target>Price*1.1: Upside +10pt\\n- Peers: Sector comps (implied)\\n- Consensus: Aggregated banks\\n\n\nFile v1.30.0:references/quant.md\n\n# Quant Metrics\\n- RSI(14): Oversold<30 buy, >70 sell\\n- MACD: Bull cross +8pt\\n- Sharpe>1 +12pt (risk-adj)\\n- Vol trend: High vol breakout +vol adj\\n\n\nFile v1.30.0:references/scoring-elite.md\n\n# Elite Scoring v1.2\\nQuant35%: Sharpe>1.5 +18, MACD bull +10, RSI<35 +8\\nIB25%: Rating<2.2 +20, Target>115% +12\\nFund25%: ROE>20% +15, PE<20 +12\\nSent15%: News pos*4\\nThresholds: STRONG BUY>85, BUY>75\\n\n\nFile v1.30.0:references/scoring.md\n\n# Scoring Matrix\\nFund: PE<15 +20, ROE>15% +15, Debt<50 +10\\nTech: RSI<30 +15, Vol high +10\\n\n\nFile v1.30.0:references/strategies.md\n\n# Strategies & Risk\\n\\n## RSI\\nBuy <35 Sell >75\\n\\n## MACD\\nBuy cross above signal\\n\\n## Risk Sizing\\n>90 full, 75-90 50%, <60 cash\\n\\n## Stop\\nTrail 8%\\n\n\nFile v1.30.0:test-prompts.json\n\n[\"tai-alpha NVDA\", \"batch SOFI AAPL TYL\", \"portfolio top3\", \"cron S&P hotlist\", \"alerts add SOFI $12\", \"custom MACD NVDA\", \"ml SOFI 7d\", \"sector NVDA SMH\"]\n\nFile v1.30.0:assets/example_asset.txt\n\n# Example Asset File\n\nThis placeholder represents where asset files would be stored.\nReplace with actual asset files (templates, images, fonts, etc.) or delete if not needed.\n\nAsset files are NOT intended to be loaded into context, but rather used within\nthe output Codex produces.\n\nExample asset files from other skills:\n- Brand guidelines: logo.png, slides_template.pptx\n- Frontend builder: hello-world/ directory with HTML/React boilerplate\n- Typography: custom-font.ttf, font-family.woff2\n- Data: sample_data.csv, test_dataset.json\n\n## Common Asset Types\n\n- Templates: .pptx, .docx, boilerplate directories\n- Images: .png, .jpg, .svg, .gif\n- Fonts: .ttf, .otf, .woff, .woff2\n- Boilerplate code: Project directories, starter files\n- Icons: .ico, .svg\n- Data files: .csv, .json, .xml, .yaml\n\nNote: This is a text placeholder. Actual assets can be any file type.\n\nArchive v1.26.0: 23 files, 11899 bytes\n\nFiles: assets/example_asset.txt (864b), references/api_reference.md (966b), references/ib-perspective.md (152b), references/quant.md (150b), references/scoring-elite.md (203b), references/scoring.md (93b), references/strategies.md (154b), scripts/alerts.py (418b), scripts/analyze.py (1739b), scripts/backtest.py (1824b), scripts/batch.py (524b), scripts/collect.py (3125b), scripts/cron.py (153b), scripts/custom.py (313b), scripts/ml.py (413b), scripts/multi_backtest.py (1082b), scripts/portfolio.py (370b), scripts/report.py (1234b), scripts/score.py (1862b), scripts/sector.py (164b), SKILL.md (1179b), test-prompts.json (155b), _meta.json (135b)\n\nFile v1.26.0:SKILL.md\n\n---\\nname: tai-alpha-stock\\ndescription: 🔥 Tai Alpha v1.14 PERFECT 360° stock/crypto analysis. Triggers: \\\"tai-alpha [TICKER]\\\", \\\"batch watchlist/image SOFI AAPL\\\", \\\"portfolio sim top3\\\", \\\"cron S&P hotlist\\\", \\\"custom backtest MACD NVDA\\\", \\\"ml pred SOFI 7d\\\", \\\"sector NVDA SMH\\\". VectorBT multi-strat (RSI/MACD/BB), portfolio sim, cron/alerts, ML pred, sector ETF alpha, FRED macro/IV, risk sizing. Telegram/JSON 2s self-contained uv.\\n---\\n\\n# Tai Alpha v1.14 PERFECT\\n\\nElite beats benchmarks (NVDA STRONG BUY 98/100 CAGR48% Win69%).\\n\\n## Workflow Tree\\n**Single**: `analyze.py NVDA` → 360 score/backtest bullets.\\n**Batch/Image**: `batch.py watchlist.txt/image.jpg` → top3 table + signals.\\n**Portfolio**: `portfolio.py top3` → $10k sim P&L/DD/vol vs SPY.\\n**Cron**: `cron.py S&P` → daily hotlist Telegram.\\n**Alerts**: `alerts.py add SOFI $12 target/stop` → watch.json push.\\n**Custom**: `custom.py RSI low=30 high=70 NVDA` or MACD/BB.\\n**ML**: `ml.py SOFI 7d pred` → return adj score.\\n**Sector**: `sector.py NVDA SMH` → ETF ROE/PE alpha.\\n\\nSee references/strategies.md (rules/params/risk).\\n\\n**Test**: `uv run analyze.py NVDA` (2s JSON/bullets).\\n\n\nFile v1.26.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.26.0\",\n  \"publishedAt\": 1776648677663\n}\n\nFile v1.26.0:references/api_reference.md\n\n# Reference Documentation for Tai Alpha Stock\n\nThis is a placeholder for detailed reference documentation.\nReplace with actual reference content or delete if not needed.\n\nExample real reference docs from other skills:\n- product-management/references/communication.md - Comprehensive guide for status updates\n- product-management/references/context_building.md - Deep-dive on gathering context\n- bigquery/references/ - API references and query examples\n\n## When Reference Docs Are Useful\n\nReference docs are ideal for:\n- Comprehensive API documentation\n- Detailed workflow guides\n- Complex multi-step processes\n- Information too lengthy for main SKILL.md\n- Content that's only needed for specific use cases\n\n## Structure Suggestions\n\n### API Reference Example\n- Overview\n- Authentication\n- Endpoints with examples\n- Error codes\n- Rate limits\n\n### Workflow Guide Example\n- Prerequisites\n- Step-by-step instructions\n- Common patterns\n- Troubleshooting\n- Best practices\n\nFile v1.26.0:references/ib-perspective.md\n\n# IB Perspective\\n- RatingMean<2.5: Strong buy +15pt\\n- Target>Price*1.1: Upside +10pt\\n- Peers: Sector comps (implied)\\n- Consensus: Aggregated banks\\n\n\nFile v1.26.0:references/quant.md\n\n# Quant Metrics\\n- RSI(14): Oversold<30 buy, >70 sell\\n- MACD: Bull cross +8pt\\n- Sharpe>1 +12pt (risk-adj)\\n- Vol trend: High vol breakout +vol adj\\n\n\nFile v1.26.0:references/scoring-elite.md\n\n# Elite Scoring v1.2\\nQuant35%: Sharpe>1.5 +18, MACD bull +10, RSI<35 +8\\nIB25%: Rating<2.2 +20, Target>115% +12\\nFund25%: ROE>20% +15, PE<20 +12\\nSent15%: News pos*4\\nThresholds: STRONG BUY>85, BUY>75\\n\n\nFile v1.26.0:references/scoring.md\n\n# Scoring Matrix\\nFund: PE<15 +20, ROE>15% +15, Debt<50 +10\\nTech: RSI<30 +15, Vol high +10\\n\n\nFile v1.26.0:references/strategies.md\n\n# Strategies & Risk\\n\\n## RSI\\nBuy <35 Sell >75\\n\\n## MACD\\nBuy cross above signal\\n\\n## Risk Sizing\\n>90 full, 75-90 50%, <60 cash\\n\\n## Stop\\nTrail 8%\\n\n\nFile v1.26.0:test-prompts.json\n\n[\"tai-alpha NVDA\", \"batch SOFI AAPL TYL\", \"portfolio top3\", \"cron S&P hotlist\", \"alerts add SOFI $12\", \"custom MACD NVDA\", \"ml SOFI 7d\", \"sector NVDA SMH\"]\n\nFile v1.26.0:assets/example_asset.txt\n\n# Example Asset File\n\nThis placeholder represents where asset files would be stored.\nReplace with actual asset files (templates, images, fonts, etc.) or delete if not needed.\n\nAsset files are NOT intended to be loaded into context, but rather used within\nthe output Codex produces.\n\nExample asset files from other skills:\n- Brand guidelines: logo.png, slides_template.pptx\n- Frontend builder: hello-world/ directory with HTML/React boilerplate\n- Typography: custom-font.ttf, font-family.woff2\n- Data: sample_data.csv, test_dataset.json\n\n## Common Asset Types\n\n- Templates: .pptx, .docx, boilerplate directories\n- Images: .png, .jpg, .svg, .gif\n- Fonts: .ttf, .otf, .woff, .woff2\n- Boilerplate code: Project directories, starter files\n- Icons: .ico, .svg\n- Data files: .csv, .json, .xml, .yaml\n\nNote: This is a text placeholder. Actual assets can be any file type.\n\nArchive v1.22.0: 23 files, 11839 bytes\n\nFiles: assets/example_asset.txt (864b), references/api_reference.md (966b), references/ib-perspective.md (152b), references/quant.md (150b), references/scoring-elite.md (203b), references/scoring.md (93b), references/strategies.md (154b), scripts/alerts.py (418b), scripts/analyze.py (1739b), scripts/backtest.py (1824b), scripts/batch.py (524b), scripts/collect.py (3125b), scripts/cron.py (153b), scripts/custom.py (313b), scripts/ml.py (413b), scripts/multi_backtest.py (1082b), scripts/portfolio.py (370b), scripts/report.py (1234b), scripts/score.py (1719b), scripts/sector.py (164b), SKILL.md (1179b), test-prompts.json (155b), _meta.json (135b)\n\nFile v1.22.0:SKILL.md\n\n---\\nname: tai-alpha-stock\\ndescription: 🔥 Tai Alpha v1.14 PERFECT 360° stock/crypto analysis. Triggers: \\\"tai-alpha [TICKER]\\\", \\\"batch watchlist/image SOFI AAPL\\\", \\\"portfolio sim top3\\\", \\\"cron S&P hotlist\\\", \\\"custom backtest MACD NVDA\\\", \\\"ml pred SOFI 7d\\\", \\\"sector NVDA SMH\\\". VectorBT multi-strat (RSI/MACD/BB), portfolio sim, cron/alerts, ML pred, sector ETF alpha, FRED macro/IV, risk sizing. Telegram/JSON 2s self-contained uv.\\n---\\n\\n# Tai Alpha v1.14 PERFECT\\n\\nElite beats benchmarks (NVDA STRONG BUY 98/100 CAGR48% Win69%).\\n\\n## Workflow Tree\\n**Single**: `analyze.py NVDA` → 360 score/backtest bullets.\\n**Batch/Image**: `batch.py watchlist.txt/image.jpg` → top3 table + signals.\\n**Portfolio**: `portfolio.py top3` → $10k sim P&L/DD/vol vs SPY.\\n**Cron**: `cron.py S&P` → daily hotlist Telegram.\\n**Alerts**: `alerts.py add SOFI $12 target/stop` → watch.json push.\\n**Custom**: `custom.py RSI low=30 high=70 NVDA` or MACD/BB.\\n**ML**: `ml.py SOFI 7d pred` → return adj score.\\n**Sector**: `sector.py NVDA SMH` → ETF ROE/PE alpha.\\n\\nSee references/strategies.md (rules/params/risk).\\n\\n**Test**: `uv run analyze.py NVDA` (2s JSON/bullets).\\n\n\nFile v1.22.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.22.0\",\n  \"publishedAt\": 1776646937343\n}\n\nFile v1.22.0:references/api_reference.md\n\n# Reference Documentation for Tai Alpha Stock\n\nThis is a placeholder for detailed reference documentation.\nReplace with actual reference content or delete if not needed.\n\nExample real reference docs from other skills:\n- product-management/references/communication.md - Comprehensive guide for status updates\n- product-management/references/context_building.md - Deep-dive on gathering context\n- bigquery/references/ - API references and query examples\n\n## When Reference Docs Are Useful\n\nReference docs are ideal for:\n- Comprehensive API documentation\n- Detailed workflow guides\n- Complex multi-step processes\n- Information too lengthy for main SKILL.md\n- Content that's only needed for specific use cases\n\n## Structure Suggestions\n\n### API Reference Example\n- Overview\n- Authentication\n- Endpoints with examples\n- Error codes\n- Rate limits\n\n### Workflow Guide Example\n- Prerequisites\n- Step-by-step instructions\n- Common patterns\n- Troubleshooting\n- Best practices\n\nFile v1.22.0:references/ib-perspective.md\n\n# IB Perspective\\n- RatingMean<2.5: Strong buy +15pt\\n- Target>Price*1.1: Upside +10pt\\n- Peers: Sector comps (implied)\\n- Consensus: Aggregated banks\\n\n\nFile v1.22.0:references/quant.md\n\n# Quant Metrics\\n- RSI(14): Oversold<30 buy, >70 sell\\n- MACD: Bull cross +8pt\\n- Sharpe>1 +12pt (risk-adj)\\n- Vol trend: High vol breakout +vol adj\\n\n\nFile v1.22.0:references/scoring-elite.md\n\n# Elite Scoring v1.2\\nQuant35%: Sharpe>1.5 +18, MACD bull +10, RSI<35 +8\\nIB25%: Rating<2.2 +20, Target>115% +12\\nFund25%: ROE>20% +15, PE<20 +12\\nSent15%: News pos*4\\nThresholds: STRONG BUY>85, BUY>75\\n\n\nFile v1.22.0:references/scoring.md\n\n# Scoring Matrix\\nFund: PE<15 +20, ROE>15% +15, Debt<50 +10\\nTech: RSI<30 +15, Vol high +10\\n\n\nFile v1.22.0:references/strategies.md\n\n# Strategies & Risk\\n\\n## RSI\\nBuy <35 Sell >75\\n\\n## MACD\\nBuy cross above signal\\n\\n## Risk Sizing\\n>90 full, 75-90 50%, <60 cash\\n\\n## Stop\\nTrail 8%\\n\n\nFile v1.22.0:test-prompts.json\n\n[\"tai-alpha NVDA\", \"batch SOFI AAPL TYL\", \"portfolio top3\", \"cron S&P hotlist\", \"alerts add SOFI $12\", \"custom MACD NVDA\", \"ml SOFI 7d\", \"sector NVDA SMH\"]\n\nFile v1.22.0:assets/example_asset.txt\n\n# Example Asset File\n\nThis placeholder represents where asset files would be stored.\nReplace with actual asset files (templates, images, fonts, etc.) or delete if not needed.\n\nAsset files are NOT intended to be loaded into context, but rather used within\nthe output Codex produces.\n\nExample asset files from other skills:\n- Brand guidelines: logo.png, slides_template.pptx\n- Frontend builder: hello-world/ directory with HTML/React boilerplate\n- Typography: custom-font.ttf, font-family.woff2\n- Data: sample_data.csv, test_dataset.json\n\n## Common Asset Types\n\n- Templates: .pptx, .docx, boilerplate directories\n- Images: .png, .jpg, .svg, .gif\n- Fonts: .ttf, .otf, .woff, .woff2\n- Boilerplate code: Project directories, starter files\n- Icons: .ico, .svg\n- Data files: .csv, .json, .xml, .yaml\n\nNote: This is a text placeholder. Actual assets can be any file type.\n\nArchive v1.21.0: 23 files, 11957 bytes\n\nFiles: assets/example_asset.txt (864b), references/api_reference.md (966b), references/ib-perspective.md (152b), references/quant.md (150b), references/scoring-elite.md (203b), references/scoring.md (93b), references/strategies.md (154b), scripts/alerts.py (407b), scripts/analyze.py (1739b), scripts/backtest.py (1824b), scripts/batch.py (316b), scripts/collect.py (3125b), scripts/cron.py (300b), scripts/custom.py (465b), scripts/ml.py (286b), scripts/multi_backtest.py (1082b), scripts/portfolio.py (524b), scripts/report.py (1234b), scripts/score.py (1719b), scripts/sector.py (408b), SKILL.md (1179b), test-prompts.json (155b), _meta.json (135b)\n\nFile v1.21.0:SKILL.md\n\n---\\nname: tai-alpha-stock\\ndescription: 🔥 Tai Alpha v1.14 PERFECT 360° stock/crypto analysis. Triggers: \\\"tai-alpha [TICKER]\\\", \\\"batch watchlist/image SOFI AAPL\\\", \\\"portfolio sim top3\\\", \\\"cron S&P hotlist\\\", \\\"custom backtest MACD NVDA\\\", \\\"ml pred SOFI 7d\\\", \\\"sector NVDA SMH\\\". VectorBT multi-strat (RSI/MACD/BB), portfolio sim, cron/alerts, ML pred, sector ETF alpha, FRED macro/IV, risk sizing. Telegram/JSON 2s self-contained uv.\\n---\\n\\n# Tai Alpha v1.14 PERFECT\\n\\nElite beats benchmarks (NVDA STRONG BUY 98/100 CAGR48% Win69%).\\n\\n## Workflow Tree\\n**Single**: `analyze.py NVDA` → 360 score/backtest bullets.\\n**Batch/Image**: `batch.py watchlist.txt/image.jpg` → top3 table + signals.\\n**Portfolio**: `portfolio.py top3` → $10k sim P&L/DD/vol vs SPY.\\n**Cron**: `cron.py S&P` → daily hotlist Telegram.\\n**Alerts**: `alerts.py add SOFI $12 target/stop` → watch.json push.\\n**Custom**: `custom.py RSI low=30 high=70 NVDA` or MACD/BB.\\n**ML**: `ml.py SOFI 7d pred` → return adj score.\\n**Sector**: `sector.py NVDA SMH` → ETF ROE/PE alpha.\\n\\nSee references/strategies.md (rules/params/risk).\\n\\n**Test**: `uv run analyze.py NVDA` (2s JSON/bullets).\\n\n\nFile v1.21.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.21.0\",\n  \"publishedAt\": 1776613033123\n}\n\nFile v1.21.0:references/api_reference.md\n\n# Reference Documentation for Tai Alpha Stock\n\nThis is a placeholder for detailed reference documentation.\nReplace with actual reference content or delete if not needed.\n\nExample real reference docs from other skills:\n- product-management/references/communication.md - Comprehensive guide for status updates\n- product-management/references/context_building.md - Deep-dive on gathering context\n- bigquery/references/ - API references and query examples\n\n## When Reference Docs Are Useful\n\nReference docs are ideal for:\n- Comprehensive API documentation\n- Detailed workflow guides\n- Complex multi-step processes\n- Information too lengthy for main SKILL.md\n- Content that's only needed for specific use cases\n\n## Structure Suggestions\n\n### API Reference Example\n- Overview\n- Authentication\n- Endpoints with examples\n- Error codes\n- Rate limits\n\n### Workflow Guide Example\n- Prerequisites\n- Step-by-step instructions\n- Common patterns\n- Troubleshooting\n- Best practices\n\nFile v1.21.0:references/ib-perspective.md\n\n# IB Perspective\\n- RatingMean<2.5: Strong buy +15pt\\n- Target>Price*1.1: Upside +10pt\\n- Peers: Sector comps (implied)\\n- Consensus: Aggregated banks\\n\n\nFile v1.21.0:references/quant.md\n\n# Quant Metrics\\n- RSI(14): Oversold<30 buy, >70 sell\\n- MACD: Bull cross +8pt\\n- Sharpe>1 +12pt (risk-adj)\\n- Vol trend: High vol breakout +vol adj\\n\n\nFile v1.21.0:references/scoring-elite.md\n\n# Elite Scoring v1.2\\nQuant35%: Sharpe>1.5 +18, MACD bull +10, RSI<35 +8\\nIB25%: Rating<2.2 +20, Target>115% +12\\nFund25%: ROE>20% +15, PE<20 +12\\nSent15%: News pos*4\\nThresholds: STRONG BUY>85, BUY>75\\n\n\nFile v1.21.0:references/scoring.md\n\n# Scoring Matrix\\nFund: PE<15 +20, ROE>15% +15, Debt<50 +10\\nTech: RSI<30 +15, Vol high +10\\n\n\nFile v1.21.0:references/strategies.md\n\n# Strategies & Risk\\n\\n## RSI\\nBuy <35 Sell >75\\n\\n## MACD\\nBuy cross above signal\\n\\n## Risk Sizing\\n>90 full, 75-90 50%, <60 cash\\n\\n## Stop\\nTrail 8%\\n\n\nFile v1.21.0:test-prompts.json\n\n[\"tai-alpha NVDA\", \"batch SOFI AAPL TYL\", \"portfolio top3\", \"cron S&P hotlist\", \"alerts add SOFI $12\", \"custom MACD NVDA\", \"ml SOFI 7d\", \"sector NVDA SMH\"]\n\nFile v1.21.0:assets/example_asset.txt\n\n# Example Asset File\n\nThis placeholder represents where asset files would be stored.\nReplace with actual asset files (templates, images, fonts, etc.) or delete if not needed.\n\nAsset files are NOT intended to be loaded into context, but rather used within\nthe output Codex produces.\n\nExample asset files from other skills:\n- Brand guidelines: logo.png, slides_template.pptx\n- Frontend builder: hello-world/ directory with HTML/React boilerplate\n- Typography: custom-font.ttf, font-family.woff2\n- Data: sample_data.csv, test_dataset.json\n\n## Common Asset Types\n\n- Templates: .pptx, .docx, boilerplate directories\n- Images: .png, .jpg, .svg, .gif\n- Fonts: .ttf, .otf, .woff, .woff2\n- Boilerplate code: Project directories, starter files\n- Icons: .ico, .svg\n- Data files: .csv, .json, .xml, .yaml\n\nNote: This is a text placeholder. Actual assets can be any file type.\n\nArchive v1.20.0: 23 files, 11930 bytes\n\nFiles: assets/example_asset.txt (864b), references/api_reference.md (966b), references/ib-perspective.md (152b), references/quant.md (150b), references/scoring-elite.md (203b), references/scoring.md (93b), references/strategies.md (154b), scripts/alerts.py (416b), scripts/analyze.py (1655b), scripts/backtest.py (1824b), scripts/batch.py (316b), scripts/collect.py (3125b), scripts/cron.py (300b), scripts/custom.py (465b), scripts/ml.py (286b), scripts/multi_backtest.py (1082b), scripts/portfolio.py (524b), scripts/report.py (1234b), scripts/score.py (1719b), scripts/sector.py (408b), SKILL.md (1179b), test-prompts.json (155b), _meta.json (135b)\n\nFile v1.20.0:SKILL.md\n\n---\\nname: tai-alpha-stock\\ndescription: 🔥 Tai Alpha v1.14 PERFECT 360° stock/crypto analysis. Triggers: \\\"tai-alpha [TICKER]\\\", \\\"batch watchlist/image SOFI AAPL\\\", \\\"portfolio sim top3\\\", \\\"cron S&P hotlist\\\", \\\"custom backtest MACD NVDA\\\", \\\"ml pred SOFI 7d\\\", \\\"sector NVDA SMH\\\". VectorBT multi-strat (RSI/MACD/BB), portfolio sim, cron/alerts, ML pred, sector ETF alpha, FRED macro/IV, risk sizing. Telegram/JSON 2s self-contained uv.\\n---\\n\\n# Tai Alpha v1.14 PERFECT\\n\\nElite beats benchmarks (NVDA STRONG BUY 98/100 CAGR48% Win69%).\\n\\n## Workflow Tree\\n**Single**: `analyze.py NVDA` → 360 score/backtest bullets.\\n**Batch/Image**: `batch.py watchlist.txt/image.jpg` → top3 table + signals.\\n**Portfolio**: `portfolio.py top3` → $10k sim P&L/DD/vol vs SPY.\\n**Cron**: `cron.py S&P` → daily hotlist Telegram.\\n**Alerts**: `alerts.py add SOFI $12 target/stop` → watch.json push.\\n**Custom**: `custom.py RSI low=30 high=70 NVDA` or MACD/BB.\\n**ML**: `ml.py SOFI 7d pred` → return adj score.\\n**Sector**: `sector.py NVDA SMH` → ETF ROE/PE alpha.\\n\\nSee references/strategies.md (rules/params/risk).\\n\\n**Test**: `uv run analyze.py NVDA` (2s JSON/bullets).\\n\n\nFile v1.20.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.20.0\",\n  \"publishedAt\": 1776612680955\n}\n\nFile v1.20.0:references/api_reference.md\n\n# Reference Documentation for Tai Alpha Stock\n\nThis is a placeholder for detailed reference documentation.\nReplace with actual reference content or delete if not needed.\n\nExample real reference docs from other skills:\n- product-management/references/communication.md - Comprehensive guide for status updates\n- product-management/references/context_building.md - Deep-dive on gathering context\n- bigquery/references/ - API references and query examples\n\n## When Reference Docs Are Useful\n\nReference docs are ideal for:\n- Comprehensive API documentation\n- Detailed workflow guides\n- Complex multi-step processes\n- Information too lengthy for main SKILL.md\n- Content that's only needed for specific use cases\n\n## Structure Suggestions\n\n### API Reference Example\n- Overview\n- Authentication\n- Endpoints with examples\n- Error codes\n- Rate limits\n\n### Workflow Guide Example\n- Prerequisites\n- Step-by-step instructions\n- Common patterns\n- Troubleshooting\n- Best practices\n\nFile v1.20.0:references/ib-perspective.md\n\n# IB Perspective\\n- RatingMean<2.5: Strong buy +15pt\\n- Target>Price*1.1: Upside +10pt\\n- Peers: Sector comps (implied)\\n- Consensus: Aggregated banks\\n\n\nFile v1.20.0:references/quant.md\n\n# Quant Metrics\\n- RSI(14): Oversold<30 buy, >70 sell\\n- MACD: Bull cross +8pt\\n- Sharpe>1 +12pt (risk-adj)\\n- Vol trend: High vol breakout +vol adj\\n\n\nFile v1.20.0:references/scoring-elite.md\n\n# Elite Scoring v1.2\\nQuant35%: Sharpe>1.5 +18, MACD bull +10, RSI<35 +8\\nIB25%: Rating<2.2 +20, Target>115% +12\\nFund25%: ROE>20% +15, PE<20 +12\\nSent15%: News pos*4\\nThresholds: STRONG BUY>85, BUY>75\\n\n\nFile v1.20.0:references/scoring.md\n\n# Scoring Matrix\\nFund: PE<15 +20, ROE>15% +15, Debt<50 +10\\nTech: RSI<30 +15, Vol high +10\\n\n\nFile v1.20.0:references/strategies.md\n\n# Strategies & Risk\\n\\n## RSI\\nBuy <35 Sell >75\\n\\n## MACD\\nBuy cross above signal\\n\\n## Risk Sizing\\n>90 full, 75-90 50%, <60 cash\\n\\n## Stop\\nTrail 8%\\n\n\nFile v1.20.0:test-prompts.json\n\n[\"tai-alpha NVDA\", \"batch SOFI AAPL TYL\", \"portfolio top3\", \"cron S&P hotlist\", \"alerts add SOFI $12\", \"custom MACD NVDA\", \"ml SOFI 7d\", \"sector NVDA SMH\"]\n\nFile v1.20.0:assets/example_asset.txt\n\n# Example Asset File\n\nThis placeholder represents where asset files would be stored.\nReplace with actual asset files (templates, images, fonts, etc.) or delete if not needed.\n\nAsset files are NOT intended to be loaded into context, but rather used within\nthe output Codex produces.\n\nExample asset files from other skills:\n- Brand guidelines: logo.png, slides_template.pptx\n- Frontend builder: hello-world/ directory with HTML/React boilerplate\n- Typography: custom-font.ttf, font-family.woff2\n- Data: sample_data.csv, test_dataset.json\n\n## Common Asset Types\n\n- Templates: .pptx, .docx, boilerplate directories\n- Images: .png, .jpg, .svg, .gif\n- Fonts: .ttf, .otf, .woff, .woff2\n- Boilerplate code: Project directories, starter files\n- Icons: .ico, .svg\n- Data files: .csv, .json, .xml, .yaml\n\nNote: This is a text placeholder. Actual assets can be any file type.\n\nArchive v1.19.0: 23 files, 12069 bytes\n\nFiles: assets/example_asset.txt (864b), references/api_reference.md (966b), references/ib-perspective.md (152b), references/quant.md (150b), references/scoring-elite.md (203b), references/scoring.md (93b), references/strategies.md (154b), scripts/alerts.py (416b), scripts/analyze.py (1655b), scripts/backtest.py (1824b), scripts/batch.py (699b), scripts/collect.py (3125b), scripts/cron.py (300b), scripts/custom.py (465b), scripts/ml.py (286b), scripts/multi_backtest.py (1082b), scripts/portfolio.py (524b), scripts/report.py (1234b), scripts/score.py (1719b), scripts/sector.py (408b), SKILL.md (1179b), test-prompts.json (155b), _meta.json (135b)\n\nFile v1.19.0:SKILL.md\n\n---\\nname: tai-alpha-stock\\ndescription: 🔥 Tai Alpha v1.14 PERFECT 360° stock/crypto analysis. Triggers: \\\"tai-alpha [TICKER]\\\", \\\"batch watchlist/image SOFI AAPL\\\", \\\"portfolio sim top3\\\", \\\"cron S&P hotlist\\\", \\\"custom backtest MACD NVDA\\\", \\\"ml pred SOFI 7d\\\", \\\"sector NVDA SMH\\\". VectorBT multi-strat (RSI/MACD/BB), portfolio sim, cron/alerts, ML pred, sector ETF alpha, FRED macro/IV, risk sizing. Telegram/JSON 2s self-contained uv.\\n---\\n\\n# Tai Alpha v1.14 PERFECT\\n\\nElite beats benchmarks (NVDA STRONG BUY 98/100 CAGR48% Win69%).\\n\\n## Workflow Tree\\n**Single**: `analyze.py NVDA` → 360 score/backtest bullets.\\n**Batch/Image**: `batch.py watchlist.txt/image.jpg` → top3 table + signals.\\n**Portfolio**: `portfolio.py top3` → $10k sim P&L/DD/vol vs SPY.\\n**Cron**: `cron.py S&P` → daily hotlist Telegram.\\n**Alerts**: `alerts.py add SOFI $12 target/stop` → watch.json push.\\n**Custom**: `custom.py RSI low=30 high=70 NVDA` or MACD/BB.\\n**ML**: `ml.py SOFI 7d pred` → return adj score.\\n**Sector**: `sector.py NVDA SMH` → ETF ROE/PE alpha.\\n\\nSee references/strategies.md (rules/params/risk).\\n\\n**Test**: `uv run analyze.py NVDA` (2s JSON/bullets).\\n\n\nFile v1.19.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.19.0\",\n  \"publishedAt\": 1776612602123\n}\n\nFile v1.19.0:references/api_reference.md\n\n# Reference Documentation for Tai Alpha Stock\n\nThis is a placeholder for detailed reference documentation.\nReplace with actual reference content or delete if not needed.\n\nExample real reference docs from other skills:\n- product-management/references/communication.md - Comprehensive guide for status updates\n- product-management/references/context_building.md - Deep-dive on gathering context\n- bigquery/references/ - API references and query examples\n\n## When Reference Docs Are Useful\n\nReference docs are ideal for:\n- Comprehensive API documentation\n- Detailed workflow guides\n- Complex multi-step processes\n- Information too lengthy for main SKILL.md\n- Content that's only needed for specific use cases\n\n## Structure Suggestions\n\n### API Reference Example\n- Overview\n- Authentication\n- Endpoints with examples\n- Error codes\n- Rate limits\n\n### Workflow Guide Example\n- Prerequisites\n- Step-by-step instructions\n- Common patterns\n- Troubleshooting\n- Best practices\n\nFile v1.19.0:references/ib-perspective.md\n\n# IB Perspective\\n- RatingMean<2.5: Strong buy +15pt\\n- Target>Price*1.1: Upside +10pt\\n- Peers: Sector comps (implied)\\n- Consensus: Aggregated banks\\n\n\nFile v1.19.0:references/quant.md\n\n# Quant Metrics\\n- RSI(14): Oversold<30 buy, >70 sell\\n- MACD: Bull cross +8pt\\n- Sharpe>1 +12pt (risk-adj)\\n- Vol trend: High vol breakout +vol adj\\n\n\nFile v1.19.0:references/scoring-elite.md\n\n# Elite Scoring v1.2\\nQuant35%: Sharpe>1.5 +18, MACD bull +10, RSI<35 +8\\nIB25%: Rating<2.2 +20, Target>115% +12\\nFund25%: ROE>20% +15, PE<20 +12\\nSent15%: News pos*4\\nThresholds: STRONG BUY>85, BUY>75\\n\n\nFile v1.19.0:references/scoring.md\n\n# Scoring Matrix\\nFund: PE<15 +20, ROE>15% +15, Debt<50 +10\\nTech: RSI<30 +15, Vol high +10\\n\n\nFile v1.19.0:references/strategies.md\n\n# Strategies & Risk\\n\\n## RSI\\nBuy <35 Sell >75\\n\\n## MACD\\nBuy cross above signal\\n\\n## Risk Sizing\\n>90 full, 75-90 50%, <60 cash\\n\\n## Stop\\nTrail 8%\\n\n\nFile v1.19.0:test-prompts.json\n\n[\"tai-alpha NVDA\", \"batch SOFI AAPL TYL\", \"portfolio top3\", \"cron S&P hotlist\", \"alerts add SOFI $12\", \"custom MACD NVDA\", \"ml SOFI 7d\", \"sector NVDA SMH\"]\n\nFile v1.19.0:assets/example_asset.txt\n\n# Example Asset File\n\nThis placeholder represents where asset files would be stored.\nReplace with actual asset files (templates, images, fonts, etc.) or delete if not needed.\n\nAsset files are NOT intended to be loaded into context, but rather used within\nthe output Codex produces.\n\nExample asset files from other skills:\n- Brand guidelines: logo.png, slides_template.pptx\n- Frontend builder: hello-world/ directory with HTML/React boilerplate\n- Typography: custom-font.ttf, font-family.woff2\n- Data: sample_data.csv, test_dataset.json\n\n## Common Asset Types\n\n- Templates: .pptx, .docx, boilerplate directories\n- Images: .png, .jpg, .svg, .gif\n- Fonts: .ttf, .otf, .woff, .woff2\n- Boilerplate code: Project directories, starter files\n- Icons: .ico, .svg\n- Data files: .csv, .json, .xml, .yaml\n\nNote: This is a text placeholder. Actual assets can be any file type.\n\nArchive v1.18.0: 24 files, 12355 bytes\n\nFiles: assets/example_asset.txt (864b), pyproject.toml (238b), references/api_reference.md (966b), references/ib-perspective.md (152b), references/quant.md (150b), references/scoring-elite.md (203b), references/scoring.md (93b), references/strategies.md (154b), scripts/alerts.py (416b), scripts/analyze.py (1655b), scripts/backtest.py (1824b), scripts/batch.py (699b), scripts/collect.py (3125b), scripts/cron.py (300b), scripts/custom.py (465b), scripts/ml.py (286b), scripts/multi_backtest.py (1082b), scripts/portfolio.py (524b), scripts/report.py (1234b), scripts/score.py (1719b), scripts/sector.py (408b), SKILL.md (1179b), test-prompts.json (155b), _meta.json (135b)\n\nFile v1.18.0:SKILL.md\n\n---\\nname: tai-alpha-stock\\ndescription: 🔥 Tai Alpha v1.14 PERFECT 360° stock/crypto analysis. Triggers: \\\"tai-alpha [TICKER]\\\", \\\"batch watchlist/image SOFI AAPL\\\", \\\"portfolio sim top3\\\", \\\"cron S&P hotlist\\\", \\\"custom backtest MACD NVDA\\\", \\\"ml pred SOFI 7d\\\", \\\"sector NVDA SMH\\\". VectorBT multi-strat (RSI/MACD/BB), portfolio sim, cron/alerts, ML pred, sector ETF alpha, FRED macro/IV, risk sizing. Telegram/JSON 2s self-contained uv.\\n---\\n\\n# Tai Alpha v1.14 PERFECT\\n\\nElite beats benchmarks (NVDA STRONG BUY 98/100 CAGR48% Win69%).\\n\\n## Workflow Tree\\n**Single**: `analyze.py NVDA` → 360 score/backtest bullets.\\n**Batch/Image**: `batch.py watchlist.txt/image.jpg` → top3 table + signals.\\n**Portfolio**: `portfolio.py top3` → $10k sim P&L/DD/vol vs SPY.\\n**Cron**: `cron.py S&P` → daily hotlist Telegram.\\n**Alerts**: `alerts.py add SOFI $12 target/stop` → watch.json push.\\n**Custom**: `custom.py RSI low=30 high=70 NVDA` or MACD/BB.\\n**ML**: `ml.py SOFI 7d pred` → return adj score.\\n**Sector**: `sector.py NVDA SMH` → ETF ROE/PE alpha.\\n\\nSee references/strategies.md (rules/params/risk).\\n\\n**Test**: `uv run analyze.py NVDA` (2s JSON/bullets).\\n\n\nFile v1.18.0:_meta.json\n\n{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.18.0\",\n  \"publishedAt\": 1776609899583\n}\n\nFile v1.18.0:references/api_reference.md\n\n# Reference Documentation for Tai Alpha Stock\n\nThis is a placeholder for detailed reference documentation.\nReplace with actual reference content or delete if not needed.\n\nExample real reference docs from other skills:\n- product-management/references/communication.md - Comprehensive guide for status updates\n- product-management/references/context_building.md - Deep-dive on gathering context\n- bigquery/references/ - API references and query examples\n\n## When Reference Docs Are Useful\n\nReference docs are ideal for:\n- Comprehensive API documentation\n- Detailed workflow guides\n- Complex multi-step processes\n- Information too lengthy for main SKILL.md\n- Content that's only needed for specific use cases\n\n## Structure Suggestions\n\n### API Reference Example\n- Overview\n- Authentication\n- Endpoints with examples\n- Error codes\n- Rate limits\n\n### Workflow Guide Example\n- Prerequisites\n- Step-by-step instructions\n- Common patterns\n- Troubleshooting\n- Best practices\n\nFile v1.18.0:references/ib-perspective.md\n\n# IB Perspective\\n- RatingMean<2.5: Strong buy +15pt\\n- Target>Price*1.1: Upside +10pt\\n- Peers: Sector comps (implied)\\n- Consensus: Aggregated banks\\n\n\nFile v1.18.0:references/quant.md\n\n# Quant Metrics\\n- RSI(14): Oversold<30 buy, >70 sell\\n- MACD: Bull cross +8pt\\n- Sharpe>1 +12pt (risk-adj)\\n- Vol trend: High vol breakout +vol adj\\n\n\nFile v1.18.0:references/scoring-elite.md\n\n# Elite Scoring v1.2\\nQuant35%: Sharpe>1.5 +18, MACD bull +10, RSI<35 +8\\nIB25%: Rating<2.2 +20, Target>115% +12\\nFund25%: ROE>20% +15, PE<20 +12\\nSent15%: News pos*4\\nThresholds: STRONG BUY>85, BUY>75\\n\n\nFile v1.18.0:references/scoring.md\n\n# Scoring Matrix\\nFund: PE<15 +20, ROE>15% +15, Debt<50 +10\\nTech: RSI<30 +15, Vol high +10\\n\n\nFile v1.18.0:references/strategies.md\n\n# Strategies & Risk\\n\\n## RSI\\nBuy <35 Sell >75\\n\\n## MACD\\nBuy cross above signal\\n\\n## Risk Sizing\\n>90 full, 75-90 50%, <60 cash\\n\\n## Stop\\nTrail 8%\\n\n\nFile v1.18.0:test-prompts.json\n\n[\"tai-alpha NVDA\", \"batch SOFI AAPL TYL\", \"portfolio top3\", \"cron S&P hotlist\", \"alerts add SOFI $12\", \"custom MACD NVDA\", \"ml SOFI 7d\", \"sector NVDA SMH\"]\n\nFile v1.18.0:pyproject.toml\n\n[project]\nname = \"tai-alpha-stock\"\nversion = \"1.18.0\"\ndependencies = [\"yfinance\", \"pandas\", \"numpy\", \"vectorbt\", \"numba\", \"scikit-learn\"]\nrequires-python = \">=3.12\"\n[build-system]\nrequires = [\"hatchling\"]\nbuild-backend = \"hatchling.build\"\n\nFile v1.18.0:assets/example_asset.txt\n\n# Example Asset File\n\nThis placeholder represents where asset files would be stored.\nReplace with actual asset files (templates, images, fonts, etc.) or delete if not needed.\n\nAsset files are NOT intended to be loaded into context, but rather used within\nthe output Codex produces.\n\nExample asset files from other skills:\n- Brand guidelines: logo.png, slides_template.pptx\n- Frontend builder: hello-world/ directory with HTML/React boilerplate\n- Typography: custom-font.ttf, font-family.woff2\n- Data: sample_data.csv, test_dataset.json\n\n## Common Asset Types\n\n- Templates: .pptx, .docx, boilerplate directories\n- Images: .png, .jpg, .svg, .gif\n- Fonts: .ttf, .otf, .woff, .woff2\n- Boilerplate code: Project directories, starter files\n- Icons: .ico, .svg\n- Data files: .csv, .json, .xml, .yaml\n\nNote: This is a text placeholder. Actual assets can be any file type.","readmeExcerpt":"Skill: Tai Alpha Stock Owner: cplog Summary: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha... Tags: backtest:1.31.0, finance:1.31.0, latest:1.33.1 Version history: v1.33.1 | 2026-04-20T14:54:47.373Z | user 1.33.1: publish script timeout patch, docs, .clawdhubignore v1.33.0 | 2026-04-20T14:48:39.131Z | user ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"pip install -e \".[dev]\"\npytest tests/unit tests/integration -v"},{"language":"bash","snippet":"pip install -e \".[dev]\"\npytest tests/unit tests/integration -v\npython setup/tools/check_structure.py"},{"language":"bash","snippet":"cd /path/to/tai-alpha-stock\npython -m venv .venv && source .venv/bin/activate\npip install -e \".[dev]\"\npython scripts/analyze.py AAPL --no-report\n# Default DB: tai_alpha_output/tai_alpha.db (override with TAI_ALPHA_DB_PATH)"},{"language":"bash","snippet":"export TAI_ALPHA_OUTPUT_DIR=/tmp/tai_run\npython scripts/analyze.py MSFT"},{"language":"bash","snippet":"pip install -e \".[dev]\"\npython scripts/analyze.py AAPL --no-report\npytest tests/unit tests/integration -v\npython setup/tools/check_structure.py"},{"language":"bash","snippet":"# Installs CLI + undici into a temp dir (clawdhub 0.3.0 may omit undici; required at runtime)\n# Or: npm i -g clawdhub && npm i -g undici   # if your global clawdhub fails to start\n\nclawdhub login\n# Headless / CI:\n# clawdhub login --no-browser --token 'clh_...'\nclawdhub whoami"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"setup/docs/core/SKILL.md","content":"---\nname: tai-alpha-stock\ndescription: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha.db); override TAI_ALPHA_DB_PATH.\n---\n\n# Tai Alpha Stock\n\nCanonical documentation lives under **`/setup`**. This file mirrors root `SKILL.md`.  \n**Agents:** [AGENTS.md](AGENTS.md) (Cursor, Claude Code, OpenClaw).\n\n## Persistence\n\n- Default: `tai_alpha_output/tai_alpha.db`\n- Override: `TAI_ALPHA_DB_PATH`\n- Schema: [../../sql/schema/tai_alpha_schema_consolidated.sql](../../sql/schema/tai_alpha_schema_consolidated.sql)\n\n## Workflow\n\n- Full analyze: `python scripts/analyze.py TICKER`\n- Flags: `--fast`, `--depth lite|standard|deep`, `--persona`, `--persona-all`, `--market`, `--lang` (see [../../README.md](../../README.md))\n- Report: `python scripts/report.py --run-id <id>`\n- Score: `python scripts/score.py --run-id <id>` (optional `--deep-risk`)\n\nSee [../../USERFLOW.md](../../USERFLOW.md) and [AGENT_GUIDE.md](AGENT_GUIDE.md).\n\n## Related ecosystem\n\n- [openclaw/stock-analysis](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis)\n- [UZI-Skill](https://github.com/wbh604/UZI-Skill)\n\n## Test\n\n```bash\npip install -e \".[dev]\"\npytest tests/unit tests/integration -v\n```"},{"path":"SKILL.md","content":"---\nname: tai-alpha-stock\ndescription: Tai Alpha stock analysis — collect, VectorBT backtest (RSI/MACD/BB), conviction score, optional ML. Persistence is SQLite (default tai_alpha_output/tai_alpha.db); override TAI_ALPHA_DB_PATH.\n---\n\n# Tai Alpha Stock\n\n**Canonical docs:** `/setup` (README, USERFLOW, MODULE_STRUCTURE, guides).  \n**Mirror:** [setup/docs/core/SKILL.md](setup/docs/core/SKILL.md).  \n**Agents (Cursor / Claude Code / OpenClaw):** [setup/docs/core/AGENTS.md](setup/docs/core/AGENTS.md) — root stubs `AGENTS.md`, `CLAUDE.md`.\n\n## Workflow tree\n\n- **Single:** `python scripts/analyze.py TICKER` → pipeline; stores rows in SQLite (`--db-path` optional).\n- **Personas / markets:** `--persona id` / `--persona-all`; `--market auto|us|hk|cn`; `--lang zh-CN|zh-HK` (see [setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md)).\n- **Fast / depth:** `--fast` skips ML and uses lighter collect; `--depth lite|standard|deep` (see [setup/README.md](setup/README.md) matrix).\n- **Batch:** `python scripts/batch.py TICKER1 TICKER2` (optional `--fast`, `--depth`).\n- **Portfolio:** `python scripts/portfolio.py TICKER ...`\n- **Cron:** `python scripts/cron.py` (`TAI_ALPHA_HOTLIST`, optional `TAI_ALPHA_TELEGRAM_WEBHOOK`)\n- **Alerts:** `python scripts/alerts.py` (watchlist in SQLite)\n- **Custom / ML / sector:** `scripts/custom.py`, `scripts/ml.py`, `scripts/sector.py`\n- **Dividends / movers:** `scripts/dividends.py`, `scripts/hot_scanner.py` (see setup README)\n- **Inspect run:** `python scripts/report.py --run-id N` / `python scripts/score.py --run-id N` (`--deep-risk` on score CLI)\n\n## Docs\n\n- [setup/docs/guides/DISCLAIMER_AND_LIMITATIONS.md](setup/docs/guides/DISCLAIMER_AND_LIMITATIONS.md)\n- [setup/docs/guides/STRATEGIES.md](setup/docs/guides/STRATEGIES.md)\n- [setup/docs/database/SQLITE.md](setup/docs/database/SQLITE.md)\n- [setup/docs/core/AGENT_GUIDE.md](setup/docs/core/AGENT_GUIDE.md)\n- [setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](setup/docs/guides/PERSONA_ECOSYSTEM_GUIDE.md)\n- [setup/docs/guides/CHINESE_AUDIENCE_GUIDE.md](setup/docs/guides/CHINESE_AUDIENCE_GUIDE.md)\n\n## Related projects (inspiration)\n\n- [openclaw/stock-analysis skill](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis)\n- [UZI-Skill](https://github.com/wbh604/UZI-Skill)\n\n## Test\n\n```bash\npip install -e \".[dev]\"\npytest tests/unit tests/integration -v\npython setup/tools/check_structure.py\n```"},{"path":"setup/README.md","content":"# Tai Alpha Stock — setup and docs\n\nThis directory is the **single source of truth** for project documentation and SQL (per repository standards). The Python package lives at the repo root in `tai_alpha/`; **SQLite** is the default persistence layer (see `docs/database/SQLITE.md`).\n\n## Quick start\n\n```bash\ncd /path/to/tai-alpha-stock\npython -m venv .venv && source .venv/bin/activate\npip install -e \".[dev]\"\npython scripts/analyze.py AAPL --no-report\n# Default DB: tai_alpha_output/tai_alpha.db (override with TAI_ALPHA_DB_PATH)\n```\n\nOverride output directory (where `tai_alpha.db` is placed by default):\n\n```bash\nexport TAI_ALPHA_OUTPUT_DIR=/tmp/tai_run\npython scripts/analyze.py MSFT\n```\n\n## Feature / flag matrix (CLI)\n\n| Capability | Entry | Notes |\n|------------|-------|--------|\n| Full analyze | `scripts/analyze.py TICKER` | Collect → backtest → score → report |\n| Fast path | `--fast` | Skips ML; lighter collect (no sector ETF peer fetch) |\n| Depth | `--depth lite` / `standard` / `deep` | `lite` = no ML + light collect; `deep` = ML (unless `--fast`) + geopolitical `risk_flags` |\n| Dividends | `scripts/dividends.py TICKER` or `tai-alpha-dividends` | yfinance dividend history; yield proxy |\n| Hot scanner | `scripts/hot_scanner.py` or `tai-alpha-hot-scanner` | Yahoo movers; `--with-crypto` adds CoinGecko trending |\n| Score from DB | `tai-alpha-score --run-id N` | Optional `--deep-risk` for geopolitical keyword tier |\n| Personas | `--persona id1,id2` / `--persona-all` | Overlays on base score; registry in `setup/config/personas/` |\n| Market routing | `--market auto` or `us` / `hk` / `cn` | Normalizes Yahoo/yfinance symbols (HK/CN suffixes) |\n| Chinese report | `--lang zh-CN` / `--lang zh-HK` | Signal translation + short disclaimer |\n| Disclaimer | [docs/guides/DISCLAIMER_AND_LIMITATIONS.md](docs/guides/DISCLAIMER_AND_LIMITATIONS.md) | Not financial advice; data limits |\n\n### Related ecosystem (attribution)\n\n- [openclaw/skills – udiedrichsen/stock-analysis](https://github.com/openclaw/skills/tree/main/skills/udiedrichsen/stock-analysis) — OpenClaw-oriented stock workflows (ideas: `--fast`, dimensions, risk-style checks).\n- [wbh604/UZI-Skill](https://github.com/wbh604/UZI-Skill) — Agent-heavy deep research (depth tiers, calibration discipline); not vendored here.\n\n## Doc index\n\n| Path | Purpose |\n|------|---------|\n| [USERFLOW.md](USERFLOW.md) | User-facing flows and CLI map |\n| [MODULE_STRUCTURE.md](MODULE_STRUCTURE.md) | Modules, scripts, and dependencies |\n| [docs/core/SKILL.md](docs/core/SKILL.md) | Mirror of root `SKILL.md` (agent / marketplace) |\n| [docs/core/AGENTS.md](docs/core/AGENTS.md) | **Multi-tool hub** (Cursor, Claude Code, OpenClaw) |\n| [docs/core/AGENT_GUIDE.md](docs/core/AGENT_GUIDE.md) | Agent orchestration and upstream pointers |\n| [docs/database/SQLITE.md](docs/database/SQLITE.md) | SQLite schema and env vars |\n| [docs/guides/PERSONA_ECOSYSTEM_GUIDE.md](docs/guides/PERSONA_ECOSYSTEM_GUIDE.md) | Persona registry, CLI, ensemble |\n| [do"},{"path":"setup/sql/archive/README.md","content":"# SQL archive\n\nSuperseded migrations and one-off fixes live here for reference only."},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn71wgxhb1t1g0hkpzj9fqcc0s80g3sv\",\n  \"slug\": \"tai-alpha-stock\",\n  \"version\": \"1.33.1\",\n  \"publishedAt\": 1776696887373\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1263,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T19:33:14.930Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T19:33:14.930Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-12T05:31:04.871Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}