Best for
- User provides a paper or report path → Phase 1: INGEST
- User says "extract factors from this paper" → Phase 2: EXTRACT
- User says "implement and backtest" or "run the backtest" → Phase 3: IMPLEMENT
HKUDS/Vibe-Trading/agent/src/skills/strategy-dev-manager/SKILL.md
Strategy Development Manager: convert academic papers and research reports into validated factors and strategies with automated backtesting, persistent storage, and decay monitoring.
Decision brief
Strategy Development Manager: convert academic papers and research reports into validated factors and strategies with automated backtesting, persistent storage, and decay monitoring.
In this controlled same-task single run, enabling strategy-dev-manager changed the output from 1896 non-whitespace characters and 16 headings to 1947 characters and 17 headings. Matches among 8 signals extracted from the pinned source changed from 0 to 0. Both actual outputs are shown; this is a structural observation, not a quality score or a universal performance claim.
Produce a decision-ready research brief for a small SaaS team evaluating retrieval-augmented generation. State assumptions, evidence needs, tradeoffs, and next actions. The deliverable must specifically reflect this user intent: Strategy Development Manager: convert academic papers and research reports into validated factors and strategies with automated backtesting, persistent storage, and decay monitoring.

Baseline: 1896 non-whitespace characters, 16 headings, and 42 list items.

