Factor validation suite: port cross-sectional IC robustness tests (QuantGPT anti_overfit / adversarial_validator)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Ambito
- data, testing-qa
Direzione di ricerca
Start by reading the statistical-testing skill and the two linked QuantGPT files, quantgpt/anti_overfit.py and quantgpt/adversarial_validator.py, to map the proposed tests and differences. The issue calls for a separate capability for cross-sectional factor panels, with deduplicated tests, translated scoring bands, configurable randomness, and faster permutation loops. Done means defining that capability and covering the listed tests; the issue does not name target files or tests in this repository.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Context
While porting robustness-test ideas from QuantGPT (quantgpt/anti_overfit.py, quantgpt/adversarial_validator.py) into the statistical-testing skill, several tests could not be ported because they fundamentally require cross-sectional factor panel data (trade_date, stock_code, factor_value, daily_ret), not a single strategy return series (date + returns).
This issue tracks the unported remainder as a future factor-validation capability.
Unported tests
| Test | Why it doesn't port | What it needs |
|---|---|---|
IC half-life estimation (fit IC(t) = a·exp(-b·t) across forward periods 1/2/5/10/20/40d; pass: half-life > 5d) |
IC decay across horizons is a cross-sectional construct; no returns-series analog | Factor panel data; scipy.optimize.curve_fit |
Absolute IC thresholds (|IC| ≥ 0.02) |
Factor-magnitude-specific; meaningless for strategy returns | If ever ported, use effect-size-relative criteria instead of absolute thresholds |
| Label permutation / random universe / noise injection on factor values (full-strength versions) | Ported versions (sign-flip, block-bootstrap, parameter-plateau) are weaker analogs | Factor panel data |
Proposed design
- New standalone capability (separate skill or module), NOT folded into
statistical-testing(different data model, different routing intent). - Merge both QuantGPT files but dedupe: label permutation ≈ factor permutation (symmetric for Spearman IC) → ~7 distinct tests: IC stability, regime stress, permutation/placebo, time-shift decay, half-life, random universe, noise injection.
- Fixes needed vs upstream: translate Chinese strings, unify the two scoring bands (通过/基本通过/存疑/高风险 vs 推荐/谨慎/需改进/不推荐), parameterize
RandomState(42), vectorizegroupby().apply()permutation loops (slow on large panels). - Scoring bands (translated): ≥80 PASS / 60–79 CAUTION / 40–59 DOUBTFUL / <40 HIGH-RISK.
Sources
- Lingua principale
- Python
- Stelle
- 28
- Fork
- 17
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di uberdeveloper/fastbt
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
uberdeveloper/fastbt#29 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
uberdeveloper/fastbt#20 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
uberdeveloper/fastbt#31 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
uberdeveloper/fastbt#30 ·
-
bug
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
uberdeveloper/fastbt#28 ·
Tutte le issue di uberdeveloper/fastbt
Issue simili
-
bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
openwisp/openwisp-utils#777 ·
-
Boolean statistics (Covered, Confident, JaccardDistant) aggregate to 1.0 without float weightsAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
google-research/weatherbenchX#310 ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
huggingface/peft#3955 ·
I maintainer di solito rispondono entro 1 giorno
-
author-page correction
Difficoltà 2/5 1-3 ore Idoneità per principianti 60/100
acl-org/acl-anthology#10313 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
AOSSIE-Org/Gitcord-GithubDiscordBot#147 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno