From 4e7e6cf5107a8302f36e1503428bfcc61a0a3fd5 Mon Sep 17 00:00:00 2001 From: bozarnr <97791974+bozarnr@users.noreply.github.com> Date: Fri, 31 Jul 2026 22:43:24 +0800 Subject: [PATCH] Add disclosure boundary and sample data --- DISCLOSURE.md | 19 +++++++++++++++++++ README.md | 2 +- sample_data/candidate_records_sample.jsonl | 3 +++ tests/test_sample_data.py | 19 +++++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 DISCLOSURE.md create mode 100644 sample_data/candidate_records_sample.jsonl create mode 100644 tests/test_sample_data.py diff --git a/DISCLOSURE.md b/DISCLOSURE.md new file mode 100644 index 0000000..f1c652f --- /dev/null +++ b/DISCLOSURE.md @@ -0,0 +1,19 @@ +# Disclosure Boundary + +This repository shows an auditable AI-assisted alpha research loop without publishing the private parts of a real research book. + +## Included + +- Synthetic panel generation, formula parsing, candidate evaluation, and rejection accounting. +- Tiny sample candidate records that show the public research-log schema. +- Claim ceilings for what the evidence supports and does not support. + +## Excluded + +- Complete alpha libraries, live candidate pools, production thresholds, execution code, and capital-allocation logic. +- Raw research logs, vendor data, credentials, account metadata, and any non-public dataset. +- Any claim that the demo formulas are tradable. + +## Sample Data Rule + +Files under `sample_data/` are synthetic fixtures. They document format and validation behavior only. diff --git a/README.md b/README.md index e13588c..fd02a1a 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ python -m unittest discover -s tests -v ## Evidence boundary -The first public record is intentionally conservative. An AutoAlpha-style study ran through the search and validation pipeline, but the frozen protocol produced zero final candidates. See [`evidence/validation-summary.md`](evidence/validation-summary.md), [`reports/rejection-gallery.md`](reports/rejection-gallery.md), and [`research_state.json`](research_state.json). +The first public record is intentionally conservative. An AutoAlpha-style study ran through the search and validation pipeline, but the frozen protocol produced zero final candidates. See [`evidence/validation-summary.md`](evidence/validation-summary.md), [`reports/rejection-gallery.md`](reports/rejection-gallery.md), and [`research_state.json`](research_state.json). The public disclosure boundary is recorded in [`DISCLOSURE.md`](DISCLOSURE.md), with a tiny synthetic candidate-log fixture in `sample_data/`. ## Layout diff --git a/sample_data/candidate_records_sample.jsonl b/sample_data/candidate_records_sample.jsonl new file mode 100644 index 0000000..f4a4f7b --- /dev/null +++ b/sample_data/candidate_records_sample.jsonl @@ -0,0 +1,3 @@ +{"formula":"rank(delta(amount, 3))","oos_rank_ic":0.012,"oos_net_return":-0.0011,"turnover":0.71,"promoted":false,"reason":"too_costly"} +{"formula":"rank(mean(returns, 5))","oos_rank_ic":-0.004,"oos_net_return":-0.0007,"turnover":0.42,"promoted":false,"reason":"low_oos_rank_ic"} +{"formula":"rank(delta(close, 2)) - rank(mean(returns, 5))","oos_rank_ic":0.018,"oos_net_return":-0.0003,"turnover":0.58,"promoted":false,"reason":"below_gate"} diff --git a/tests/test_sample_data.py b/tests/test_sample_data.py new file mode 100644 index 0000000..521dbfd --- /dev/null +++ b/tests/test_sample_data.py @@ -0,0 +1,19 @@ +import json +import unittest +from pathlib import Path + + +class SampleDataTests(unittest.TestCase): + def test_candidate_records_are_bounded_negative_examples(self): + records = [ + json.loads(line) + for line in Path("sample_data/candidate_records_sample.jsonl").read_text(encoding="utf-8").splitlines() + ] + + self.assertEqual(len(records), 3) + self.assertTrue(all(record["promoted"] is False for record in records)) + self.assertTrue(all("formula" in record and "reason" in record for record in records)) + + +if __name__ == "__main__": + unittest.main()