SPB Git

spb/wp39_uqo

Public

WP39 v1.0: full pipeline run (phases 2-7), results, figures, manuscript PDF, referee reports

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Nov 2, 2026) parent 9c1ba37 Browse files

27 changed files +19,992 −0

modified .gitignore +7 −0
@@ -33,3 +33,10 @@ logs/
33 33
34 34 # macOS
35 35 .DS_Store
36 +
37 +# WP39 additions
38 +artifacts/evaluation/preds/
39 +artifacts/models/
40 +artifacts/logs/*.jsonl
41 +artifacts/logs/*.out
42 +*.pyc
modified LIMITATIONS.md +12 −0
@@ -29,3 +29,15 @@
29 29 ## To be completed as results arrive
30 30 - (Phase 3) achieved sample sizes, base rates, coverage gaps by year/size.
31 31 - (Phase 5) which placebo/stress tests failed or were inconclusive.
32 +
33 +## Completed from results (2026-11-02)
34 +- Achieved sample: 3,796 firms, 102,522 firm-quarters (2013–2026); the sample starts in 2013 because eight prior quarters
35 + are needed for the seasonal expectation; 2020 lies in the validation period, so the COVID subgroup is not part of the test.
36 +- The logistic-family confidence interval around the 1-minute increment (±0.0027) is comparable to, not narrower than,
37 + the pre-registered MDE (0.0025); the precise-null claim rests on the boosted family (±0.0006) and on the consistency of
38 + the sign across horizons, targets and subgroups.
39 +- The announcement-window CAR coefficient on the incremental 1-minute component is positive and nominally significant
40 + (t = 2.9); it is one of several H5 tests, has the "wrong" sign for an information story, and is reported, not exploited.
41 +- The placebo differential on shuffled labels is of the same order (−0.0004) as the primary LightGBM differential
42 + (+0.0016), so differences of this size should be read as zero.
43 +- Delisted-firm stress tests and as-originally-reported specifications were not run (data not available from the vendor).
modified PROGRESS.md +46 −0
@@ -20,3 +20,49 @@
20 20 - Owner review pending; nothing in Phases 2–5 depends on test-period data until the Phase 3 gate.
21 21
22 22 ## Phase 2 — Data acquisition and verification — IN PROGRESS
23 +- 2026-11-02 13:31 — `01a_extract_node_tables.sh`: entities 5,451 · earnings_events 364,783 · corporate_actions 249,340 (raw format
24 + `firstrate:stock:<SYM>` / `<SYM>_DIVS`, loader adapted). `00_probe`: health ok, 67 datasets, schema v1 ok, no earnings route.
25 +- 13:33–13:50 — `01_audit_universe`: 5,451 entities → 5,018 with ≥ 8 quarters → **4,568 eligible** (1m coverage ≥ 250 sessions);
26 + CIK matched 5,073, SIC 5,029 (SEC submissions fetched with a 6-thread, 8 req/s limiter after a sequential first attempt
27 + at ~1 req/s was restarted); 2,522 firms have former names (ticker-reuse audit input). `results/universe_audit.json`.
28 +- 13:50–14:01 — `02_build_pit_panel`: first run hit the API rate limit (HTTP 429, 600 req/min) with 6 unthrottled threads →
29 + client now has a process-wide token bucket (`WP39_RATE`, default 6 req/s) and honours `Retry-After`; rerun succeeded:
30 + 13,052,739 facts (all revision 1), **194,817 firm-quarters**, release match ok 172,328 (88.5 %), lag > 30 d 15,242,
31 + no release 6,020, filing before release 1,227; release timing after_close 76,752 / before_open 66,719 / unknown 51,346;
32 + base rates: adverse op-inc 31.2 %, adverse NI 32.7 %, ROA decline 29.4 %, OCF negative 25.9 %, liquidity 47.7 %,
33 + |S| ≥ 0.5 % 61.4 %; S_opinc quartiles −0.87 % / 0.00 % / +0.82 % (heavy tails, winsorised in continuous models).
34 + Design freeze hash written to `artifacts/manifests/design_freeze.json` before any model fit.
35 +- 14:01 — `03_build_features --workers 8` (WP39_RATE=1 per process) running: streaming export → features → windows.
36 +- 14:01–14:59 — `03_build_features`: 4,568/4,568 symbols ok, 0 errors (58 min, 8 workers, ≈1.3 symbols/s); raw exports
37 + deleted after use; `~/wp39-cache/features` 5.1 GB + `windows` 5.9 GB. `04_build_labels` (28 s): event sample
38 + **481,159** observations (3,796 firms, 102,522 firm-quarters; h = 20: 97,788, base rate 30.1 %), calendar sample 258,480
39 + firm-months; cascade in `results/table_sample_cascade_event.csv`. **Phase 2 gate passed**: zero known forward-looking
40 + features (tests + live as-of equivalence), coverage gaps explained (2013 start = 8 prior quarters required).
41 +
42 +## Phase 3 — Descriptives and baselines (2026-11-02 15:00–15:01) — GATE PASSED
43 +- `05_train_baselines` (30 s): B0–B5 logistic (C tuned on validation only), ridge continuous target, firm hold-out,
44 + walk-forward OOF 2016–2026 (86,791 rows per set). Validation log loss h=20: B1 0.5938 → B2 0.5691 → B3 0.5695 /
45 + B4 0.5688 / B5 0.5706. Test set opened only after this gate (results in Phase 4/5).
46 +
47 +## Phase 4 — Advanced models (15:01–15:30) — GATE PASSED
48 +- `06_train_advanced` (29 min): LightGBM, 24-trial equal budget per information set (LB1–LB5, LB5all), secondary targets,
49 + horizon ladder with a fixed configuration, firm hold-out, walk-forward OOF (event + calendar). Validation: LB1 0.5447 →
50 + LB2 0.5214 → LB3 0.5234 / LB4 0.5239 / LB5 0.5245 / all 0.5259.
51 +- `07_evaluate`: first run failed on a dtype mismatch (Int32/Int64 `fold`), fixed, rerun ok. **Test period 2021–2026,
52 + 53,667 obs**: Δ log loss B5−B2 = +0.0013 [−0.0013, +0.0041] (GW p = 0.52); LB5−LB2 = +0.0016 [+0.0010, +0.0023]
53 + (p = 0.0008, a deterioration); LB2−LB1 = −0.0068 [−0.0095, −0.0042]; AUC LB2 0.803, LB5 0.801. H1 and H2 rejected.
54 + H4: no horizon gradient (Spearman −0.5, p = 0.39/0.33). Secondary targets, firm hold-out, continuous target: same null.
55 + MDE (80 % power, 7 validation quarters): 0.0025.
56 +
57 +## Phase 5 — Robustness and interpretation (15:30–15:58)
58 +- `08_run_robustness`: first run stuck 28 min in a row-wise pandas loop (CAR window) → vectorised in Polars, rerun in 25 s.
59 + Placebo (shuffled labels, 3 draws): AUC 0.50, Δ ≈ −0.0004 (noise floor). Subgroups: no gain anywhere; deterioration
60 + smallest for small/illiquid/loss firms. Panel: LFDS_B2 β = −0.0765 (t = −32.2); incremental d_lfds β = −0.0129
61 + (t = −1.76); interactions opposite to H3 (less informative for small and low-leverage firms). H5: CAR on LFDS5 β ≈ 0
62 + (t = 0.01); d_lfds +0.060 (t = 2.9, sign opposite to a deterioration signal); portfolios L/S alpha −0.59 %/mo (t = −1.85)
63 + gross, −0.62 % net for LB5; −0.49 % (t = −1.64) for LB2 → no economic value.
64 +
65 +## Phase 6 — Manuscript (15:58–16:10)
66 +- `09_make_manuscript`: 15 LaTeX tables, 9 figures (validated palette), 206 macros in `paper/results_macros.tex`
67 + (fixes: NaN subgroup in figure, LaTeX escaping of math labels, Unicode in bib). `paper/main.pdf` compiled with
68 + `latexmk` on the laptop: 33 pages, 0 undefined references/citations.
added README.md +163 −0
@@ -0,0 +1,163 @@
1 +<!-- Author: Simon-Pierre Boucher — simon-pierre.boucher@uqo.ca -->
2 +# 🕰️ The Invisible Balance Sheet
3 +
4 +**UQO Working Paper No. 39** — *Can Intraday Financial Markets Detect Corporate Deterioration Before Accounting Disclosures?*
5 +
6 +[![Paper](https://img.shields.io/badge/paper-PDF%20(33%20p.)-b31b1b?logo=latex&logoColor=white)](paper/main.pdf)
7 +[![Python](https://img.shields.io/badge/python-3.12%2B%20·%20uv-3776AB?logo=python&logoColor=white)](pyproject.toml)
8 +[![Data](https://img.shields.io/badge/data-FinData%20OS%20·%206.7%20bn%201--min%20bars%20·%204%2C568%20firms-4051b5)](DATA_AUDIT.md)
9 +[![Reproducible](https://img.shields.io/badge/reproducible-10%20scripts%20·%2029%20tests%20·%20frozen%20design-2e7d32)](docs/REPLICATION.md)
10 +[![Institution](https://img.shields.io/badge/UQO-D%C3%A9pt.%20des%20sciences%20administratives-16365c)](https://uqo.ca)
11 +[![Author](https://img.shields.io/badge/author-Simon--Pierre%20Boucher-16365c)](mailto:simon-pierre.boucher@uqo.ca)
12 +
13 +> **TL;DR** — Do one-minute markets see a firm's forthcoming accounting deterioration before daily markets do? On a
14 +> strictly point-in-time panel of 3,796 U.S. firms and 102,522 firm-quarters (2013–2026) built from 6.7 billion raw
15 +> 1-minute bars and quarterly statements with release dates, we forecast an adverse operating-income surprise 20 trading
16 +> days before the earnings release with nested information sets of equal capacity. Fundamentals do most of the work,
17 +> daily OHLCV adds a clear increment (Δ log loss −0.0068 with boosted trees), and 1-minute families add nothing:
18 +> +0.0013 [−0.0013, +0.0041] (logistic) and +0.0016 [+0.0010, +0.0023] (trees) on an untouched 2021–2026 test period.
19 +> The null holds at five horizons, for five accounting targets, a volatility placebo, unseen firms, every refit year and
20 +> every subgroup; the signal is already in prices at the cutoff and has no factor-adjusted economic value.
21 +> **A precise null**: the minute-by-minute tape adds noise, not foresight — on survivors (see Limitations).
22 +
23 +---
24 +
25 +## 📌 Status
26 +
27 +| Item | Value |
28 +|---|---|
29 +| Version | **1.0 (November 2026)** — built autonomously on 2026-11-02 under the owner's brief (`CLAUDE.md`); phases 0–7 complete |
30 +| SSRN | not yet submitted |
31 +| Journal | target: JAR / JFE / RFS (finance–accounting interface); internal referee reports in `docs/REFEREE_REPORTS.md` list the v1.1 revisions |
32 +| Code & data | reproducible from `scripts/` against FinData OS (private FirstRate Data lakehouse); raw records not redistributed |
33 +
34 +## 🎯 What this paper does
35 +
36 +Anticipation is not the question — prices lead earnings at daily horizons and we reproduce it. The question is the
37 +**marginal information value of sampling frequency**: holding the universe, calendar, cutoff, horizon, feature families
38 +and tuning budget fixed, do 30-minute, 5-minute and 1-minute OHLCV bars add forecasting content about the accounting
39 +outcome beyond point-in-time fundamentals and daily bars? Targets are accounting surprises against a seasonal random
40 +walk with drift (never prices); the reveal date is the earnings press release; the information set at cutoff `c` holds
41 +bars with session ≤ `c` and facts with `available_at ≤ c` only, with twelve leakage guards as unit tests.
42 +
43 +```
44 +S_{i,q} = (X_{i,q} − E_c[X_{i,q}]) / TA_{i,q−1}, D_{i,q} = 1[S_{i,q} ≤ −0.5 %]
45 +E_c[X_q] = X_{q−4} + ¼ Σ_{k=0..3} (X_{q−1−k} − X_{q−5−k}) (quarters available at c only)
46 +```
47 +
48 +## 🏆 Headline results (test period 2021–2026, h = 20, N = 53,667)
49 +
50 +| Object | Estimate |
51 +|---|---|
52 +| Base rate of adverse surprise | 31.5 % |
53 +| Log loss: base rate / fundamentals / + daily (LightGBM) | 0.628 / 0.494 / 0.487 (AUC 0.797 / 0.803) |
54 +| Daily increment LB2 − LB1 | −0.0068 [−0.0095, −0.0042] |
55 +| **1-minute increment** B5 − B2 (logistic) | **+0.0013 [−0.0013, +0.0041]**, GW p = 0.52 |
56 +| **1-minute increment** LB5 − LB2 (LightGBM) | **+0.0016 [+0.0010, +0.0023]** (a deterioration) |
57 +| 30-min / 5-min increments (LightGBM) | +0.0017 / +0.0021 |
58 +| Pre-registered MDE (80 % power) | 0.0025 |
59 +| Horizon gradient (H4) | none (Spearman −0.5, p ≈ 0.35) |
60 +| Panel: surprise on LFDS_B2 / incremental LFDS_B5−B2 | β = −0.0765 (t = −32) / −0.0129 (t = −1.8) |
61 +| Announcement CAR on LFDS_B5 | β ≈ 0 (t = 0.01): signal already in prices |
62 +| L/S decile alpha (FF5+MOM), LB5 scores | −0.59 %/mo (t = −1.85) gross, −0.62 % net of 20 bps |
63 +
64 +## 🗂 Repository layout
65 +
66 +```
67 +invisible-balance-sheet/ # project id wp39_uqo
68 +├── CLAUDE.md · README.md · PROGRESS.md · DECISIONS.md · DATA_AUDIT.md · LIMITATIONS.md
69 +├── configs/ research.yaml (frozen design) · data_contract.yaml · models.yaml
70 +├── docs/ RESEARCH_DESIGN.md · PIT_PROTOCOL.md · NOVELTY_MEMO.md · API_INTEGRATION.md · COMPUTE_BUDGET.md · REPLICATION.md · REFEREE_REPORTS.md
71 +├── literature/ RELATED_WORK_MATRIX.csv · references.bib (94 entries verified on Crossref)
72 +├── src/wp39/ api_client · provenance · calendar · instruments · pit_fundamentals · corporate_actions · ingest · features · labels · samples · splits · models · inference · portfolio · robustness · figures · pipeline
73 +├── scripts/ 00_probe … 09_make_manuscript (+ 01a node extracts)
74 +├── tests/ 29 tests (timestamps/DST, PIT leakage, labels, splits, train-only transforms, corporate actions, ids, reproducibility, API contract incl. live as-of equivalence, features)
75 +├── artifacts/ manifests (hashes, dataset versions, design freeze) · evaluation (csv/json) · logs
76 +├── results/ audits, cascades, metrics, contrasts, regressions
77 +├── paper/ main.tex · sections/ · tables/ (generated) · figures/ (generated) · results_macros.tex (206 macros) · main.pdf
78 +└── data/ README only (no licensed records committed)
79 +```
80 +
81 +## 🚀 Quick start
82 +
83 +```bash
84 +uv venv -p 3.12 .venv && uv pip install -e ".[dev]"
85 +export FINDATA_BASE_URL=http://127.0.0.1:8600/api/v1 WP39_CACHE=~/wp39-cache # on the FinData node
86 +bash scripts/01a_extract_node_tables.sh && for s in 00 01 02 03 04 05 06 07 08 09; do .venv/bin/python scripts/${s}_*.py; done
87 +pytest -q # WP39_LIVE=1 adds the live API tests
88 +cd paper && make # latexmk → main.pdf
89 +```
90 +Measured wall-times (Mac Studio M3 Ultra, 28 cores): universe audit 17 min (SEC), PIT panel 8 min, features 58 min
91 +(8 workers), sample 30 s, baselines 30 s, LightGBM 29 min, evaluation 1 min, robustness 25 s, manuscript 10 s.
92 +
93 +## 🗃 Data
94 +
95 +FinData OS (`findata.spboucher.ai/api/v1`), the owner's private lakehouse of FirstRate Data: raw 1-minute bars
96 +(2000–2026, 16,195 symbols incl. 8,069 delisted), quarterly fundamentals (5,451 entities, 67 metrics, filing dates
97 +2012–2026), 364,783 earnings-release events (node extract), splits/dividends (node extract). Public: SEC
98 +`company_tickers.json` + `submissions` (CIK/SIC), Kenneth French daily factors. Universe cascade: 5,451 → 5,018 (≥ 8
99 +quarters) → 4,568 (1-minute coverage); event sample 481,159 observations after admissibility and exclusions
100 +(`results/table_sample_cascade_event.csv`). Full audit: `DATA_AUDIT.md`.
101 +
102 +## 🔬 Methodology
103 +
104 +1. Clocks and cutoffs (`samples.py`, `calendar.py`): `c = A_q − h`, h ∈ {40, 20, 10, 5, 1}; `c < min(A_q, F_q)`, `c > A_{q−1}`.
105 +2. PIT fundamentals (`pit_fundamentals.py`): local as-of join on `available_at`, verified live against the API.
106 +3. Labels (`labels.py`): seasonal-random-walk-with-drift surprises, primary and secondary targets, symmetric placebo.
107 +4. Features (`features.py`): same 19 families from 1m/5m/30m buckets of the regular session, daily block, split/dividend-adjusted returns.
108 +5. Ladder (`models.py`): B0–B5 logistic (C on validation), LB1–LB5 LightGBM (24-trial equal budget), ridge for the continuous target.
109 +6. Validation (`splits.py`): chronological with purge/embargo, expanding-window annual refits, 20 % firm hold-out.
110 +7. Inference (`inference.py`): block bootstrap by calendar quarter, Giacomini–White, Holm, two-way clustered panels.
111 +8. Robustness and pricing (`robustness.py`, `portfolio.py`): shuffled labels, subgroups, CAR regressions, decile sorts with FF5+MOM and costs.
112 +
113 +## 🖼 Figures & tables inventory
114 +
115 +| Figure | Content |
116 +|---|---|
117 +| `fig01_timeline` | event-time design and no-leakage rule (schematic) |
118 +| `fig02_coverage` | firms and adverse rate by year |
119 +| `fig03_prevalence` | conditional prevalence by size, illiquidity, leverage, release timing |
120 +| `fig04_frequency_gains` | Δ log loss vs B2 for 30m/5m/1m/all, logistic and LightGBM, 95 % block-bootstrap CIs |
121 +| `fig05_reliability` | calibration deciles |
122 +| `fig06_signal_evolution` | AUC and Δ by horizon (H4) |
123 +| `fig07_heterogeneity` | Δ by pre-specified subgroup (H3) |
124 +| `fig08_rolling` | annual refits: AUC and Δ by year |
125 +| `fig09_economic` | decile returns and alphas |
126 +
127 +Tables (`paper/tables/*.tex`): universe and sample cascades, summary statistics, information sets, headline metrics,
128 +paired contrasts, horizon ladder, secondary targets, firm hold-out, panel regressions, subgroups, placebo, continuous
129 +target, economic value, CAR regressions.
130 +
131 +## ⚠️ Limitations
132 +
133 +- Accounting panel conditioned on firms listed in November 2026 (no delisted entities from the vendor): survivorship.
134 +- `available_at = filing_date + 1` is a vendor policy; all facts are revision 1 (current values): PIT proxy, no as-originally-reported history.
135 +- OHLCV bars only: no quotes, trades or order flow; bar statistics are not interpreted as informed trading.
136 +- Logistic-family CI (±0.0027) is comparable to the MDE (0.0025); the precise-null claim rests mainly on the boosted family (±0.0006).
137 +- No neural/text models (owner instruction to minimise AI use). Full list: `LIMITATIONS.md`; planned v1.1 revisions: `docs/REFEREE_REPORTS.md`.
138 +
139 +## 📝 Citation
140 +
141 +```bibtex
142 +@techreport{boucher2026invisible,
143 + author = {Boucher, Simon-Pierre},
144 + title = {The Invisible Balance Sheet: Can Intraday Financial Markets Detect Corporate Deterioration Before Accounting Disclosures?},
145 + institution = {Universit\'e du Qu\'ebec en Outaouais, D\'epartement des sciences administratives},
146 + type = {Working Paper},
147 + number = {39},
148 + year = {2026},
149 + month = {November}
150 +}
151 +```
152 +
153 +## 👤 Author & contact
154 +
155 +**Simon-Pierre Boucher** — Département des sciences administratives, Université du Québec en Outaouais (UQO), Gatineau, QC.
156 +📧 [simon-pierre.boucher@uqo.ca](mailto:simon-pierre.boucher@uqo.ca)
157 +
158 +## 🗒 Notes
159 +
160 +- Built in one autonomous Claude Code session on 2026-11-02 (phases 0–7 of `CLAUDE.md`); gates requiring owner
161 + approval are recorded as self-approved under the autonomous mandate (DECISIONS D-010) and remain open to veto.
162 +- Directory name follows the series convention (`finance/<slug>`); project id and spbgit repository are `wp39_uqo`.
163 +- Data attribution: FirstRate Data via FinData OS (private license; no raw records in this repository).
added artifacts/evaluation/advanced_fit_log.json +1218 −0
@@ -0,0 +1,1218 @@
1 +{
2 + "fits": [
3 + {
4 + "design": "event",
5 + "h": 20,
6 + "importance_gain": {
7 + "f_accruals": 0.0255,
8 + "f_capex_assets": 0.0311,
9 + "f_cash_assets": 0.0402,
10 + "f_current_ratio": 0.0357,
11 + "f_gross_margin": 0.0288,
12 + "f_int_cover": 0.0183,
13 + "f_leverage": 0.0248,
14 + "f_log_assets": 0.0495,
15 + "f_log_mcap": 0.0311,
16 + "f_loss": 0.0007,
17 + "f_net_issuance": 0.0266,
18 + "f_ni_assets": 0.0308,
19 + "f_ocf_assets": 0.0235,
20 + "f_op_margin": 0.0051,
21 + "f_rd_rev": 0.0007,
22 + "f_rev_growth": 0.0332,
23 + "f_roa": 0.0069,
24 + "hist_adverse_rate": 0.0571,
25 + "info_age_td": 0.0257,
26 + "last_surprise": 0.3155,
27 + "mean_surprise4": 0.1891
28 + },
29 + "model": "LB1",
30 + "n_features": 21,
31 + "params": {
32 + "bagging_fraction": 1.0,
33 + "best_iteration": 658,
34 + "feature_fraction": 0.5,
35 + "lambda_l2": 10.0,
36 + "learning_rate": 0.01,
37 + "min_child_samples": 200,
38 + "num_leaves": 63
39 + },
40 + "tag": "chrono",
41 + "target": "y_adverse_opinc",
42 + "trials": 24,
43 + "val_score": 0.5446817024655795
44 + },
45 + {
46 + "design": "event",
47 + "h": 20,
48 + "importance_gain": {
49 + "f_accruals": 0.0214,
50 + "f_capex_assets": 0.0227,
51 + "f_cash_assets": 0.0263,
52 + "f_current_ratio": 0.0178,
53 + "f_gross_margin": 0.0234,
54 + "f_int_cover": 0.0155,
55 + "f_leverage": 0.0188,
56 + "f_log_assets": 0.0248,
57 + "f_log_mcap": 0.0145,
58 + "f_loss": 0.0001,
59 + "f_net_issuance": 0.0189,
60 + "f_ni_assets": 0.0266,
61 + "f_ocf_assets": 0.0175,
62 + "f_op_margin": 0.0049,
63 + "f_rd_rev": 0.0005,
64 + "f_rev_growth": 0.0248,
65 + "f_roa": 0.003,
66 + "hist_adverse_rate": 0.0375,
67 + "info_age_td": 0.0231,
68 + "last_surprise": 0.2557,
69 + "mean_surprise4": 0.1608,
70 + "wd_amihud60": 0.0084,
71 + "wd_bars20": 0.0124,
72 + "wd_intraday20": 0.0101,
73 + "wd_kurt60": 0.0131,
74 + "wd_log_dollar_vol60": 0.0105,
75 + "wd_maxdd60": 0.0345,
76 + "wd_overnight20": 0.0179,
77 + "wd_parkinson20": 0.016,
78 + "wd_ret20": 0.0117,
79 + "wd_ret60": 0.0227,
80 + "wd_skew60": 0.0137,
81 + "wd_vol20": 0.0146,
82 + "wd_vol60": 0.0241,
83 + "wd_volratio20": 0.0132,
84 + "wd_volratio5": 0.016,
85 + "wd_zeroret60": 0.0023
86 + },
87 + "model": "LB2",
88 + "n_features": 37,
89 + "params": {
90 + "bagging_fraction": 0.8,
91 + "best_iteration": 752,
92 + "feature_fraction": 0.9,
93 + "lambda_l2": 10.0,
94 + "learning_rate": 0.01,
95 + "min_child_samples": 100,
96 + "num_leaves": 63
97 + },
98 + "tag": "chrono",
99 + "target": "y_adverse_opinc",
100 + "trials": 24,
101 + "val_score": 0.521392195867179
102 + },
103 + {
104 + "design": "event",
105 + "h": 20,
106 + "importance_gain": {
107 + "f_accruals": 0.0148,
108 + "f_capex_assets": 0.017,
109 + "f_cash_assets": 0.0222,
110 + "f_current_ratio": 0.0127,
111 + "f_gross_margin": 0.0175,
112 + "f_int_cover": 0.0112,
113 + "f_leverage": 0.0122,
114 + "f_log_assets": 0.0191,
115 + "f_log_mcap": 0.0103,
116 + "f_loss": 0.0,
117 + "f_net_issuance": 0.0129,
118 + "f_ni_assets": 0.0239,
119 + "f_ocf_assets": 0.0119,
120 + "f_op_margin": 0.0051,
121 + "f_rd_rev": 0.0001,
122 + "f_rev_growth": 0.0192,
123 + "f_roa": 0.0029,
124 + "hist_adverse_rate": 0.038,
125 + "info_age_td": 0.0194,
126 + "last_surprise": 0.282,
127 + "mean_surprise4": 0.1734,
128 + "w30m_ac1": 0.0089,
129 + "w30m_beta": 0.0114,
130 + "w30m_bpv": 0.0047,
131 + "w30m_down_vol_share": 0.0072,
132 + "w30m_drift": 0.0033,
133 + "w30m_max_share": 0.0057,
134 + "w30m_present_share": 0.0002,
135 + "w30m_rj": 0.0081,
136 + "w30m_rkurt": 0.0055,
137 + "w30m_rskew": 0.0044,
138 + "w30m_rsneg_share": 0.0036,
139 + "w30m_rv": 0.0093,
140 + "w30m_rv_mktdown_share": 0.0084,
141 + "w30m_sjv": 0.0017,
142 + "w30m_vol_first30": 0.0086,
143 + "w30m_vol_gini": 0.0097,
144 + "w30m_vol_last30": 0.0037,
145 + "w30m_volofvol": 0.0102,
146 + "w30m_vratio": 0.0087,
147 + "wd_amihud60": 0.0045,
148 + "wd_bars20": 0.0072,
149 + "wd_intraday20": 0.003,
150 + "wd_kurt60": 0.0079,
151 + "wd_log_dollar_vol60": 0.0048,
152 + "wd_maxdd60": 0.031,
153 + "wd_overnight20": 0.0107,
154 + "wd_parkinson20": 0.0065,
155 + "wd_ret20": 0.0061,
156 + "wd_ret60": 0.0179,
157 + "wd_skew60": 0.0078,
158 + "wd_vol20": 0.0082,
159 + "wd_vol60": 0.0167,
160 + "wd_volratio20": 0.0077,
161 + "wd_volratio5": 0.0094,
162 + "wd_zeroret60": 0.0012
163 + },
164 + "model": "LB3",
165 + "n_features": 56,
166 + "params": {
167 + "bagging_fraction": 1.0,
168 + "best_iteration": 676,
169 + "feature_fraction": 0.9,
170 + "lambda_l2": 10.0,
171 + "learning_rate": 0.01,
172 + "min_child_samples": 100,
173 + "num_leaves": 63
174 + },
175 + "tag": "chrono",
176 + "target": "y_adverse_opinc",
177 + "trials": 24,
178 + "val_score": 0.5234194050086942
179 + },
180 + {
181 + "design": "event",
182 + "h": 20,
183 + "importance_gain": {
184 + "f_accruals": 0.015,
185 + "f_capex_assets": 0.0178,
186 + "f_cash_assets": 0.0218,
187 + "f_current_ratio": 0.0138,
188 + "f_gross_margin": 0.0176,
189 + "f_int_cover": 0.0112,
190 + "f_leverage": 0.014,
191 + "f_log_assets": 0.0202,
192 + "f_log_mcap": 0.0096,
193 + "f_loss": 0.0001,
194 + "f_net_issuance": 0.014,
195 + "f_ni_assets": 0.0234,
196 + "f_ocf_assets": 0.0131,
197 + "f_op_margin": 0.0044,
198 + "f_rd_rev": 0.0002,
199 + "f_rev_growth": 0.0204,
200 + "f_roa": 0.0027,
201 + "hist_adverse_rate": 0.0345,
202 + "info_age_td": 0.019,
203 + "last_surprise": 0.2544,
204 + "mean_surprise4": 0.1575,
205 + "w5m_ac1": 0.0082,
206 + "w5m_beta": 0.0139,
207 + "w5m_bpv": 0.0068,
208 + "w5m_down_vol_share": 0.008,
209 + "w5m_drift": 0.004,
210 + "w5m_max_share": 0.0084,
211 + "w5m_present_share": 0.0038,
212 + "w5m_rj": 0.0108,
213 + "w5m_rkurt": 0.0095,
214 + "w5m_rskew": 0.0075,
215 + "w5m_rsneg_share": 0.0051,
216 + "w5m_rv": 0.005,
217 + "w5m_rv_mktdown_share": 0.0103,
218 + "w5m_sjv": 0.0021,
219 + "w5m_vol_first30": 0.009,
220 + "w5m_vol_gini": 0.0086,
221 + "w5m_vol_last30": 0.012,
222 + "w5m_volofvol": 0.0087,
223 + "w5m_vratio": 0.0099,
224 + "wd_amihud60": 0.0056,
225 + "wd_bars20": 0.0067,
226 + "wd_intraday20": 0.0043,
227 + "wd_kurt60": 0.0097,
228 + "wd_log_dollar_vol60": 0.0053,
229 + "wd_maxdd60": 0.0309,
230 + "wd_overnight20": 0.0127,
231 + "wd_parkinson20": 0.0067,
232 + "wd_ret20": 0.0076,
233 + "wd_ret60": 0.0183,
234 + "wd_skew60": 0.0092,
235 + "wd_vol20": 0.0089,
236 + "wd_vol60": 0.0176,
237 + "wd_volratio20": 0.009,
238 + "wd_volratio5": 0.0103,
239 + "wd_zeroret60": 0.0011
240 + },
241 + "model": "LB4",
242 + "n_features": 56,
243 + "params": {
244 + "bagging_fraction": 1.0,
245 + "best_iteration": 915,
246 + "feature_fraction": 0.9,
247 + "lambda_l2": 10.0,
248 + "learning_rate": 0.01,
249 + "min_child_samples": 100,
250 + "num_leaves": 63
251 + },
252 + "tag": "chrono",
253 + "target": "y_adverse_opinc",
254 + "trials": 24,
255 + "val_score": 0.5238692601234577
256 + },
257 + {
258 + "design": "event",
259 + "h": 20,
260 + "importance_gain": {
261 + "f_accruals": 0.0144,
262 + "f_capex_assets": 0.0181,
263 + "f_cash_assets": 0.0222,
264 + "f_current_ratio": 0.012,
265 + "f_gross_margin": 0.016,
266 + "f_int_cover": 0.0105,
267 + "f_leverage": 0.0137,
268 + "f_log_assets": 0.0206,
269 + "f_log_mcap": 0.0087,
270 + "f_loss": 0.0001,
271 + "f_net_issuance": 0.0131,
272 + "f_ni_assets": 0.0227,
273 + "f_ocf_assets": 0.0118,
274 + "f_op_margin": 0.0045,
275 + "f_rd_rev": 0.0002,
276 + "f_rev_growth": 0.0187,
277 + "f_roa": 0.0022,
278 + "hist_adverse_rate": 0.0382,
279 + "info_age_td": 0.0189,
280 + "last_surprise": 0.2797,
281 + "mean_surprise4": 0.1727,
282 + "w1m_ac1": 0.0058,
283 + "w1m_beta": 0.0109,
284 + "w1m_bpv": 0.0038,
285 + "w1m_down_vol_share": 0.0083,
286 + "w1m_drift": 0.0034,
287 + "w1m_max_share": 0.0075,
288 + "w1m_present_share": 0.0045,
289 + "w1m_rj": 0.0089,
290 + "w1m_rkurt": 0.0095,
291 + "w1m_rskew": 0.0066,
292 + "w1m_rsneg_share": 0.0048,
293 + "w1m_rv": 0.0043,
294 + "w1m_rv_mktdown_share": 0.0065,
295 + "w1m_sjv": 0.0019,
296 + "w1m_vol_first30": 0.008,
297 + "w1m_vol_gini": 0.0091,
298 + "w1m_vol_last30": 0.0106,
299 + "w1m_volofvol": 0.007,
300 + "w1m_vratio": 0.0076,
301 + "wd_amihud60": 0.0043,
302 + "wd_bars20": 0.0042,
303 + "wd_intraday20": 0.0036,
304 + "wd_kurt60": 0.0077,
305 + "wd_log_dollar_vol60": 0.0043,
306 + "wd_maxdd60": 0.0318,
307 + "wd_overnight20": 0.0119,
308 + "wd_parkinson20": 0.0072,
309 + "wd_ret20": 0.0066,
310 + "wd_ret60": 0.0175,
311 + "wd_skew60": 0.0082,
312 + "wd_vol20": 0.0086,
313 + "wd_vol60": 0.0184,
314 + "wd_volratio20": 0.0077,
315 + "wd_volratio5": 0.0097,
316 + "wd_zeroret60": 0.0006
317 + },
318 + "model": "LB5",
319 + "n_features": 56,
320 + "params": {
321 + "bagging_fraction": 1.0,
322 + "best_iteration": 682,
323 + "feature_fraction": 0.9,
324 + "lambda_l2": 10.0,
325 + "learning_rate": 0.01,
326 + "min_child_samples": 100,
327 + "num_leaves": 63
328 + },
329 + "tag": "chrono",
330 + "target": "y_adverse_opinc",
331 + "trials": 24,
332 + "val_score": 0.5244906882234781
333 + },
334 + {
335 + "design": "event",
336 + "h": 20,
337 + "importance_gain": {
338 + "f_accruals": 0.0118,
339 + "f_capex_assets": 0.0133,
340 + "f_cash_assets": 0.0198,
341 + "f_current_ratio": 0.0103,
342 + "f_gross_margin": 0.0144,
343 + "f_int_cover": 0.0086,
344 + "f_leverage": 0.0105,
345 + "f_log_assets": 0.0175,
346 + "f_log_mcap": 0.0076,
347 + "f_loss": 0.0,
348 + "f_net_issuance": 0.0094,
349 + "f_ni_assets": 0.021,
350 + "f_ocf_assets": 0.0097,
351 + "f_op_margin": 0.0045,
352 + "f_rd_rev": 0.0001,
353 + "f_rev_growth": 0.0159,
354 + "f_roa": 0.0021,
355 + "hist_adverse_rate": 0.0378,
356 + "info_age_td": 0.0167,
357 + "last_surprise": 0.2697,
358 + "mean_surprise4": 0.1701,
359 + "w1m_ac1": 0.0039,
360 + "w1m_beta": 0.0049,
361 + "w1m_bpv": 0.0016,
362 + "w1m_down_vol_share": 0.0054,
363 + "w1m_drift": 0.0,
364 + "w1m_max_share": 0.0045,
365 + "w1m_present_share": 0.0019,
366 + "w1m_rj": 0.0071,
367 + "w1m_rkurt": 0.0069,
368 + "w1m_rskew": 0.0048,
369 + "w1m_rsneg_share": 0.0031,
370 + "w1m_rv": 0.0019,
371 + "w1m_rv_mktdown_share": 0.004,
372 + "w1m_sjv": 0.0012,
373 + "w1m_vol_first30": 0.0,
374 + "w1m_vol_gini": 0.0056,
375 + "w1m_vol_last30": 0.0051,
376 + "w1m_volofvol": 0.0024,
377 + "w1m_vratio": 0.0043,
378 + "w30m_ac1": 0.0063,
379 + "w30m_beta": 0.0072,
380 + "w30m_bpv": 0.0028,
381 + "w30m_down_vol_share": 0.0051,
382 + "w30m_drift": 0.0019,
383 + "w30m_max_share": 0.0037,
384 + "w30m_present_share": 0.0001,
385 + "w30m_rj": 0.0066,
386 + "w30m_rkurt": 0.0036,
387 + "w30m_rskew": 0.0023,
388 + "w30m_rsneg_share": 0.0022,
389 + "w30m_rv": 0.0047,
390 + "w30m_rv_mktdown_share": 0.0066,
391 + "w30m_sjv": 0.0009,
392 + "w30m_vol_first30": 0.005,
393 + "w30m_vol_gini": 0.0054,
394 + "w30m_vol_last30": 0.0021,
395 + "w30m_volofvol": 0.0068,
396 + "w30m_vratio": 0.0054,
397 + "w5m_ac1": 0.0043,
398 + "w5m_beta": 0.006,
399 + "w5m_bpv": 0.0024,
400 + "w5m_down_vol_share": 0.0031,
401 + "w5m_drift": 0.0001,
402 + "w5m_max_share": 0.0057,
403 + "w5m_present_share": 0.0015,
404 + "w5m_rj": 0.0069,
405 + "w5m_rkurt": 0.0058,
406 + "w5m_rskew": 0.0034,
407 + "w5m_rsneg_share": 0.0022,
408 + "w5m_rv": 0.0015,
409 + "w5m_rv_mktdown_share": 0.0049,
410 + "w5m_sjv": 0.0009,
411 + "w5m_vol_first30": 0.0006,
412 + "w5m_vol_gini": 0.0037,
413 + "w5m_vol_last30": 0.0047,
414 + "w5m_volofvol": 0.0051,
415 + "w5m_vratio": 0.0036,
416 + "wd_amihud60": 0.0026,
417 + "wd_bars20": 0.0022,
418 + "wd_intraday20": 0.0017,
419 + "wd_kurt60": 0.0057,
420 + "wd_log_dollar_vol60": 0.0025,
421 + "wd_maxdd60": 0.0292,
422 + "wd_overnight20": 0.0092,
423 + "wd_parkinson20": 0.0033,
424 + "wd_ret20": 0.0043,
425 + "wd_ret60": 0.0163,
426 + "wd_skew60": 0.0064,
427 + "wd_vol20": 0.0052,
428 + "wd_vol60": 0.0147,
429 + "wd_volratio20": 0.0052,
430 + "wd_volratio5": 0.0065,
431 + "wd_zeroret60": 0.0005
432 + },
433 + "model": "LB5all",
434 + "n_features": 94,
435 + "params": {
436 + "bagging_fraction": 1.0,
437 + "best_iteration": 635,
438 + "feature_fraction": 0.9,
439 + "lambda_l2": 10.0,
440 + "learning_rate": 0.01,
441 + "min_child_samples": 100,
442 + "num_leaves": 63
443 + },
444 + "tag": "chrono",
445 + "target": "y_adverse_opinc",
446 + "trials": 24,
447 + "val_score": 0.5259176970288985
448 + },
449 + {
450 + "design": "event",
451 + "h": 20,
452 + "importance_gain": {
453 + "f_accruals": 0.0329,
454 + "f_capex_assets": 0.0197,
455 + "f_cash_assets": 0.0288,
456 + "f_current_ratio": 0.0105,
457 + "f_gross_margin": 0.0379,
458 + "f_int_cover": 0.0178,
459 + "f_leverage": 0.0215,
460 + "f_log_assets": 0.0196,
461 + "f_log_mcap": 0.0176,
462 + "f_loss": 0.0,
463 + "f_net_issuance": 0.0132,
464 + "f_ni_assets": 0.0659,
465 + "f_ocf_assets": 0.0146,
466 + "f_op_margin": 0.0018,
467 + "f_rd_rev": 0.0016,
468 + "f_rev_growth": 0.0184,
469 + "f_roa": 0.0176,
470 + "hist_adverse_rate": 0.0507,
471 + "info_age_td": 0.0285,
472 + "last_surprise": 0.2513,
473 + "mean_surprise4": 0.1492,
474 + "wd_amihud60": 0.0026,
475 + "wd_bars20": 0.0106,
476 + "wd_intraday20": 0.0045,
477 + "wd_kurt60": 0.0042,
478 + "wd_log_dollar_vol60": 0.0064,
479 + "wd_maxdd60": 0.0326,
480 + "wd_overnight20": 0.0094,
481 + "wd_parkinson20": 0.025,
482 + "wd_ret20": 0.0073,
483 + "wd_ret60": 0.0172,
484 + "wd_skew60": 0.0061,
485 + "wd_vol20": 0.0102,
486 + "wd_vol60": 0.0333,
487 + "wd_volratio20": 0.0051,
488 + "wd_volratio5": 0.0052,
489 + "wd_zeroret60": 0.0014
490 + },
491 + "model": "LB2",
492 + "n_features": 37,
493 + "params": {
494 + "bagging_fraction": 1.0,
495 + "best_iteration": 394,
496 + "feature_fraction": 0.7,
497 + "lambda_l2": 1.0,
498 + "learning_rate": 0.03,
499 + "min_child_samples": 100,
500 + "num_leaves": 15
501 + },
502 + "tag": "chrono",
503 + "target": "y_adverse_netinc",
504 + "trials": 24,
505 + "val_score": 0.5989400056550856
506 + },
507 + {
508 + "design": "event",
509 + "h": 20,
510 + "importance_gain": {
511 + "f_accruals": 0.0284,
512 + "f_capex_assets": 0.0169,
513 + "f_cash_assets": 0.0263,
514 + "f_current_ratio": 0.0084,
515 + "f_gross_margin": 0.0304,
516 + "f_int_cover": 0.0153,
517 + "f_leverage": 0.0177,
518 + "f_log_assets": 0.0176,
519 + "f_log_mcap": 0.0139,
520 + "f_loss": 0.0,
521 + "f_net_issuance": 0.012,
522 + "f_ni_assets": 0.0592,
523 + "f_ocf_assets": 0.0125,
524 + "f_op_margin": 0.0008,
525 + "f_rd_rev": 0.001,
526 + "f_rev_growth": 0.0172,
527 + "f_roa": 0.0173,
528 + "hist_adverse_rate": 0.0408,
529 + "info_age_td": 0.0253,
530 + "last_surprise": 0.2636,
531 + "mean_surprise4": 0.15,
532 + "w1m_ac1": 0.0033,
533 + "w1m_beta": 0.0052,
534 + "w1m_bpv": 0.0041,
535 + "w1m_down_vol_share": 0.0045,
536 + "w1m_drift": 0.0028,
537 + "w1m_max_share": 0.0033,
538 + "w1m_present_share": 0.006,
539 + "w1m_rj": 0.011,
540 + "w1m_rkurt": 0.0045,
541 + "w1m_rskew": 0.0045,
542 + "w1m_rsneg_share": 0.0021,
543 + "w1m_rv": 0.0049,
544 + "w1m_rv_mktdown_share": 0.0037,
545 + "w1m_sjv": 0.0015,
546 + "w1m_vol_first30": 0.0061,
547 + "w1m_vol_gini": 0.0067,
548 + "w1m_vol_last30": 0.0079,
549 + "w1m_volofvol": 0.0078,
550 + "w1m_vratio": 0.0043,
551 + "wd_amihud60": 0.0023,
552 + "wd_bars20": 0.0031,
553 + "wd_intraday20": 0.0029,
554 + "wd_kurt60": 0.0029,
555 + "wd_log_dollar_vol60": 0.0042,
556 + "wd_maxdd60": 0.0343,
557 + "wd_overnight20": 0.0067,
558 + "wd_parkinson20": 0.0174,
559 + "wd_ret20": 0.0058,
560 + "wd_ret60": 0.0157,
561 + "wd_skew60": 0.005,
562 + "wd_vol20": 0.0056,
563 + "wd_vol60": 0.0191,
564 + "wd_volratio20": 0.0032,
565 + "wd_volratio5": 0.0024,
566 + "wd_zeroret60": 0.0009
567 + },
568 + "model": "LB5",
569 + "n_features": 56,
570 + "params": {
571 + "bagging_fraction": 1.0,
572 + "best_iteration": 374,
573 + "feature_fraction": 0.7,
574 + "lambda_l2": 1.0,
575 + "learning_rate": 0.03,
576 + "min_child_samples": 100,
577 + "num_leaves": 15
578 + },
579 + "tag": "chrono",
580 + "target": "y_adverse_netinc",
581 + "trials": 24,
582 + "val_score": 0.6002488925915237
583 + },
584 + {
585 + "design": "event",
586 + "h": 20,
587 + "importance_gain": {
588 + "f_accruals": 0.0104,
589 + "f_capex_assets": 0.0338,
590 + "f_cash_assets": 0.024,
591 + "f_current_ratio": 0.0137,
592 + "f_gross_margin": 0.0394,
593 + "f_int_cover": 0.0158,
594 + "f_leverage": 0.0271,
595 + "f_log_assets": 0.02,
596 + "f_log_mcap": 0.0341,
597 + "f_loss": 0.0005,
598 + "f_net_issuance": 0.0432,
599 + "f_ni_assets": 0.0454,
600 + "f_ocf_assets": 0.0143,
601 + "f_op_margin": 0.0041,
602 + "f_rd_rev": 0.0064,
603 + "f_rev_growth": 0.0574,
604 + "f_roa": 0.0096,
605 + "hist_adverse_rate": 0.0558,
606 + "info_age_td": 0.0274,
607 + "last_surprise": 0.1681,
608 + "mean_surprise4": 0.0598,
609 + "wd_amihud60": 0.0114,
610 + "wd_bars20": 0.0117,
611 + "wd_intraday20": 0.0097,
612 + "wd_kurt60": 0.0093,
613 + "wd_log_dollar_vol60": 0.0113,
614 + "wd_maxdd60": 0.093,
615 + "wd_overnight20": 0.0187,
616 + "wd_parkinson20": 0.0219,
617 + "wd_ret20": 0.0093,
618 + "wd_ret60": 0.0234,
619 + "wd_skew60": 0.015,
620 + "wd_vol20": 0.016,
621 + "wd_vol60": 0.0155,
622 + "wd_volratio20": 0.0108,
623 + "wd_volratio5": 0.0099,
624 + "wd_zeroret60": 0.0029
625 + },
626 + "model": "LB2",
627 + "n_features": 37,
628 + "params": {
629 + "bagging_fraction": 0.8,
630 + "best_iteration": 373,
631 + "feature_fraction": 0.7,
632 + "lambda_l2": 0.0,
633 + "learning_rate": 0.03,
634 + "min_child_samples": 100,
635 + "num_leaves": 15
636 + },
637 + "tag": "chrono",
638 + "target": "y_roa_decline",
639 + "trials": 24,
640 + "val_score": 0.585544405775596
641 + },
642 + {
643 + "design": "event",
644 + "h": 20,
645 + "importance_gain": {
646 + "f_accruals": 0.0093,
647 + "f_capex_assets": 0.0285,
648 + "f_cash_assets": 0.0236,
649 + "f_current_ratio": 0.0125,
650 + "f_gross_margin": 0.0345,
651 + "f_int_cover": 0.0114,
652 + "f_leverage": 0.025,
653 + "f_log_assets": 0.0137,
654 + "f_log_mcap": 0.0276,
655 + "f_loss": 0.0007,
656 + "f_net_issuance": 0.042,
657 + "f_ni_assets": 0.0327,
658 + "f_ocf_assets": 0.0124,
659 + "f_op_margin": 0.0053,
660 + "f_rd_rev": 0.0044,
661 + "f_rev_growth": 0.055,
662 + "f_roa": 0.008,
663 + "hist_adverse_rate": 0.0442,
664 + "info_age_td": 0.026,
665 + "last_surprise": 0.1612,
666 + "mean_surprise4": 0.0542,
667 + "w1m_ac1": 0.0089,
668 + "w1m_beta": 0.0145,
669 + "w1m_bpv": 0.0045,
670 + "w1m_down_vol_share": 0.0065,
671 + "w1m_drift": 0.0038,
672 + "w1m_max_share": 0.0075,
673 + "w1m_present_share": 0.0061,
674 + "w1m_rj": 0.0113,
675 + "w1m_rkurt": 0.0068,
676 + "w1m_rskew": 0.0062,
677 + "w1m_rsneg_share": 0.0041,
678 + "w1m_rv": 0.0052,
679 + "w1m_rv_mktdown_share": 0.0077,
680 + "w1m_sjv": 0.0025,
681 + "w1m_vol_first30": 0.0071,
682 + "w1m_vol_gini": 0.0114,
683 + "w1m_vol_last30": 0.0076,
684 + "w1m_volofvol": 0.0097,
685 + "w1m_vratio": 0.0066,
686 + "wd_amihud60": 0.0087,
687 + "wd_bars20": 0.0038,
688 + "wd_intraday20": 0.0041,
689 + "wd_kurt60": 0.0076,
690 + "wd_log_dollar_vol60": 0.0088,
691 + "wd_maxdd60": 0.0939,
692 + "wd_overnight20": 0.0121,
693 + "wd_parkinson20": 0.0106,
694 + "wd_ret20": 0.0057,
695 + "wd_ret60": 0.0203,
696 + "wd_skew60": 0.0126,
697 + "wd_vol20": 0.0095,
698 + "wd_vol60": 0.0126,
699 + "wd_volratio20": 0.0098,
700 + "wd_volratio5": 0.008,
701 + "wd_zeroret60": 0.002
702 + },
703 + "model": "LB5",
704 + "n_features": 56,
705 + "params": {
706 + "bagging_fraction": 0.6,
707 + "best_iteration": 862,
708 + "feature_fraction": 0.9,
709 + "lambda_l2": 0.0,
710 + "learning_rate": 0.01,
711 + "min_child_samples": 100,
712 + "num_leaves": 15
713 + },
714 + "tag": "chrono",
715 + "target": "y_roa_decline",
716 + "trials": 24,
717 + "val_score": 0.5870107720935767
718 + },
719 + {
720 + "design": "event",
721 + "h": 20,
722 + "importance_gain": {
723 + "f_accruals": 0.0522,
724 + "f_capex_assets": 0.026,
725 + "f_cash_assets": 0.0771,
726 + "f_current_ratio": 0.0248,
727 + "f_gross_margin": 0.0395,
728 + "f_int_cover": 0.016,
729 + "f_leverage": 0.0265,
730 + "f_log_assets": 0.0829,
731 + "f_log_mcap": 0.0267,
732 + "f_loss": 0.0002,
733 + "f_net_issuance": 0.0198,
734 + "f_ni_assets": 0.0352,
735 + "f_ocf_assets": 0.0512,
736 + "f_op_margin": 0.0526,
737 + "f_rd_rev": 0.0151,
738 + "f_rev_growth": 0.0784,
739 + "f_roa": 0.0049,
740 + "hist_adverse_rate": 0.0249,
741 + "info_age_td": 0.0102,
742 + "last_surprise": 0.0567,
743 + "mean_surprise4": 0.0274,
744 + "wd_amihud60": 0.0134,
745 + "wd_bars20": 0.0154,
746 + "wd_intraday20": 0.0142,
747 + "wd_kurt60": 0.017,
748 + "wd_log_dollar_vol60": 0.0137,
749 + "wd_maxdd60": 0.02,
750 + "wd_overnight20": 0.018,
751 + "wd_parkinson20": 0.0251,
752 + "wd_ret20": 0.0141,
753 + "wd_ret60": 0.0168,
754 + "wd_skew60": 0.0156,
755 + "wd_vol20": 0.0144,
756 + "wd_vol60": 0.0178,
757 + "wd_volratio20": 0.0159,
758 + "wd_volratio5": 0.0158,
759 + "wd_zeroret60": 0.0046
760 + },
761 + "model": "LB2",
762 + "n_features": 37,
763 + "params": {
764 + "bagging_fraction": 0.8,
765 + "best_iteration": 632,
766 + "feature_fraction": 0.5,
767 + "lambda_l2": 10.0,
768 + "learning_rate": 0.01,
769 + "min_child_samples": 200,
770 + "num_leaves": 63
771 + },
772 + "tag": "chrono",
773 + "target": "y_ocf_negative",
774 + "trials": 24,
775 + "val_score": 0.4493253744647834
776 + },
777 + {
778 + "design": "event",
779 + "h": 20,
780 + "importance_gain": {
781 + "f_accruals": 0.0526,
782 + "f_capex_assets": 0.0227,
783 + "f_cash_assets": 0.0861,
784 + "f_current_ratio": 0.018,
785 + "f_gross_margin": 0.043,
786 + "f_int_cover": 0.0088,
787 + "f_leverage": 0.0198,
788 + "f_log_assets": 0.0897,
789 + "f_log_mcap": 0.0151,
790 + "f_loss": 0.0001,
791 + "f_net_issuance": 0.0123,
792 + "f_ni_assets": 0.0224,
793 + "f_ocf_assets": 0.0546,
794 + "f_op_margin": 0.0477,
795 + "f_rd_rev": 0.0193,
796 + "f_rev_growth": 0.0902,
797 + "f_roa": 0.0018,
798 + "hist_adverse_rate": 0.0289,
799 + "info_age_td": 0.0068,
800 + "last_surprise": 0.0572,
801 + "mean_surprise4": 0.0247,
802 + "w1m_ac1": 0.0059,
803 + "w1m_beta": 0.0127,
804 + "w1m_bpv": 0.0115,
805 + "w1m_down_vol_share": 0.009,
806 + "w1m_drift": 0.0043,
807 + "w1m_max_share": 0.0054,
808 + "w1m_present_share": 0.0035,
809 + "w1m_rj": 0.0077,
810 + "w1m_rkurt": 0.0081,
811 + "w1m_rskew": 0.0068,
812 + "w1m_rsneg_share": 0.0042,
813 + "w1m_rv": 0.0083,
814 + "w1m_rv_mktdown_share": 0.0066,
815 + "w1m_sjv": 0.0027,
816 + "w1m_vol_first30": 0.0089,
817 + "w1m_vol_gini": 0.0095,
818 + "w1m_vol_last30": 0.013,
819 + "w1m_volofvol": 0.0052,
820 + "w1m_vratio": 0.0069,
821 + "wd_amihud60": 0.0053,
822 + "wd_bars20": 0.0042,
823 + "wd_intraday20": 0.0035,
824 + "wd_kurt60": 0.0109,
825 + "wd_log_dollar_vol60": 0.0067,
826 + "wd_maxdd60": 0.0166,
827 + "wd_overnight20": 0.0095,
828 + "wd_parkinson20": 0.0108,
829 + "wd_ret20": 0.0081,
830 + "wd_ret60": 0.0102,
831 + "wd_skew60": 0.0081,
832 + "wd_vol20": 0.0054,
833 + "wd_vol60": 0.019,
834 + "wd_volratio20": 0.009,
835 + "wd_volratio5": 0.0096,
836 + "wd_zeroret60": 0.0012
837 + },
838 + "model": "LB5",
839 + "n_features": 56,
840 + "params": {
841 + "bagging_fraction": 0.6,
842 + "best_iteration": 914,
843 + "feature_fraction": 0.9,
844 + "lambda_l2": 0.0,
845 + "learning_rate": 0.01,
846 + "min_child_samples": 100,
847 + "num_leaves": 15
848 + },
849 + "tag": "chrono",
850 + "target": "y_ocf_negative",
851 + "trials": 24,
852 + "val_score": 0.44969331270002605
853 + },
854 + {
855 + "design": "event",
856 + "h": 20,
857 + "importance_gain": {
858 + "f_accruals": 0.0195,
859 + "f_capex_assets": 0.0409,
860 + "f_cash_assets": 0.0265,
861 + "f_current_ratio": 0.0709,
862 + "f_gross_margin": 0.052,
863 + "f_int_cover": 0.1826,
864 + "f_leverage": 0.0423,
865 + "f_log_assets": 0.0235,
866 + "f_log_mcap": 0.0247,
867 + "f_loss": 0.0002,
868 + "f_net_issuance": 0.0424,
869 + "f_ni_assets": 0.044,
870 + "f_ocf_assets": 0.0167,
871 + "f_op_margin": 0.0131,
872 + "f_rd_rev": 0.0034,
873 + "f_rev_growth": 0.0505,
874 + "f_roa": 0.0062,
875 + "hist_adverse_rate": 0.0146,
876 + "info_age_td": 0.0157,
877 + "last_surprise": 0.0222,
878 + "mean_surprise4": 0.0352,
879 + "wd_amihud60": 0.0159,
880 + "wd_bars20": 0.0195,
881 + "wd_intraday20": 0.0143,
882 + "wd_kurt60": 0.0163,
883 + "wd_log_dollar_vol60": 0.0169,
884 + "wd_maxdd60": 0.0233,
885 + "wd_overnight20": 0.0218,
886 + "wd_parkinson20": 0.013,
887 + "wd_ret20": 0.0146,
888 + "wd_ret60": 0.0156,
889 + "wd_skew60": 0.0124,
890 + "wd_vol20": 0.0154,
891 + "wd_vol60": 0.0173,
892 + "wd_volratio20": 0.0163,
893 + "wd_volratio5": 0.0177,
894 + "wd_zeroret60": 0.0026
895 + },
896 + "model": "LB2",
897 + "n_features": 37,
898 + "params": {
899 + "bagging_fraction": 0.8,
900 + "best_iteration": 198,
901 + "feature_fraction": 0.7,
902 + "lambda_l2": 10.0,
903 + "learning_rate": 0.03,
904 + "min_child_samples": 50,
905 + "num_leaves": 63
906 + },
907 + "tag": "chrono",
908 + "target": "y_liquidity_deterioration",
909 + "trials": 24,
910 + "val_score": 0.632857090195195
911 + },
912 + {
913 + "design": "event",
914 + "h": 20,
915 + "importance_gain": {
916 + "f_accruals": 0.0153,
917 + "f_capex_assets": 0.0354,
918 + "f_cash_assets": 0.0198,
919 + "f_current_ratio": 0.0652,
920 + "f_gross_margin": 0.0465,
921 + "f_int_cover": 0.1944,
922 + "f_leverage": 0.0314,
923 + "f_log_assets": 0.0187,
924 + "f_log_mcap": 0.0156,
925 + "f_loss": 0.0027,
926 + "f_net_issuance": 0.0338,
927 + "f_ni_assets": 0.0351,
928 + "f_ocf_assets": 0.0123,
929 + "f_op_margin": 0.0152,
930 + "f_rd_rev": 0.0037,
931 + "f_rev_growth": 0.0419,
932 + "f_roa": 0.0119,
933 + "hist_adverse_rate": 0.0144,
934 + "info_age_td": 0.0115,
935 + "last_surprise": 0.0163,
936 + "mean_surprise4": 0.0239,
937 + "w1m_ac1": 0.0105,
938 + "w1m_beta": 0.016,
939 + "w1m_bpv": 0.0062,
940 + "w1m_down_vol_share": 0.0108,
941 + "w1m_drift": 0.0052,
942 + "w1m_max_share": 0.0073,
943 + "w1m_present_share": 0.0127,
944 + "w1m_rj": 0.0087,
945 + "w1m_rkurt": 0.0107,
946 + "w1m_rskew": 0.0073,
947 + "w1m_rsneg_share": 0.0107,
948 + "w1m_rv": 0.0066,
949 + "w1m_rv_mktdown_share": 0.0093,
950 + "w1m_sjv": 0.0069,
951 + "w1m_vol_first30": 0.0117,
952 + "w1m_vol_gini": 0.0107,
953 + "w1m_vol_last30": 0.0096,
954 + "w1m_volofvol": 0.007,
955 + "w1m_vratio": 0.0058,
956 + "wd_amihud60": 0.0157,
957 + "wd_bars20": 0.0098,
958 + "wd_intraday20": 0.0056,
959 + "wd_kurt60": 0.0082,
960 + "wd_log_dollar_vol60": 0.011,
961 + "wd_maxdd60": 0.0206,
962 + "wd_overnight20": 0.0164,
963 + "wd_parkinson20": 0.0085,
964 + "wd_ret20": 0.0074,
965 + "wd_ret60": 0.0103,
966 + "wd_skew60": 0.0078,
967 + "wd_vol20": 0.0077,
968 + "wd_vol60": 0.0108,
969 + "wd_volratio20": 0.0106,
970 + "wd_volratio5": 0.0089,
971 + "wd_zeroret60": 0.0017
972 + },
973 + "model": "LB5",
974 + "n_features": 56,
975 + "params": {
976 + "bagging_fraction": 0.8,
977 + "best_iteration": 291,
978 + "feature_fraction": 0.5,
979 + "lambda_l2": 10.0,
980 + "learning_rate": 0.03,
981 + "min_child_samples": 50,
982 + "num_leaves": 31
983 + },
984 + "tag": "chrono",
985 + "target": "y_liquidity_deterioration",
986 + "trials": 24,
987 + "val_score": 0.6345916500670383
988 + },
989 + {
990 + "design": "event",
991 + "h": 20,
992 + "importance_gain": {
993 + "f_accruals": 0.0098,
994 + "f_capex_assets": 0.0205,
995 + "f_cash_assets": 0.0265,
996 + "f_current_ratio": 0.0339,
997 + "f_gross_margin": 0.0245,
998 + "f_int_cover": 0.0102,
999 + "f_leverage": 0.0124,
1000 + "f_log_assets": 0.0356,
1001 + "f_log_mcap": 0.0087,
1002 + "f_loss": 0.0005,
1003 + "f_net_issuance": 0.0085,
1004 + "f_ni_assets": 0.0247,
1005 + "f_ocf_assets": 0.0112,
1006 + "f_op_margin": 0.0025,
1007 + "f_rd_rev": 0.0003,
1008 + "f_rev_growth": 0.024,
1009 + "f_roa": 0.0047,
1010 + "hist_adverse_rate": 0.1773,
1011 + "info_age_td": 0.0161,
1012 + "last_surprise": 0.1867,
1013 + "mean_surprise4": 0.1229,
1014 + "wd_amihud60": 0.0055,
1015 + "wd_bars20": 0.0105,
1016 + "wd_intraday20": 0.0067,
1017 + "wd_kurt60": 0.0084,
1018 + "wd_log_dollar_vol60": 0.0068,
1019 + "wd_maxdd60": 0.0098,
1020 + "wd_overnight20": 0.0094,
1021 + "wd_parkinson20": 0.0597,
1022 + "wd_ret20": 0.0077,
1023 + "wd_ret60": 0.0089,
1024 + "wd_skew60": 0.0073,
1025 + "wd_vol20": 0.0157,
1026 + "wd_vol60": 0.0657,
1027 + "wd_volratio20": 0.0077,
1028 + "wd_volratio5": 0.0079,
1029 + "wd_zeroret60": 0.001
1030 + },
1031 + "model": "LB2",
1032 + "n_features": 37,
1033 + "params": {
1034 + "bagging_fraction": 0.8,
1035 + "best_iteration": 636,
1036 + "feature_fraction": 0.5,
1037 + "lambda_l2": 10.0,
1038 + "learning_rate": 0.01,
1039 + "min_child_samples": 200,
1040 + "num_leaves": 63
1041 + },
1042 + "tag": "chrono",
1043 + "target": "y_abs_surprise",
1044 + "trials": 24,
1045 + "val_score": 0.49668331260297294
1046 + },
1047 + {
1048 + "design": "event",
1049 + "h": 20,
1050 + "importance_gain": {
1051 + "f_accruals": 0.0067,
1052 + "f_capex_assets": 0.018,
1053 + "f_cash_assets": 0.0238,
1054 + "f_current_ratio": 0.0271,
1055 + "f_gross_margin": 0.0202,
1056 + "f_int_cover": 0.0083,
1057 + "f_leverage": 0.0093,
1058 + "f_log_assets": 0.0271,
1059 + "f_log_mcap": 0.006,
1060 + "f_loss": 0.0005,
1061 + "f_net_issuance": 0.0052,
1062 + "f_ni_assets": 0.0187,
1063 + "f_ocf_assets": 0.009,
1064 + "f_op_margin": 0.0018,
1065 + "f_rd_rev": 0.0001,
1066 + "f_rev_growth": 0.0206,
1067 + "f_roa": 0.0066,
1068 + "hist_adverse_rate": 0.1926,
1069 + "info_age_td": 0.0145,
1070 + "last_surprise": 0.1847,
1071 + "mean_surprise4": 0.1198,
1072 + "w1m_ac1": 0.005,
1073 + "w1m_beta": 0.0058,
1074 + "w1m_bpv": 0.0097,
1075 + "w1m_down_vol_share": 0.0048,
1076 + "w1m_drift": 0.0028,
1077 + "w1m_max_share": 0.0042,
1078 + "w1m_present_share": 0.0052,
1079 + "w1m_rj": 0.0074,
1080 + "w1m_rkurt": 0.0048,
1081 + "w1m_rskew": 0.0049,
1082 + "w1m_rsneg_share": 0.0039,
1083 + "w1m_rv": 0.0143,
1084 + "w1m_rv_mktdown_share": 0.0048,
1085 + "w1m_sjv": 0.0029,
1086 + "w1m_vol_first30": 0.0055,
1087 + "w1m_vol_gini": 0.0043,
1088 + "w1m_vol_last30": 0.0046,
1089 + "w1m_volofvol": 0.0055,
1090 + "w1m_vratio": 0.0054,
1091 + "wd_amihud60": 0.0032,
1092 + "wd_bars20": 0.0049,
1093 + "wd_intraday20": 0.0029,
1094 + "wd_kurt60": 0.0049,
1095 + "wd_log_dollar_vol60": 0.0034,
1096 + "wd_maxdd60": 0.0063,
1097 + "wd_overnight20": 0.0057,
1098 + "wd_parkinson20": 0.0423,
1099 + "wd_ret20": 0.0047,
1100 + "wd_ret60": 0.0063,
1101 + "wd_skew60": 0.0049,
1102 + "wd_vol20": 0.0068,
1103 + "wd_vol60": 0.0667,
1104 + "wd_volratio20": 0.0047,
1105 + "wd_volratio5": 0.0054,
1106 + "wd_zeroret60": 0.0007
1107 + },
1108 + "model": "LB5",
1109 + "n_features": 56,
1110 + "params": {
1111 + "bagging_fraction": 0.8,
1112 + "best_iteration": 550,
1113 + "feature_fraction": 0.5,
1114 + "lambda_l2": 10.0,
1115 + "learning_rate": 0.01,
1116 + "min_child_samples": 200,
1117 + "num_leaves": 63
1118 + },
1119 + "tag": "chrono",
1120 + "target": "y_abs_surprise",
1121 + "trials": 24,
1122 + "val_score": 0.4971337861378994
1123 + },
1124 + {
1125 + "best_iteration": 303,
1126 + "design": "event",
1127 + "h": 1,
1128 + "model": "LB2",
1129 + "tag": "fixed",
1130 + "target": "y_adverse_opinc"
1131 + },
1132 + {
1133 + "best_iteration": 278,
1134 + "design": "event",
1135 + "h": 1,
1136 + "model": "LB5",
1137 + "tag": "fixed",
1138 + "target": "y_adverse_opinc"
1139 + },
1140 + {
1141 + "best_iteration": 396,
1142 + "design": "event",
1143 + "h": 5,
1144 + "model": "LB2",
1145 + "tag": "fixed",
1146 + "target": "y_adverse_opinc"
1147 + },
1148 + {
1149 + "best_iteration": 407,
1150 + "design": "event",
1151 + "h": 5,
1152 + "model": "LB5",
1153 + "tag": "fixed",
1154 + "target": "y_adverse_opinc"
1155 + },
1156 + {
1157 + "best_iteration": 576,
1158 + "design": "event",
1159 + "h": 10,
1160 + "model": "LB2",
1161 + "tag": "fixed",
1162 + "target": "y_adverse_opinc"
1163 + },
1164 + {
1165 + "best_iteration": 463,
1166 + "design": "event",
1167 + "h": 10,
1168 + "model": "LB5",
1169 + "tag": "fixed",
1170 + "target": "y_adverse_opinc"
1171 + },
1172 + {
1173 + "best_iteration": 281,
1174 + "design": "event",
1175 + "h": 20,
1176 + "model": "LB2",
1177 + "tag": "fixed",
1178 + "target": "y_adverse_opinc"
1179 + },
1180 + {
1181 + "best_iteration": 406,
1182 + "design": "event",
1183 + "h": 20,
1184 + "model": "LB5",
1185 + "tag": "fixed",
1186 + "target": "y_adverse_opinc"
1187 + },
1188 + {
1189 + "best_iteration": 270,
1190 + "design": "event",
1191 + "h": 40,
1192 + "model": "LB2",
1193 + "tag": "fixed",
1194 + "target": "y_adverse_opinc"
1195 + },
1196 + {
1197 + "best_iteration": 350,
1198 + "design": "event",
1199 + "h": 40,
1200 + "model": "LB5",
1201 + "tag": "fixed",
1202 + "target": "y_adverse_opinc"
1203 + }
1204 + ],
1205 + "fixed_config": {
1206 + "bagging_fraction": 0.8,
1207 + "bagging_freq": 1,
1208 + "feature_fraction": 0.7,
1209 + "lambda_l2": 1.0,
1210 + "learning_rate": 0.03,
1211 + "min_child_samples": 100,
1212 + "n_estimators": 600,
1213 + "n_jobs": 12,
1214 + "num_leaves": 15,
1215 + "verbose": -1
1216 + },
1217 + "run_at": "2026-11-02T15:30:00-0500"
1218 +}
\ No newline at end of file
added artifacts/evaluation/baselines_fit_log.json +3534 −0
Large diff (3,535 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/continuous.csv +4 −0
Large diff (4 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/contrasts.csv +19 −0
Large diff (19 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/feature_columns_calendar.json +106 −0
Large diff (107 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/feature_columns_event.json +106 −0
Large diff (107 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/firm_holdout.csv +5 −0
Large diff (5 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/h4_timing.json +40 −0
Large diff (41 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/h5_car_regressions.csv +18 −0
Large diff (18 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/h5_portfolios.json +72 −0
Large diff (73 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/horizon_ladder.csv +12 −0
Large diff (12 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/metrics_all.csv +208 −0
Large diff (208 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/panel_regressions.csv +59 −0
Large diff (59 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/placebo_shuffled.csv +4 −0
Large diff (4 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/portfolios_LB2.csv +1291 −0
Large diff (1,291 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/portfolios_LB5.csv +1291 −0
Large diff (1,291 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/power.json +7 −0
Large diff (8 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/reliability.csv +41 −0
Large diff (41 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/secondary_targets.csv +13 −0
Large diff (13 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/subgroups.csv +37 −0
Large diff (37 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/walkforward_by_year.csv +111 −0
Large diff (111 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/evaluation/walkforward_contrasts.csv +25 −0
Large diff (25 lines) is not loaded by default to keep the page fast.Load diff
added artifacts/manifests/bars_manifest.jsonl +11543 −0
Large diff (11,543 lines) is not loaded by default to keep the page fast.Load diff

Diff truncated — file too large.

Menu

Theme