Factor research
Evaluate whether a cross-sectional factor genuinely predicts returns. Trigger for "这个因子有效吗", "算一下IC", "动量因子在A股还有效吗", "帮我评估这个选股信号", "factor IC", "is this signal predictive", "compare momentum vs value factors", or whenever the user (1) proposes or computes a ranking/score across assets and asks if it works, (2) asks which factor explains recent moves, (3) wants factors screened/ranked before building a strategy, or (4) hands a signal to strategy construction. Fire even for informal phrasing ("这个指标选股靠谱吗"). Do NOT trigger for single-asset technical indicator questions (no cross-section) or for validating a finished strategy's returns (that is backtest-validation).From its SKILL.md
npx -y skills add artherahq/skills --skill factor-researchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 1 command, including `python scripts/factor_evaluate.py --factor factor.csv --returns returns.csv --freq daily --json report.json`.
SKILL.md
3.6 KB, 668 tokens by cl100k_base, as published. Nobody here has run it
Factor Research
A factor is a claim that an ordering of assets today predicts their returns tomorrow. Rankings are cheap — every column of numbers orders a universe. This skill measures whether the ordering carries information, how fast it decays, and whether it survives its own turnover.
Position in the pipeline
point-in-time-research guards the data that builds the factor panel. This
skill judges the panel. Survivors go to backtest-validation, where costs and
selection bias get their turn. A factor evaluated on contaminated data has a
fictional IC — run PIT discipline first if the panel provenance is unclear.
What gets measured (one way, no options)
- Rank IC series — per-period cross-sectional Spearman of factor(t) vs next-period returns. Rank, not Pearson: factors are orderings, and Pearson IC is one outlier away from flattery. Mean IC, IC-IR, t-stat, hit rate.
- Decay — mean IC at 1/5/10/21-period horizons. Fast decay + high turnover = the edge pays the broker.
- Quantile discipline — mean forward return per quintile and the share of ordered adjacent steps. A real factor orders the middle of the book, not just the two extreme buckets.
- Stability — first-half vs second-half IC (a sign flip is fatal) and factor rank autocorrelation (turnover proxy).
Workflow
- Establish the panel: factor values as-of each date (long format date,symbol,value), the return matrix, the frequency, and where the factor values came from. If provenance is unclear, route through point-in-time-research before trusting any IC.
- Run
python scripts/factor_evaluate.py --factor factor.csv --returns returns.csv --freq daily --json report.json(or--demoto show the mechanics). - Report judgement first, then the evidence: IC/IR/t/hit-rate, decay curve,
quantile spread, turnover. Interpretation thresholds live in
references/methodology.md. - Route by verdict:
valid/valid_but_moderate→ hand to backtest-validation (the factor is a hypothesis, not yet a strategy);weak/invalid→ the deliverable is the rejection and which check failed. Do not "fix" a dead factor by trying variants until one passes — that is selection bias, and backtest-validation's DSR will ask how many variants were tried. - When comparing multiple factors, evaluate each on the same universe and window, and report the count of factors examined alongside the winner.
Guardrails
- IC below noise threshold is reported as "no signal", never rounded up to "slightly positive".
- No strategy construction on a
weak/invalidverdict. - Multiple factors tried = trials disclosed downstream to backtest-validation.
- Decay and turnover are always reported together — a horizon-1 edge with churny ranks is flagged, not celebrated.
What ships with it: 5 files
20.2 KB alongside SKILL.md, 2 of them executable
agents/
- openai.yaml248 B
references/
- methodology.md2.3 KB
scripts/
- factor_evaluate.pyruns13.5 KB
- test_factor_evaluate.pyruns3.9 KB
- skill-policy.json286 B