Repository navigation
[QC] Substituer EDGAR + inventaire de datasets ouverts pour la jambe backtest Filing-Language-Stability #19457
Description
Activity
- addedquantconnect-researchMoissonnage QC research — distillation intelligenteMoissonnage QC research — distillation intelligente
on Oct 6, 2026 [CLAIMED] lane myia-po-2023:CoursIA — inventaire des datasets ouverts (critère 1) + généralisation du convertisseur d'ingestion QC-custom-data (critère 2). Le critère 3 (backtest sur source substituée) est déjà mesuré : la variante EDGAR libre est livrée et le README porte les trois runs Cloud OOS 2022-2024 (EDGAR top 2 Sharpe 0,151 ; panier égal 0,429 ; SPY 0,193 ; verdict NO BEATS).
Vérification firsthand de l'état à l'ouverture : #15584 (EDGAR-1, MERGED) a livré
edgar_signal.py+main_edgar.py+ tests CPU ;write_cloud_module(edgar_signal.py:642) est l'organe convertisseur — unique dans le dépôt (grep -rln write_cloud_module= 0 autre occurrence hors projet).-- paths: scripts/datasets/, MyIA.AI.Notebooks/QuantConnect/projects/Filing-Language-Stability/
Grain: MED/tooling — lane myia-po-2023:CoursIA — prev: MED/docs #19549
[DELIVERED] critère 2 — convertisseur généralisé : PR #19618.
Ce qui est livré
scripts/datasets/build_qc_custom_data.pylitcsv/tsv/json/jsonlet émet un module.pyconsommable par un projet QC Cloud (constante de données, plus la classePythonDatadérivée sur--class-name). Le formatjsonl/ndjsonn'était lu par aucun script descripts/datasets/avant ce commit : c'est le format nouveau rendu consommable. Le convertisseur EDGAR du projet reste en place et inchangé.Preuve d'exécution (hermétique, 0 réseau) :
python -m pytest scripts/datasets/tests/test_build_qc_custom_data.py -q -> 25 passed python -m pytest scripts/datasets/tests/ -q -> 77 passedLe test décisif exécute réellement la classe
PythonDataémise contre un fauxAlgorithmImports(GetSource rend unSubscriptionDataSourceLocalFile ; Reader rend un objet typé ; ligne incomplète ignorée sans erreur) — l'artefact est consommé, pas seulement écrit.État des trois critères de l'issue
# Critère État 1 Tableau d'inventaire des sources ouvertes (≥ 3) publié sur cette issue en cours — posté dans le commentaire suivant 2 Convertisseur généralisé + ≥ 1 test d'ingestion d'un format nouveau livré — PR #19618 3 Backtest du projet 36331851 sur la source substituée, sélections non nulles + Sharpe/CAGR/MaxDD déjà satisfait avant ce grain — variante EDGAR libre livrée par #15584, trois runs Cloud OOS 2022-2024 (EDGAR top 2 Sharpe 0,151 / 66 ordres ; panier égal 0,429 ; SPY 0,193), verdict NO BEATS, mesuré et documenté dans le README du projet Le critère 3 n'a demandé aucune re-mesure : son verdict est négatif et honnête (« la sélection linguistique EDGAR ne bat pas le panier égal sur ce panier de cinq titres »), et le README borne explicitement la portée (l'univers de 100 titres de l'article n'est pas reproduit).
[INVENTAIRE] critère 1 — datasets ouverts pour une stratégie « stabilité du langage des dépôts »
Lane myia-po-2023:CoursIA. Conformément à l'acceptance (« Sortie = un tableau sur cette issue, pas un fichier dans le dépôt »), le tableau vit ici et n'est committé nulle part.
Colonne « Preuve de licence » : citation verbatim de la source officielle + URL. La colonne « Re-vérifié » distingue ce que j'ai refait moi-même à l'instant (requête directe) de ce qui n'est rapporté que par la citation — aucune ligne ne porte une licence devinée.
# Source URL Licence (nom exact) Format Granularité Coût d'ingestion Preuve de licence (verbatim + URL) Re-vérifié 1 SEC EDGAR — full-text search + Submissions API + index/bulk https://www.sec.gov/edgar/search/ · https://www.sec.gov/os/accessing-edgar-data · https://data.sec.gov/submissions/ Information publique du gouvernement US HTML/TXT des dépôts ; JSON (Submissions API) ; index TXT/XML ; archives dailytar.gzUn document de dépôt (10-K, 10-Q, 8-K, amendements) ; full-text depuis 2001, index depuis 1993 Découverte quasi gratuite ; plafond 10 req/s, User-Agent déclaré obligatoire ; corpus HTML 10-K/10-Q ≈ 100-200 Go + parsing HTML/XBRL https://www.sec.gov/privacy.htm — « Information presented on sec.gov is considered public information » ; https://www.sec.gov/os/accessing-edgar-data — « Current max request rate: 10 requests/second. » OUI (HTTP 200, deux citations reproduites) 2 SEC Financial Statement Data Sets (ZIP trimestriels) https://www.sec.gov/data-research/sec-markets-data/financial-statement-data-sets Information publique du gouvernement US (avec clause de non-garantie d'exactitude) ZIP de TSV en format aplati ( sub.txt,num.txt,pre.txt,tag.txt)Un fait numérique par ligne ; par société et trimestre ; 2009 Q1 → 2026 Q2 (70 trimestres) ≈ 70 ZIP, de ~13 Ko (2009q1) à ~122 Mo (2025q3), ~2-3 Go au total ; TSV direct, aucun parsing Modèle d'URL vérifié : https://www.sec.gov/files/dera/data/financial-statement-data-sets/2026q2.zip— page officielle https://www.sec.gov/data-research/sec-markets-data/financial-statement-data-setsOUI (page 200 ; 2009q1.zip→ HTTP 200,Content-Length: 13540, conforme aux ~13 Ko annoncés)3 SEC Financial Statement and Notes Data Sets (ZIP) https://www.sec.gov/data-research/financial-statement-notes-data-sets Information publique du gouvernement US ZIP de num.tsv+txt.tsv(chiffres et texte des notes)Texte des notes + faits numériques ; mensuel récent, trimestriel au-delà (2009 → 2026) Plus volumineux que #2 (le texte domine) : dizaines de Go sur toute la période ; TSV direct Page officielle — « the data sets are intended to assist the public in analyzing data contained in Commission filings » ; « we cannot guarantee the accuracy of the data sets » OUI (page 200) 4 Kaggle — SEC EDGAR Filings Index ( wilmerhenao)https://www.kaggle.com/datasets/verracodeguacas/sec-edgar-filings-index CC0: Public Domain Parquet ( filing_index,company_filing_edges, manifest)Une ligne par dépôt (CIK, nom, type de formulaire, date, accession number, URL SEC) ; rafraîchi régulièrement ~45 Mo, parquet prêt à joindre ; index seul — le texte reste à récupérer via les URL fournies API Kaggle : licenseName= « CC0: Public Domain »,ownerName= « Wilmer E. Henao » — https://www.kaggle.com/api/v1/datasets/view/verracodeguacas/sec-edgar-filings-indexOUI (champ licenseNamelu dans l'API)5 Kaggle — SEC 10-K/10-Q Risk Factors & MD&A Text ( cybermaxtools)https://www.kaggle.com/datasets/cybermaxtools/riskroll-sec-10k-10q-sections (miroir HF : CyberMax-tools/riskroll-sec-10k-10q-sections)CC0: Public Domain Parquet ( sections-YYYY-MM,filings-YYYY-MM)Une ligne par section extraite : Risk Factors (Item 1A), MD&A, Market Risk, Business, Cyber 1C ; snapshot mensuel ~38 Mo ; texte déjà extrait et nettoyé (~20,4 M de mots sur le snapshot) API Kaggle : licenseName= « CC0: Public Domain » — https://www.kaggle.com/api/v1/datasets/view/cybermaxtools/riskroll-sec-10k-10q-sectionsOUI (champ licenseName)6 Kaggle — Financial Statement Extracts (compte officiel SEC) https://www.kaggle.com/datasets/securities-exchange-commission/financial-statement-extracts CC0: Public Domain JSON dérivé des fichiers DERA ( num.txtetc.)Faits numériques des états financiers ; 2015-2017 seulement (jeu figé) 3,7 Go ; direct API Kaggle — licenseName= « CC0: Public Domain »,ownerName= « Securities and Exchange Commission »RAPPORTÉ (cité, non refait) 7 EDGAR-CORPUS ( eloukas, Hugging Face)https://huggingface.co/datasets/eloukas/edgar-corpus (+ outil https://github.com/nlpaueb/edgar-crawler) Apache-2.0 Chargeable via datasets(JSON)Un 10-K complet, texte conservé (tables retirées) ; 1993-2020 ; ~220 375 documents 40,7 Go direct ; déjà parsé (pas de parsing HTML) API HF : tag license:apache-2.0— https://huggingface.co/api/datasets/eloukas/edgar-corpusOUI (tag de licence lu dans l'API) 8 Alpha Vantage (benchmark marché, palier gratuit) https://www.alphavantage.co/ EULA Alpha Vantage — personnel, non commercial JSON / CSV (API) Barres OHLCV (daily, intraday, ajustées) + fondamentaux/techniques Requêtes API ; quota gratuit limité par jour (À VÉRIFIER au moment de l'usage, non mesuré ici) https://www.alphavantage.co/terms_of_service/ — « Alpha Vantage grants the right to install, use, access, display and run the software ... for personal, non-commercial use » RAPPORTÉ 9 Stooq (benchmark marché) https://stooq.com/db/ Usage personnel uniquement, usage commercial interdit CSV (ZIP par marché) Barres journalières OHLCV par instrument, plusieurs décennies Téléchargement bulk par marché (quelques centaines de Mo) ; anti-bot à gérer Licence non reproduite par ma requête (page chargée HTTP 200, texte de licence non retrouvé dans le HTML servi) — citation rapportée : « This data is intended solely for personal use. Any commercial use is prohibited. » NON REPRODUIT — à confirmer avant usage 10 Kenneth R. French Data Library (Fama-French, benchmark) https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/data_library.html Copyrighté, aucune licence de réutilisation explicite TXT/CSV zippés Facteurs (3/5 facteurs, momentum) mensuel/hebdo/journalier + portefeuilles de recherche ZIP légers (Mo), parse direct Page — « Copyright Eugene F. Fama and Kenneth R. French » ; aucun texte d'autorisation de redistribution sur la page À VÉRIFIER pour tout usage autre que la recherche Ce que ce tableau dit pour cette stratégie
La jambe de signal a besoin de texte de dépôt, pas de chiffres : ce sont les lignes 1, 5 et 7 qui la servent directement.
- feat: add stiegler or tools #1 (EDGAR) est la source canonique et déjà branchée (
edgar_signal.py) ; son coût est le parsing HTML, pas l'accès. - création du doscier projet #5 est le raccourci le plus efficace : les sections Item 1A déjà extraites — exactement la matière que
edgar_signal.extract_item_1areconstruit à la main — en CC0 ; son snapshot est en revanche court (fenêtre de quelques mois), donc il complète feat: add stiegler or tools #1 plutôt qu'il ne le remplace. - Louise notebook #7 donne le corpus historique déjà parsé (1993-2020) pour un entraînement ou une calibration longue, mais s'arrête en 2020 : incompatible avec une fenêtre OOS 2022-2024 sans feat: add stiegler or tools #1.
Les lignes 2, 3 et 6 alimentent la jambe contrôle (états financiers), pas le signal linguistique. Les lignes 8-10 ne sont que des benchmarks de marché : aucune n'est nécessaire, la stratégie les prend déjà via les données QC, et leur licence est la plus restrictive du lot (non commercial / non explicite).
Sources écartées et pourquoi
- Nasdaq Data Link (ex-Quandl) — licence par jeu de données, page de conditions non rendue ; séries actions gratuites historiques retirées → aucune licence vérifiable.
- FRED (St. Louis Fed) — interdit explicitement de « Store, cache, or archive any portion of the FRED® Services or FRED® Content » : incompatible avec une ingestion archivée.
- Kaggle « BigQuery SEC Filings » — champ licence renvoyé « Unknown » par l'API.
- Finnhub « Reported Financials », SEC-API.io, IEX Cloud — ToS commerciale / API payante / service fermé.
Chaînage avec le convertisseur (critère 2)
Ces sources arrivent en
parquet,json,tsvou JSONL — et une fois téléchargées, PR #19618 les convertit en module.pyconsommable par le projet QC Cloud, sans réécrire un convertisseur par source.- feat: add stiegler or tools #1 (EDGAR) est la source canonique et déjà branchée (
- added a commit that references this issue
on Oct 7, 2026
Part of #15544
Contexte
Décision user du 2026-10-06 (registre d'arbitrage po-2023) sur #15544 : option (c) — renoncer au dataset payant Brain Language Metrics on Company Filings, substituer la source par EDGAR, et élargir l'inventaire de datasets ouverts.
Directive complémentaire du user :
Ce qui est demandé
scripts/datasets/(download_qc_data.py,stitch_crypto.py,build_panier_anti_bias.py) et le patron de custom data class QC (cfMyIA.AI.Notebooks/QuantConnect/Python/QC-Py-03-Data-Management.ipynb,QC-Py-16-Alternative-Data.ipynb) — le grain doit nommer l'organe exact avant de le personnaliser (organ-first).Filing-Language-Stability, porté par feat(qc,#15392): Filing-Language-Stability -- port qc-research #20966 (Lazy Prices long leg) #15421) sur la source substituée — c'est la condition qui transforme une citation d'article en mesure.Critères d'acceptation
Références
Filing-Language-Stability)