With Skill: 1947 non-whitespace characters, 17 headings, and 45 list items.
| Observation | Without Skill | With Skill |
|---|---|---|
| Source-signal coverage | 0/8: none | 0/8: none |
| Output structure | 1896 chars · 16 headings · 42 list items · 0 code blocks | 1947 chars · 17 headings · 45 list items · 0 code blocks |
| Verification and caution signals | 7 verification signals · 3 risk/limitation signals | 8 verification signals · 15 risk/limitation signals |
Use the strategy-dev-manager Skill pinned at 7329cb096a73 for my task. Follow its source-specific constraints around `strategy-dev-manager`, `strategy`, `development`, `manager`, then return the finished deliverable with explicit assumptions, verification, failure conditions, and limits. Do not treat the Skill text as a factual source or claim that a single demonstration proves universal performance.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/HKUDS/Vibe-Trading --skill "agent/src/skills/strategy-dev-manager"Inspect the Agent Skill "strategy-dev-manager" from https://github.com/HKUDS/Vibe-Trading/blob/99e84abaad965f75dd15cab2fcb0f3f61d30577b/agent/src/skills/strategy-dev-manager/SKILL.md at commit 99e84abaad965f75dd15cab2fcb0f3f61d30577b. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Parse the source document and classify its content.
Parse the source document and classify its content.
Turn the parsed content into structured artifact definitions.
Build the SignalEngine, run the backtest, and link results.
Judge the backtest output against quality thresholds.
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 93/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 31,651 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | tested outcome page | Tested | Generated or reviewed according to the visible evidence level |
Pinned source
SDM orchestrates the full lifecycle from academic paper or research report to validated factor or strategy. It ingests documents, extracts quantitative signals, implements and backtests them through the existing tool chain, evaluates results against statistical thresholds, and monitors long-term decay. SDM does not reinvent any step. It delegates to the tools already available (read_document, factor_analysis, backtest, alpha_bench, and the hypothesis/autopilot stack) and adds a thin coordination layer with persistent artifact tracking.
Use this skill whenever a user wants to go from "here is a paper" to "I have a working, monitored factor or strategy in the system."
Decision tree for routing user requests:
sdm_status(action="disable", artifact_id=...)sdm_status(action="enable", artifact_id=...)sdm_status(action="list")When the user's intent spans multiple phases (for example "read this paper and build a factor"), run the phases sequentially from INGEST through EVALUATE.
Parse the source document and classify its content.
read_document(paper_path) to extract the full text from the PDF or report.Turn the parsed content into structured artifact definitions.
For factors, extract:
name: short identifier (for example "momentum_12_1")formula_latex: the mathematical formula as written in the papervariables: list of input variables and their meaningscolumns_required: OHLCV columns or fundamental fields neededuniverse: target market (for example "equity_us", "equity_cn")decay_horizon: recommended holding period in trading daysFor strategies, extract:
name: short identifierentry_rules: conditions that trigger a long or short positionexit_rules: conditions that close a positionposition_sizing: how to allocate capital across selected instrumentsrisk_management: stop-loss, max drawdown, exposure limitsuniverse: target marketcolumns_required: data fields neededDeduplication check: call alpha_bench or check sdm_status(action="list") to see if a similar artifact already exists. If the Pearson IC between the new factor and an existing alpha exceeds 0.99, treat it as a duplicate and stop. IC between 0.90 and 0.99 may be a variant worth keeping with a note.
Register the artifact: call sdm_register(artifact_type, name, universe, ...) to persist the extracted definition with status "extracted".
After ingesting a paper via read_document, check the ocr_quality field in the response:
quality_flag == "good": proceed with extractionquality_flag == "degraded": warn user that some pages could not be OCR'd, suggest manual reviewquality_flag == "no_ocr_engine": suggest installing an OCR engine — pip install rapidocr_onnxruntime for local, or set VIBE_TRADING_OCR_ENGINE=llm-vision to use a vision-capable LLM model (GPT-4o, Qwen-VL, etc.) via your existing provider configtext_density < 100: flag as potentially low-quality extraction, suggest verifying formulas manuallyBuild the SignalEngine, run the backtest, and link results.
create_hypothesis(title, thesis, universe, signal_definition) to create a research hypothesis that tracks this work.generate_backtest_config(hypothesis_id, start_date, end_date) to produce the config.json for the backtest runner.scaffold_signal_engine(hypothesis_id, run_dir) to generate the skeleton signal_engine.py in the run directory.signal_engine.py using the appropriate template from templates/:
templates/factor_signal_engine.pytemplates/strategy_signal_engine.pybash("python -c \"import ast; ast.parse(open('code/signal_engine.py').read()); print('OK')\"")backtest(run_dir) to execute the backtest.link_autopilot_backtest(hypothesis_id, run_dir) to link the run results back to the hypothesis.sdm_status(action="detail", artifact_id=...) and update the artifact status to "benching".Judge the backtest output against quality thresholds.
For factors: call factor_analysis with the factor CSV and return CSV. Check:
For strategies: read artifacts/metrics.csv and run_card.json. Check:
If the artifact is alive (meets thresholds):
factors/zoo/ and update status to "active"If the artifact is dead (fails thresholds):
Record bench results via sdm_status update so the history is queryable.
Track artifact health over time and handle decay.
sdm_decay_scan(universe=...) for batch monitoring across all active artifacts in a universe.references/decay_thresholds.md)active → monitoring when any metric enters "Warning"monitoring → decayed when metrics stay in "Decayed" for 3+ consecutive scansdecayed → disabled when metrics enter "Critical"monitoring → active when metrics recover to "Healthy" for 2+ consecutive scans| Tool | Phase | Purpose |
|---|---|---|
read_document | 1 | Parse PDF papers and reports |
sdm_register | 2 | Register extracted factor or strategy |
sdm_status | 2, 3, 4, 5 | Query or update artifact lifecycle status |
alpha_bench | 2 | Deduplication check against existing alphas |
create_hypothesis | 3 | Create a research hypothesis |
generate_backtest_config | 3 | Generate backtest config.json |
scaffold_signal_engine | 3 | Generate SignalEngine skeleton |
backtest | 3 | Execute the backtest |
link_autopilot_backtest | 3 | Link backtest results to hypothesis |
factor_analysis | 4 | IC/IR analysis for factor artifacts |
sdm_decay_scan | 5 | Batch decay monitoring |
The generated signal_engine.py MUST satisfy the backtest runner contract:
class SignalEngine:
def __init__(self):
"""No-arg constructor. All parameters must have defaults."""
...
def generate(self, data_map: dict[str, pd.DataFrame]) -> dict[str, pd.Series]:
"""
Args:
data_map: symbol -> DataFrame (columns: open, high, low, close, volume,
DatetimeIndex). May include extra fields from config.extra_fields
or config.fundamental_fields.
Returns:
symbol -> signal Series (float, clipped to [-1.0, 1.0])
1.0 = fully long, 0.5 = half position, 0.0 = flat, -1.0 = fully short
"""
...
Hard constraints:
SignalEngineif __name__ == "__main__" blockSelf-check before marking any phase complete:
LLMs may generate plausible-looking formulas that do not appear in the paper. ALWAYS cross-check the extracted formula against the original document text. If the paper uses notation you cannot parse, ask the user to confirm.
IC > 0.99 means the factor is a duplicate. IC between 0.90 and 0.99 may be a variant. Use judgment: if the formula is structurally different but produces similar signals, note it as a variant rather than rejecting it outright.
Decay monitoring requires at least 3 bench history entries to establish a baseline. A newly registered artifact with only one backtest cannot be meaningfully scanned for decay.
Strategy-type artifacts need the strategy SignalEngine template (with entry/exit/position logic), not the factor template. Using the wrong template produces a SignalEngine that compiles but generates meaningless signals.
Factor values must use data from day T and earlier. Returns must use data from T+1 onward. The delta(df, d) operator enforces d >= 1 to prevent lookahead. Never use Ref(df, -n) style negative shifts.
Two SignalEngine templates are provided in templates/:
factor_signal_engine.py: for factor-type artifacts. Computes a cross-sectional factor value per instrument per date, then ranks and clips to [-1.0, 1.0].strategy_signal_engine.py: for strategy-type artifacts. Implements entry/exit rules with position sizing and risk management.references/decay_thresholds.mdexamples.mdsrc/factors/base.py (rank, zscore, scale, ts_mean, ts_std, ts_rank, ts_corr, ts_cov, ts_max, ts_min, ts_argmax, ts_argmin, delta, decay_linear, signed_power, safe_div, vwap)Frequently asked questions
Strategy Development Manager: convert academic papers and research reports into validated factors and strategies with automated backtesting, persistent storage, and decay monitoring.
The source record exposes this install command: npx skills add https://github.com/HKUDS/Vibe-Trading --skill "agent/src/skills/strategy-dev-manager". Inspect the command and pinned source before running it.
Alternatives
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
wanshuiyin/Auto-claude-code-research-in-sleep
Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance
brucesongs/kali-claw
Insecure Design (OWASP A06:2025) focuses on security flaws in system architecture and design phases, rather than code implementation-level bugs.