CLAUDE.md — UQO Research WP39
THE INVISIBLE BALANCE SHEET
Can Intraday Financial Markets Detect Corporate Deterioration Before Accounting Disclosures?
Project ID: wp39_uqo · Institution: Université du Québec en Outaouais (UQO) · PI: Simon-Pierre Boucher
Status: research project built 2026-11-02 under the owner's specification (reproduced below in condensed form; the
owner's original brief is the authoritative text). All findings are hypotheses until reproducibly estimated.
Owner instructions added during the build (2026-11-02): (1) the FinData fundamentals API is the accounting source and must be used; (2) minimise AI usage — no LLM features, no neural/text models, no AI-generated statistics.
Non-negotiable execution rules
- FinData OS (
https://findata.spboucher.ai/api/v1) is the primary source of prices, volumes, earnings events and fundamentals. No silent substitution; every exception is documented inDATA_AUDIT.md/docs/API_INTEGRATION.md. - Inspect before changing; preserve all other working papers; this repository is its own git repo.
- Credentials from the protected store only (
~/findata-secrets/api-key-wp39.txton the node); never printed, never in URLs, git, artifacts, notebooks, figures or manuscript. No destructive ingestion, no unapproved backfills. - FirstRate Data is privately licensed: no raw records in git, public endpoints, replication packages or logs.
- Hypotheses, variable definitions, PIT rules, baselines, splits and significance plan are frozen in
docs/RESEARCH_DESIGN.mdanddocs/PIT_PROTOCOL.mdbefore interpreting results. Prediction ≠ causation. - Every claim traces to a saved table/figure/log/test. No fabricated statistics or references.
- Phases with gates;
PROGRESS.md,DECISIONS.md,DATA_AUDIT.md,LIMITATIONS.mdare kept current. - English everywhere; LaTeX article compiled with
latexmk(paper/).
Where things are
| Item | Location |
|---|---|
| Design, PIT rules, novelty | docs/RESEARCH_DESIGN.md, docs/PIT_PROTOCOL.md, docs/NOVELTY_MEMO.md |
| Data audit, limitations, decisions, progress | root *.md files |
| Code | src/wp39/ (client, provenance, calendar, instruments, PIT fundamentals, corporate actions, ingest, features, labels, samples, splits, models, inference, portfolio, robustness, figures, pipeline) |
| Pipeline | scripts/00_…09_ in order; scripts/01a_extract_node_tables.sh runs on M3U96a |
| Tests | tests/ (pytest; live API tests need WP39_LIVE=1) |
| Artifacts | artifacts/manifests (hashes, versions), artifacts/evaluation, artifacts/logs, results/, figures/ |
| Paper | paper/main.tex + sections/ + generated tables/, figures/ |
How to run (compute node M3U96a, API on localhost)
bash
rsync -a --exclude .venv --exclude artifacts/logs ~/Desktop/UQO/Recherche/Recherche-UQO/finance/invisible-balance-sheet/ M3U96a:~/wp39_uqo/
ssh M3U96a 'cd ~/wp39_uqo && uv venv -p 3.12 .venv && uv pip install -e ".[dev]" && export FINDATA_BASE_URL=http://127.0.0.1:8600/api/v1 && \
bash scripts/01a_extract_node_tables.sh && for s in 00 01 02 03 04 05 06 07 08; do .venv/bin/python scripts/${s}_*.py; done'Then rsync results/ figures/ artifacts/ paper/tables paper/figures back and cd paper && make.