Strategy Performance Report
tradesdontlie/tradingview-mcp
Builds a performance report for a backtested Pine Script strategy from TradingView data, covering metrics, trades, the equity curve and improvement ideas.
Answers which trading strategies exist and what state they are in, with per-regime backtest evidence and a freshness report on every row.
$ npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install HKUDS/Vibe-Trading strategy-discovery --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agent/src/skills/strategy-discovery .claude/skills/strategy-discovery && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "strategy-discovery" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/strategy-discovery into .claude/skills/strategy-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "strategy-discovery", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/strategy-discoveryType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install HKUDS/Vibe-Trading strategy-discovery --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .agents/skills && cp -r skills-src/agent/src/skills/strategy-discovery .agents/skills/strategy-discovery && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "strategy-discovery" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/strategy-discovery into .agents/skills/strategy-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "strategy-discovery", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install HKUDS/Vibe-Trading strategy-discovery --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/agent/src/skills/strategy-discovery .cursor/skills/strategy-discovery && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "strategy-discovery" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/strategy-discovery into .cursor/skills/strategy-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "strategy-discovery", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/HKUDS/Vibe-Trading.git --path agent/src/skills/strategy-discovery--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install HKUDS/Vibe-Trading strategy-discovery --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/agent/src/skills/strategy-discovery .gemini/skills/strategy-discovery && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "strategy-discovery" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/strategy-discovery into .gemini/skills/strategy-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "strategy-discovery", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install HKUDS/Vibe-Trading strategy-discoveryInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .github/skills && cp -r skills-src/agent/src/skills/strategy-discovery .github/skills/strategy-discovery && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "strategy-discovery" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/strategy-discovery into .github/skills/strategy-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "strategy-discovery", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install HKUDS/Vibe-Trading strategy-discovery --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/HKUDS/Vibe-Trading.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/agent/src/skills/strategy-discovery .opencode/skills/strategy-discovery && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "strategy-discovery" agent skill from https://github.com/HKUDS/Vibe-Trading/tree/main/agent/src/skills/strategy-discovery into .opencode/skills/strategy-discovery/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "strategy-discovery", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
strategy-discoveryAnswers which trading strategies exist and what state they are in, with per-regime backtest evidence and a freshness report on every row.
This skill is the single lookup point for a strategy library. It fronts the Alpha Zoo registry and the SDM strategy store and answers with computed evidence rather than labels. Instead of yes-or-no scenario tags such as works in bear markets, it returns per-regime evidence rows that have to come from reproducible backtests, and each returned row reports how fresh its evidence is.
Three tools are read-only: `list_strategies` for what exists, `query_strategies` for filtering by regime or a threshold such as a minimum Sharpe ratio, and `get_strategy_evidence` for one strategy's evidence. A fourth, `refresh_strategy_evidence`, rebuilds only the disposable evidence cache from local backtest run artifacts, given a manifest path. Creating, backtesting or registering strategies is out of scope and is routed to `strategy-generate`, `strategy-dev-manager` or `alpha-zoo`.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e532650. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Strategy Discovery loads about 4.8k tokens when it runs. Until then it costs about 82 tokens; SKILL.md has 2,453 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from HKUDS/Vibe-Trading at commit e532650, republished under its MIT licence (© HKUDS). 2,453 words, ~4,830 tokens.
.claude/skills/strategy-discovery/SKILL.md (or your agent's skills folder).Strategy Discovery is the single entry point for two questions: what strategies exist, and what state are they in. It fronts the Alpha Zoo registry and the SDM strategy store with one facade and answers with computed evidence instead of labels, and it reports the freshness of that evidence on every returned row.
It supersedes the earlier closed-registry attempt. That design attached boolean scenario tags (works in bear markets: yes/no) to a curated list. This skill replaces tags with per-regime evidence rows: every claim that a strategy works in a regime must come from a computed, reproducible backtest stored as evidence, never from curation or inference.
The three query tools are read-only: they never register, mutate, or delete strategies. To add or change strategies, use the strategy-dev-manager and alpha-zoo workflows — Strategy Discovery only reports what those workflows have produced. The fourth tool, refresh_strategy_evidence, is the single write in the surface: it rebuilds ONLY the disposable evidence cache from local backtest run artifacts (see Populating & Refreshing Evidence and Composition Guarantee).
Decision tree for routing user requests:
list_strategies(limit=..., offset=..., source=...)query_strategies(regime=..., min_sharpe=..., ...)get_strategy_evidence(strategy_id=..., regime=...)refresh_strategy_evidence(manifest_path=...) — this rebuilds the disposable cache from run artifacts; it is NOT strategy creation or registrationstrategy-generate / strategy-dev-manager / alpha-zooThe access path is the three read tools (list_strategies, query_strategies, get_strategy_evidence) plus one cache-refresh tool (refresh_strategy_evidence), available through the agent registry and the MCP server under the same names. The only CLI surface is vibe-trading strategy-evidence refresh --manifest <path>, which runs the same refresh as the tool; queries stay with the agent tools. Do not invent flags or subcommands beyond that.
Browse the catalogue.
| Parameter | Type | Default | Meaning |
|---|---|---|---|
limit | integer | 20 | Maximum number of rows to return |
offset | integer | 0 | Pagination offset |
source | string | none | Optional filter: alpha_zoo | sdm; omit for both |
Returns identification metadata plus evidence status. This is a catalogue listing, not a ranking — use query_strategies for filtered, evidence-ranked results.
Evidence-gated query.
| Parameter | Type | Default | Meaning |
|---|---|---|---|
regime | string | none | bear_market, bull_market, or structural; omit for all regimes |
min_sharpe | number | none | Minimum Sharpe on the evidence rows |
min_evidence_quality | string | adequate | adequate | marginal | insufficient | any. any only removes the quality floor — rows must still pass the other filters (min_trades, cost_feasible, min_sharpe) to be kept |
min_trades | integer | 10 | Minimum executed-trade count for evidence to count |
cost_feasible | boolean | true | Keep only rows that clear the cost screen. Fail-closed: rows whose breakeven is unverifiable (null, see Multi-position caveat) are excluded; set false to inspect them with their warnings |
include_stale | boolean | false | Keep rows whose evidence is stale (see Decay & Freshness Contract). They are surfaced with their stale-evidence: warnings, sorted after non-stale rows; the flag relaxes the staleness gate only, never any other gate |
limit | integer | 10 | Maximum number of rows to return |
Per-regime evidence detail for one strategy.
| Parameter | Type | Default | Meaning |
|---|---|---|---|
strategy_id | string | — | Required. Identifier from list_strategies / query_strategies |
regime | string | none | Optional regime filter (same values as query_strategies) |
Returns the per-regime evidence rows: trade count, coverage window, Sharpe, cost breakeven, the decay fields, and the resulting evidence-quality flag. This is an inspection surface — it returns ALL rows for the strategy and never filters.
Rebuild the disposable evidence cache from local backtest run artifacts. This is the surface's only write; it touches only the facade-owned cache (see Composition Guarantee).
| Parameter | Type | Default | Meaning |
|---|---|---|---|
manifest_path | string | none | Path to a JSON manifest: an object {"runs": [...]} or a bare JSON array of run specs |
runs | array | none | Inline run specs, same shape as the manifest's runs array |
Exactly one of manifest_path or runs is required — supplying both or neither is an error. Each spec is {strategy_id, run_dir, position_size?}: a non-empty strategy_id (the catalogue identity the evidence belongs to), the run_dir of a reproducible backtest run, and an optional position_size passed through to the harness. Every entry is hard-gated and path-contained (see Populating & Refreshing Evidence); failing entries are skipped with a stable reason — hard-gate:* or path-outside-allowed-roots: — while the rest still process. The envelope reports {status, runs, strategies, rows, skipped}.
Every row is self-describing — the metadata travels with the numbers:
| Field | Meaning |
|---|---|
evidence_stage | Pipeline stage that produced the row: hypothesis | backtest | holdout | shadow | live_canary | retired. The harness writes only backtest today (it computes over backtest artifacts); the other stages are reserved. A row answers "backtest evidence exists; no holdout/shadow/live evidence exists yet" — never more than the stage it carries |
provenance | The reproducible backtest run directory the row was computed from (artifacts/trades.csv + artifacts/equity.csv inside it). The run directory holds the config and signal engine that produced the figures, so every row is traceable to a reproducible artifact |
regime_definition | JSON naming the regime-labeling parameters used (rolling benchmark window, bear/bull thresholds, Sharpe annualization) — the definition travels with the data, not hidden in code constants |
breakeven_fee_bps | Sizing-corrected cost breakeven, or null when the cost screen is unverifiable (see Multi-position caveat) |
decay_status | Freshness verdict computed at read time: fresh | aging | stale (see Decay & Freshness Contract). Never stored — derived from the evidence window on every query |
evidence_age_days | Days since the end of the row's latest evidence window; the number that drives decay_status |
staleness_days | Days since the row's last_verified timestamp. Reported only — never gates anything (see Decay & Freshness Contract) |
warnings | Stable machine-readable prefixes: insufficient-trades:, short-coverage:, cost-sensitive:, borderline-evidence:, multi-position-breakeven:, stale-evidence:, aged-evidence:, sdm-lifecycle: |
Evidence quality is derived from the computed rows, not asserted:
| Condition | Flag | Meaning |
|---|---|---|
| Trade count < 10 | insufficient | Too few trades to say anything; the row carries no claim |
| Coverage < 2 years | marginal | Real but short sample; report with the caveat, not as proof |
| Breakeven < 5 bps | cost_sensitive | Gross edge is thinner than realistic per-trade costs |
| Right at a boundary (e.g. exactly 10 trades) | borderline caveat | Report the raw numbers alongside the flag; the flag alone is not the story |
Rows flagged insufficient or marginal are returned so the caller can see the gap — they are flagged, never recommended. Filtering them out is what min_evidence_quality and min_trades are for.
The feasibility screen uses the sizing-corrected breakeven, in basis points:
breakeven_bps = ln(1 + g) / (2 · n · s) · 10⁴where g is the gross edge over the evidence window, n is the number of trades, and s is the average position sizing. A strategy is cost-feasible only when its breakeven is thick enough (cost_feasible=true keeps the passing rows; a sub-5 bps breakeven reads as cost_sensitive above).
The facade deliberately does not report an estimated_net_sharpe. A net Sharpe requires picking concrete cost assumptions, and any choice there would present an unverified estimate as evidence. The honest number is the breakeven itself — it tells the caller how much per-trade cost the gross edge tolerates, and leaves the cost assumption to them.
breakeven_fee_bps is exact only for strategies holding one position at a time. Per the #969 discussion (sergio12S), the aggregate form has no closed form for multi-sleeve / multi-name strategies — the portfolio break-even equation needs per-sleeve returns and trade counts, which aggregate figures do not contain; measured error is 1.1–6.5x versus per-position accounting, and the error is not a constant factor.
The harness therefore refuses to store an aggregate breakeven: any run that held more than one concurrent position — or whose artifacts make concurrency undetectable — gets breakeven_fee_bps = null on every row, plus a stable multi-position-breakeven: warning. A null is a better answer than a number that is wrong by a factor between 1.1 and 6.5.
Consequences for queries:
cost_feasible=true (default) is fail-closed: a null breakeven means the cost screen is unverifiable, which is not a pass — such rows are excluded from default results.cost_feasible=false or call get_strategy_evidence to see them with their warnings.Every returned row carries a freshness verdict computed from the evidence itself at read time — never from model memory, never persisted. The verdict is freshness-derived, not performance-derived: it measures how old the evidence window is, not how the strategy is performing. Performance decay (degraded results measured on holdout/shadow/live evidence) arrives with holdout/shadow-stage rows — that ladder is reserved, and no such rows exist yet. Until then, the honest signal is window recency.
Vocabulary and thresholds, applied to evidence_age_days (days since the end of the row's latest evidence window):
decay_status | Condition | Meaning |
|---|---|---|
fresh | age < 90 days | Evidence window is current; the row participates in recommendations |
aging | 90 ≤ age < 180 days | Window is older than one re-backtest cycle; the row is still returned and recommendable, with an aged-evidence: warning |
stale | age ≥ 180 days, or window unparseable | The row is excluded from default recommendations; inspectable via include_stale=true or get_strategy_evidence |
The 90/180-day thresholds encode the documented quarterly re-backtest cadence: a window end more than 90 days old means at least one scheduled re-backtest cycle was missed; more than 180 days means at least two. Exact-threshold ages take the stricter side (age >= 180 ⇒ stale, else age >= 90 ⇒ aging, else fresh).
evidence_age_days is the only field that drives the verdict. last_verified and its derived staleness_days are reported on every row but never gate — a refresh over unchanged artifacts bumps last_verified without moving the evidence window, and gating on it would let a no-op refresh keep old evidence "fresh" forever.
Fail-closed: a row whose evidence window cannot be parsed is stale. An unparseable window is never relaxed into a guess.
Stable machine-readable prefixes:
| Prefix | Where it appears | Meaning |
|---|---|---|
stale-evidence: | row warnings | Window end is missing/unparseable or at least 180 days old; the row is excluded from default recommendations |
aged-evidence: | row warnings | Window end is at least 90 days old; the row is returned but flagged for re-backtest |
sdm-lifecycle: | row warnings / lifecycle_note | The sdm:* strategy's artifact is decayed or disabled in the SDM store; excluded from recommendations regardless of freshness |
hard-gate:* | refresh envelope skipped list | The run failed one of the ingestion hard gates and produced no evidence rows (see Populating & Refreshing Evidence) |
include_stale (on query_strategies, default false) controls the staleness gate only: true surfaces staleness-excluded rows with their stale-evidence: warnings, sorted after non-stale rows. It does not relax any other gate, and it never affects lifecycle exclusions. Aging rows are never excluded — they carry aged-evidence: warnings.
SDM lifecycle mirroring: for rows whose strategy_id starts with sdm:, the facade looks up the SDM artifact status. decayed or disabled artifacts are excluded from default recommendations regardless of evidence freshness, with the sdm-lifecycle: prefix, and counted separately in the envelope; they remain inspectable via get_strategy_evidence. A decayed or disabled SDM artifact is never recommended.
The evidence cache is populated and refreshed through refresh_strategy_evidence (agent tool / MCP tool) or the equivalent CLI, vibe-trading strategy-evidence refresh --manifest <path>. There is no auto-discovery of runs — population is manifest-first, because runs carry no stable strategy identity of their own (directory names are timestamp+uuid, and an auto-derived id would orphan its rows on every rerun).
Manifest format — a JSON object with a runs array, or a bare JSON array of the same specs:
{
"runs": [
{"strategy_id": "sdm:my_strategy", "run_dir": "~/.vibe-trading/runs/20260701-123456-abcdef", "position_size": 0.25},
{"strategy_id": "alpha_zoo:gtja191_171", "run_dir": "~/.vibe-trading/runs/20260702-234567-bcdef0"}
]
}Each run_dir must resolve inside the runtime runs root or VIBE_TRADING_ALLOWED_RUN_ROOTS; entries outside are skipped with path-outside-allowed-roots: while the rest still process. Expect manifests in the tens of runs, not thousands — a full rebuild must complete within the tool timeout.
Every run passes five hard gates before it can produce evidence rows — one-to-one with the backtest-diagnose skill's Hard-Gate Checklist, in this order:
success (state.json) → else hard-gate:exit-nonzero (a missing state.json fails onto the same token)artifacts/metrics.csv exists non-empty → else hard-gate:metrics-missingtrade_count > 0 → else hard-gate:zero-tradesartifacts/equity.csv exists non-empty → else hard-gate:equity-emptyhard-gate:equity-nanA run failing any gate produces no evidence rows — never partial rows — and is reported in the envelope's skipped list with its stable token. The rebuild is atomic: either all computed rows replace the cache in one transaction, or the prior cache survives intact.
Periodic recipe (this is what keeps evidence fresh):
evidence_age_days measuresrefresh_strategy_evidence with a manifest naming the new runquery_strategies — the rows now carry the moved windowRefreshing over unchanged artifacts is legal but limited: it re-verifies and bumps last_verified, and can never move the evidence window forward. That is why the recipe starts with a re-backtest, and why last_verified never gates.
Scheduling: the re-backtest + refresh cadence can run through the existing /scheduled-runs mechanism — no new scheduler exists, and its semantics apply. The executor is off by default (VIBE_TRADING_ENABLE_SCHEDULER=1 enables it); a job status of COMPLETED means the run was enqueued, and FAILED jobs are terminal after repeated failures — check job status rather than assuming a cadence is alive.
After an upgrade: the evidence cache is disposable by contract — any cache schema drift drops it, so an upgraded install can start with an empty store. refresh_strategy_evidence is how it is repopulated; an empty result is the expected state until the first refresh (see Honest-Empty Semantics).
The facade refuses regime assessments without computed evidence. If a strategy has no backtest evidence for a regime, get_strategy_evidence returns an honest empty for that regime instead of a guess; query_strategies likewise never fabricates rows to satisfy a filter.
An empty result is an answer, not an error: it means "no computed evidence exists for this request." The population path is refresh_strategy_evidence (agent tool / MCP tool) or vibe-trading strategy-evidence refresh --manifest <path> — point a manifest of healthy backtest runs at the cache and the rows appear (see Populating & Refreshing Evidence). Until a refresh has run, an empty store is the expected state after a fresh install or an upgrade. Never relax a threshold or narrate from a scenario tag instead.
list_strategies, query_strategies, and get_strategy_evidence read the Alpha Zoo Registry, the SDM strategy store, and the facade-owned evidence cache DB — and modify nothing in any of them.refresh_strategy_evidence rebuilds the facade-owned evidence cache DB from local run artifacts, and nothing else. It never writes to the Alpha Zoo registry, the SDM store, or the run artifacts it reads; no network, no credentials, no broker paths.VIBE_TRADING_STRATEGY_DISCOVERY_DB_PATH environment variable; unset means the default location.© HKUDS, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in agent/src/skills/strategy-discovery of HKUDS/Vibe-Trading.
Open the folder on GitHubat commit e532650
Strategy Discovery next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Strategy Discovery this skillHKUDS/Vibe-Trading | 35k | — | ~4.8k | Automated safety check: Pass | MIT | |
| Strategy Performance Reporttradesdontlie/tradingview-mcp | 6.8k | 2 repos | ~591 | Automated safety check: Pass | Custom licence | |
| WorldQuant BRAIN Alpha ResearchQuantML-Research/wq-alpha-research | 405 | — | ~4.9k | Automated safety check: Pass | None | |
| Regimejackson-video-resources/markov-hedge-fund-method | 483 | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| Virtuals Protocol AcpVirtual-Protocol/openclaw-acp | 168 | 1 repos | ~6.4k | Automated safety check: Pass | None | |
| lo2cin4bt Backtesting Assistantlo2cin4/lo2cin4bt | 289 | — | ~2.6k | Automated safety check: Pass | Custom licence |
tradesdontlie/tradingview-mcp
Builds a performance report for a backtested Pine Script strategy from TradingView data, covering metrics, trades, the equity curve and improvement ideas.
QuantML-Research/wq-alpha-research
Chinese-language playbook for WorldQuant BRAIN alphas: choose fields, write expressions, backtest, diagnose check failures, tune turnover, submit and build portfolios.
jackson-video-resources/markov-hedge-fund-method
Detect the market regime (Bull / Bear / Sideways) for ANY asset and turn it into a tradeable signal or a risk filter.
Virtual-Protocol/openclaw-acp
Hire specialised agents to handle any task — data analysis, trading, content generation, research, on-chain operations, 3D printing, physical goods, gift delivery, and more.
lo2cin4/lo2cin4bt
Guides an agent through installing, configuring and running local backtests in the lo2cin4bt repo, then explaining the results and fixing setup problems.
JingHao-Leon/dsh-alpha-desk
Runs an AI investment research desk around the aihf hedge-fund CLI, with research cycles, backtests and iFinD data, under a risk gate and a rule against placing real trades.
HKUDS/Vibe-Trading
Index of Eastmoney's free, no-token market data interfaces for China A-shares and Hong Kong stocks: fund flows, dragon-tiger lists, margin trading, reports and news.
HKUDS/Vibe-Trading
Retrieves public OKX cryptocurrency market data such as spot prices, candlesticks, funding rates and open interest through the OKX V5 REST API, with no authentication.
HKUDS/Vibe-Trading
Fetches U.S. SEC EDGAR data: resolves tickers to CIK numbers, lists recent 10-K, 10-Q and 8-K filings with document URLs, and pulls XBRL financial series.
HKUDS/Vibe-Trading
Predicts whether a mainland China A-share company risks an ST or *ST warning after its next annual report, using financial thresholds and Sina penalty records.
HKUDS/Vibe-Trading
Breaks a structural trend such as AI infrastructure into its physical supply chain and ranks lesser-known listed companies sitting on each bottleneck.
HKUDS/Vibe-Trading
Plans and drafts an eight-part, roughly 120k-word investigative series on one company, built around a strict fact-check pass rather than fast drafting.
Categories
Answers which trading strategies exist and what state they are in, with per-regime backtest evidence and a freshness report on every row. This skill is the single lookup point for a strategy library. It fronts the Alpha Zoo registry and the SDM strategy store and answers with computed evidence rather than labels.
Strategy Discovery fits situations like: listing the strategies available in the library; finding strategies that hold up in a given market regime or above a Sharpe threshold; inspecting the backtest evidence behind one specific strategy; refreshing stale evidence after new local backtest runs.
Run `npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a claude-code`. Or copy the skill folder (agent/src/skills/strategy-discovery in HKUDS/Vibe-Trading) into .claude/skills/strategy-discovery in your project. Claude Code loads it when a task matches its description.
Run `npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a codex`. Or copy the skill folder (agent/src/skills/strategy-discovery in HKUDS/Vibe-Trading) into .agents/skills/strategy-discovery in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add HKUDS/Vibe-Trading --skill strategy-discovery -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/strategy-discovery, .gemini/skills/strategy-discovery, .github/skills/strategy-discovery and .opencode/skills/strategy-discovery in your project.
SKILL.md names no scripts, command-line tools or credentials: Strategy Discovery is instructions for the agent only. Our summary lists: Local backtest run artifacts and a manifest path for refreshing evidence.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Strategy Discovery is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Strategy Discovery: Strategy Performance Report (tradesdontlie/tradingview-mcp, 6.8k stars), WorldQuant BRAIN Alpha Research (QuantML-Research/wq-alpha-research, 405 stars), Regime (jackson-video-resources/markov-hedge-fund-method, 483 stars) and Virtuals Protocol Acp (Virtual-Protocol/openclaw-acp, 168 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
HKUDS (a GitHub organization) maintains it in HKUDS/Vibe-Trading, which has 35,043 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on October 8, 2026.
Source: HKUDS/Vibe-Trading on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.