Skip to content

Screening fixes and speedup, research harness fixes, and five pre-registered formula rounds - #2

Merged
ihsieh31 merged 2 commits into
mainfrom
research/screen-diagnosis-formula-search
Oct 4, 2026
Merged

ihsieh31 merged 2 commits into
mainfrom
research/screen-diagnosis-formula-search

Conversation

@ihsieh31

@ihsieh31 ihsieh31 commented Oct 4, 2026

Copy link
Copy Markdown
Owner

Summary

Production screening fixes and optimisation, a set of research-harness measurement bug fixes, and five pre-registered research rounds searching for a 20-stock formula (long and short). No formula passed the R10 acceptance criteria. The production long-only exclusion screen stays in place, with corrected documentation of how it behaves.

This branch also contains work that was sitting uncommitted on main before this session (data-quality gate, shared 20-stock analysis budget, exclusion-screen integration, 2026-09-28/29 research outputs), plus the one local main commit that had not been pushed (4462b8c).

Production changes (tradingagents/screening)

  • Trend-gate float bug: trend > 0 was decided by rounding noise when a close equals its 20-day mean (computes as ±1e-16). Added TREND_EPSILON = 1e-12; formula version bumped to exclusion-20261004-1, so old caches are invalidated by fingerprint and rescanned once.
  • Scan speed: validate_and_clean_bars is now vectorised with numpy, and the expected calendar window is computed once per scan instead of once per symbol. bar_evidence builds its rows with numpy. A synthetic 3,000-symbol scan went from 15.3s to 4.1s. A differential test over 20,000 random and malformed bar sets found the old and new code identical on exclusion reasons, output windows and dtypes, evidence hashes, and factor values.
  • Docs: docs/EXCLUSION_SCREENING.md corrects the "fewer than 20 names" frequency. On a stock-only universe it is 68 + 22 days over 2016–2025, not 9 + 5. The doc also notes that ETFs are excluded only indirectly, through the Nasdaq stock-screener market-cap source.

Research harness fixes (each has a regression test that fails on the old code)

Fix Effect before the fix
build_portfolio filtered returns, then zipped them against unfiltered picks Per-name contributions shifted onto the wrong symbols
Turnover assumed every period held top_k names; skipped periods kept stale holdings Turnover was wrong for short books and flat periods
np.flatnonzero(valid_as_of(...))[::h] idiom (8 tools), replaced by panel.study_as_of Grid shifted by one session and sampled the previous period's buffer
analyse / parameter_sweep built portfolios on the whole panel; --period both used 2016–2025 as "discovery" Validation years leaked into discovery
classify_curve counted only cells to the right of the best cell Plateaus whose best cell was in the middle or at the end were always labelled SPIKE
percentiles_fast ranked NaN at percentile 1.0 Missing values became the best long and the first short
R10 conditions 5 and 12 had no implementation; new condition 13 Condition 5 had no baseline; the equal-weight benchmark was missing

Also added: a point-in-time SEC 10-K fundamentals module (research/src/fundamentals.py), and build_panel no longer needs Alpaca keys when the calendar cache already covers the window.

Research rounds (all pre-registered and single-shot; details in research/history.md)

  • F-09 screen diagnosis: production and research produce identical selections on 26 of 26 sampled days. About half of the research "trusted" universe is ETFs. The exclusion screen's short-term drawdown evidence holds on stocks only. The pre-declared fill-to-20 rule was rejected because its 20-day big-drop rate was 26.2%, against 22.5% for the old score and 11.1% for the gate survivors.
  • F-10 literature candidates ×3 and F-11 SEC quality factors (GP/A, quality composite): all REJECTED. None significantly beats the same-universe equal-weight book over 2021–2025.
  • F-12 / F-13 short formulas, with a 5y/5y split and a pandemic-isolated split: no candidate qualified in the selection period, so the backtest period was never read. Short-side conclusions are dominated by survivorship bias, since about 95% of stocks that stopped trading are missing from the dataset.

Notes for reviewers

  • The SEC download script reads its User-Agent from SEC_USER_AGENT; no contact address is committed. Raw SEC and price data live under the gitignored research/data/.
  • tests/test_execution_long_run_refactor.py updates the long_run_fresh snapshot hash. The same test first proves that, with the old schema and formula fingerprint restored, the previous full hash still matches.

Testing

  • pytest tests/: 2001 passed, 335 subtests passed
  • python -m research.src.test_harness: all passed (11 new tests)
  • python -m research.src.smoke_test: passed
  • git diff --check: clean

🤖 Generated with Claude Code

ihsieh31 and others added 2 commits September 28, 2026 12:12
…500 symbols/month

Batch download is the right interface and per-ticker API is the wrong one, so
the fetcher now speaks both EODHD and Tiingo behind one interface. Choosing a
vendor should not change the pipeline.

Both silent failure modes from the Tiingo work are handled explicitly rather
than left to chance: a quota response is never recorded as "no data for this
symbol" (that manufactures false negatives indistinguishable from a real
coverage gap), and every series is checked against the master's death date
before being accepted, because a ticker master keyed by ticker cannot represent
reuse and the prices endpoint resolves to whoever owns the ticker now.

Measured, not guessed, from Tiingo's own pricing bundle: 50 req/hour,
1000 req/day, 500 unique symbols per MONTH, 1 GB/month. The unique-symbol cap
binds, so 7,231 dead names is ~14 months on the free tier. EODHD at $19.99 for
a single month is 100,000 req/day over 30+ years with delisted data listed as a
feature, which is the same set in under an hour.

Checked whether the full 7,231 is even the right target: a dead name that died
trading $200k/day could never have been held by a strategy with a liquidity
floor, so its absence cannot bias a 20-stock portfolio. Dollar volume at death
is bimodal (p50 $0.19M, p75 $26.7M), and 48-65% of dead names clear the
cross-sectional ADV20 floor depending on where it is set. The
bias-relevant set is the liquid tail, not the full list.
…ormula rounds

Production screening (tradingagents/screening):
- Exclusion formula exclusion-20261004-1: trend gate tolerance (TREND_EPSILON)
  so a close equal to its MA20 no longer passes on float rounding.
- Vectorised bar validation and evidence rows; one calendar window per scan.
  Synthetic 3,000-symbol scan 15.3s -> 4.1s, differential-tested on 20,000
  random/malformed bar sets (reasons, windows, dtypes, hashes identical).
- Includes the previously uncommitted data-quality gate, shared 20-stock
  analysis budget and exclusion-screen integration work.

Research harness fixes (each with a regression test that fails on old code):
- build_portfolio per-name attribution, turnover with short books, flat periods
- study_as_of grid (was shifted and sampled the leading buffer)
- analyse/parameter_sweep restricted to their span; discovery clipped to 2020
- plateau classification counted only rightward of the best cell
- percentiles_fast ranked NaN at the top percentile
- conditions 5/12/13 (production baseline, equal-weight excess, holdout sign)
- point-in-time SEC 10-K fundamentals module; build_panel needs no keys offline

Rounds (all pre-registered, single-shot):
- F-09 screen diagnosis: research universe is ~half ETFs; shortfall days
  68+22 not 9+5; fill rule rejected; risk evidence holds on stocks only
- F-10 literature candidates x3, F-11 SEC quality factors x2: all REJECTED
- F-12/F-13 short formulas (5y/5y and pandemic-isolated splits): none
  qualified in selection; short conclusions dominated by survivorship bias

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 208 files, which is 108 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 65f27eba-e32e-47d5-bdae-ceb2d48ad6b8
📥 Commits

Reviewing files that changed from the base of the PR and between 2f4a377 and 6854083.

⛔ Files ignored due to path filters (90)
  • research/out/20260928-external-anchor/tiingo/absent_bulk.csv is excluded by !**/*.csv
  • research/out/20260928-external-anchor/tiingo/no_data_tier2.csv is excluded by !**/*.csv
  • research/out/20260928-external-anchor/tiingo/rejected_bulk.csv is excluded by !**/*.csv
  • research/out/20260928-external-anchor/tiingo/rejected_tier2.csv is excluded by !**/*.csv
  • research/out/20260929-data-repair-pilot/budget_tests.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/characterization_tests.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/cli_help.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/coverage.csv is excluded by !**/*.csv
  • research/out/20260929-data-repair-pilot/evaluate.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/external_price_check.csv is excluded by !**/*.csv
  • research/out/20260929-data-repair-pilot/fetch.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/formula_checks.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/full_tests.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/full_tests_final.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/periods.csv is excluded by !**/*.csv
  • research/out/20260929-data-repair-pilot/recovery_tests.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/repair.log is excluded by !**/*.log
  • research/out/20260929-data-repair-pilot/selections.csv is excluded by !**/*.csv
  • research/out/20260929-data-repair-pilot/verification.log is excluded by !**/*.log
  • research/out/20260929-data-trust/audit.log is excluded by !**/*.log
  • research/out/20260929-data-trust/demo.log is excluded by !**/*.log
  • research/out/20260929-data-trust/demo_cache/selection.json.lock is excluded by !**/*.lock
  • research/out/20260929-data-trust/financial_quality.csv is excluded by !**/*.csv
  • research/out/20260929-data-trust/full_tests.log is excluded by !**/*.log
  • research/out/20260929-data-trust/research_gate.log is excluded by !**/*.log
  • research/out/20260929-direction-mirror/joint_periods.csv is excluded by !**/*.csv
  • research/out/20260929-direction-mirror/long_selections.csv is excluded by !**/*.csv
  • research/out/20260929-direction-mirror/periods.csv is excluded by !**/*.csv
  • research/out/20260929-direction-mirror/run.log is excluded by !**/*.log
  • research/out/20260929-direction-mirror/used_prices.csv is excluded by !**/*.csv
  • research/out/20260929-direction-mirror/verification.log is excluded by !**/*.log
  • research/out/20260929-mscore-validation/coverage.csv is excluded by !**/*.csv
  • research/out/20260929-mscore-validation/evaluate.log is excluded by !**/*.log
  • research/out/20260929-mscore-validation/external_price_check.csv is excluded by !**/*.csv
  • research/out/20260929-mscore-validation/fetch.log is excluded by !**/*.log
  • research/out/20260929-mscore-validation/periods.csv is excluded by !**/*.csv
  • research/out/20260929-mscore-validation/prepare.log is excluded by !**/*.log
  • research/out/20260929-mscore-validation/selections.csv is excluded by !**/*.csv
  • research/out/20260929-mscore-validation/verification.log is excluded by !**/*.log
  • research/out/20260929-screen-alternatives/periods.csv is excluded by !**/*.csv
  • research/out/20260929-screen-alternatives/run.log is excluded by !**/*.log
  • research/out/20260929-screen-review/periods.csv is excluded by !**/*.csv
  • research/out/20260929-screen-review/run.log is excluded by !**/*.log
  • research/out/20260929-short-formula-search/checks.log is excluded by !**/*.log
  • research/out/20260929-short-formula-search/coverage.csv is excluded by !**/*.csv
  • research/out/20260929-short-formula-search/external.log is excluded by !**/*.log
  • research/out/20260929-short-formula-search/harness.log is excluded by !**/*.log
  • research/out/20260929-short-formula-search/periods.csv is excluded by !**/*.csv
  • research/out/20260929-short-formula-search/prepare.log is excluded by !**/*.log
  • research/out/20260929-short-formula-search/run.log is excluded by !**/*.log
  • research/out/20260929-short-formula-search/selections.csv is excluded by !**/*.csv
  • research/out/20260929-short-formula-search/smoke.log is excluded by !**/*.log
  • research/out/20260929-short-formula-search/universe.csv is excluded by !**/*.csv
  • research/out/20260929-short-formula-search/verification.log is excluded by !**/*.log
  • research/out/20260929-short-screen/market.csv is excluded by !**/*.csv
  • research/out/20260929-short-screen/periods.csv is excluded by !**/*.csv
  • research/out/20260929-short-screen/run.log is excluded by !**/*.log
  • research/out/20260929-short-screen/selections.csv is excluded by !**/*.csv
  • research/out/20260929-short-screen/verification.log is excluded by !**/*.log
  • research/out/20261004-literature-candidates/lit-high-proximity.log is excluded by !**/*.log
  • research/out/20261004-literature-candidates/lit-high-proximity/ic.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-high-proximity/param_sweep.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-high-proximity/regimes.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-high-proximity/walkforward.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-liquidity.log is excluded by !**/*.log
  • research/out/20261004-literature-candidates/lit-liquidity/ic.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-liquidity/param_sweep.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-liquidity/regimes.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-liquidity/walkforward.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-reversal.log is excluded by !**/*.log
  • research/out/20261004-literature-candidates/lit-reversal/ic.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-reversal/param_sweep.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-reversal/regimes.csv is excluded by !**/*.csv
  • research/out/20261004-literature-candidates/lit-reversal/walkforward.csv is excluded by !**/*.csv
  • research/out/20261004-quality-factor/lit-gross-profitability.log is excluded by !**/*.log
  • research/out/20261004-quality-factor/lit-gross-profitability/ic.csv is excluded by !**/*.csv
  • research/out/20261004-quality-factor/lit-gross-profitability/param_sweep.csv is excluded by !**/*.csv
  • research/out/20261004-quality-factor/lit-gross-profitability/regimes.csv is excluded by !**/*.csv
  • research/out/20261004-quality-factor/lit-gross-profitability/walkforward.csv is excluded by !**/*.csv
  • research/out/20261004-quality-factor/lit-quality-composite.log is excluded by !**/*.log
  • research/out/20261004-quality-factor/lit-quality-composite/ic.csv is excluded by !**/*.csv
  • research/out/20261004-quality-factor/lit-quality-composite/param_sweep.csv is excluded by !**/*.csv
  • research/out/20261004-quality-factor/lit-quality-composite/regimes.csv is excluded by !**/*.csv
  • research/out/20261004-quality-factor/lit-quality-composite/walkforward.csv is excluded by !**/*.csv
  • research/out/20261004-screen-diagnosis/fill_test.log is excluded by !**/*.log
  • research/out/20261004-screen-diagnosis/parity.log is excluded by !**/*.log
  • research/out/20261004-screen-diagnosis/run.log is excluded by !**/*.log
  • research/out/20261004-screen-diagnosis/stock_only.log is excluded by !**/*.log
  • research/out/20261004-short-search/select.log is excluded by !**/*.log
  • research/out/20261004-short-three-periods/select.log is excluded by !**/*.log
📒 Files selected for processing (208)
  • .zcodeignore
  • README.md
  • cli/main.py
  • docs/DATA_QUALITY_GATE.md
  • docs/DELISTED_DATA_SOURCES_REPORT.md
  • docs/DELISTED_GITHUB_SEARCH_REPORT.md
  • docs/EXCLUSION_SCREENING.md
  • research/history.md
  • research/out/20260928-exclusion-screen/REPORT.md
  • research/out/20260928-exclusion-screen/exclusion_screen.txt
  • research/out/20260928-exclusion-screen/frontier.txt
  • research/out/20260928-exclusion-screen/llm_budget.txt
  • research/out/20260928-exclusion-screen/stability_screen.txt
  • research/out/20260928-exclusion-screen/stability_validate.txt
  • research/out/20260928-external-anchor/tiingo/tier2_progress.json
  • research/out/20260928-risk-reframe/benchmark_check.txt
  • research/out/20260928-risk-reframe/diversification_test.txt
  • research/out/20260928-risk-reframe/drawdown_test.txt
  • research/out/20260928-risk-reframe/factor_census.txt
  • research/out/20260928-risk-reframe/report.md
  • research/out/20260928-risk-reframe/risk_signal_round.txt
  • research/out/20260928-risk-reframe/summary.json
  • research/out/20260928-risk-reframe/survivorship_probe.txt
  • research/out/20260928-stability-screen/stability_screen.txt
  • research/out/20260929-data-repair-pilot/METHOD.md
  • research/out/20260929-data-repair-pilot/REPORT.md
  • research/out/20260929-data-repair-pilot/evaluate.py
  • research/out/20260929-data-repair-pilot/external_sources.json
  • research/out/20260929-data-repair-pilot/fetch_notes.py
  • research/out/20260929-data-repair-pilot/financials.json
  • research/out/20260929-data-repair-pilot/notes_source.json
  • research/out/20260929-data-repair-pilot/pilot_audit.json
  • research/out/20260929-data-repair-pilot/quarter_audit.json
  • research/out/20260929-data-repair-pilot/repair.py
  • research/out/20260929-data-repair-pilot/repair_summary.json
  • research/out/20260929-data-repair-pilot/sample.json
  • research/out/20260929-data-repair-pilot/source_verification.json
  • research/out/20260929-data-repair-pilot/summary.json
  • research/out/20260929-data-repair-pilot/verification.json
  • research/out/20260929-data-repair-pilot/verify.py
  • research/out/20260929-data-repair-pilot/yahoo_FAST.json
  • research/out/20260929-data-repair-pilot/yahoo_GPN.json
  • research/out/20260929-data-repair-pilot/yahoo_TUSK.json
  • research/out/20260929-data-trust/REPORT.md
  • research/out/20260929-data-trust/audit.py
  • research/out/20260929-data-trust/canonical_cvna_example.json
  • research/out/20260929-data-trust/coverage.json
  • research/out/20260929-data-trust/demo.py
  • research/out/20260929-data-trust/demo_cache/screening_snapshots/2026-09-04-0bc62426f47926a5aee7ea2b3caed3395c368a23e0091ae3e396a794a7116910.json
  • research/out/20260929-data-trust/demo_cache/screening_snapshots/2026-09-04-e9b5d7f1059156212ba6e2dc60e09256d042e9288e19017ffe0a513722dcb11a.json
  • research/out/20260929-data-trust/demo_cache/selection.json
  • research/out/20260929-data-trust/production_path_demo.json
  • research/out/20260929-direction-mirror/METHOD.md
  • research/out/20260929-direction-mirror/REPORT.md
  • research/out/20260929-direction-mirror/check.py
  • research/out/20260929-direction-mirror/summary.json
  • research/out/20260929-direction-mirror/verification.json
  • research/out/20260929-direction-mirror/verify.py
  • research/out/20260929-mscore-validation/METHOD.md
  • research/out/20260929-mscore-validation/REPORT.md
  • research/out/20260929-mscore-validation/evaluate.py
  • research/out/20260929-mscore-validation/external_sources.json
  • research/out/20260929-mscore-validation/fetch_financials.py
  • research/out/20260929-mscore-validation/financial_coverage.json
  • research/out/20260929-mscore-validation/financials.json
  • research/out/20260929-mscore-validation/prepare.py
  • research/out/20260929-mscore-validation/source_manifest.json
  • research/out/20260929-mscore-validation/summary.json
  • research/out/20260929-mscore-validation/verification.json
  • research/out/20260929-mscore-validation/verify.py
  • research/out/20260929-mscore-validation/yahoo_FAST.json
  • research/out/20260929-mscore-validation/yahoo_GPN.json
  • research/out/20260929-mscore-validation/yahoo_SHW.json
  • research/out/20260929-screen-alternatives/METHOD.md
  • research/out/20260929-screen-alternatives/REPORT.md
  • research/out/20260929-screen-alternatives/compare.py
  • research/out/20260929-screen-alternatives/summary.json
  • research/out/20260929-screen-review/METHOD.md
  • research/out/20260929-screen-review/REVIEW.md
  • research/out/20260929-screen-review/audit.py
  • research/out/20260929-screen-review/bad_examples.json
  • research/out/20260929-screen-review/summary.json
  • research/out/20260929-short-formula-search/FORMULAS.md
  • research/out/20260929-short-formula-search/METHOD.md
  • research/out/20260929-short-formula-search/REPORT.md
  • research/out/20260929-short-formula-search/SOURCES.md
  • research/out/20260929-short-formula-search/code_manifest.json
  • research/out/20260929-short-formula-search/compare.py
  • research/out/20260929-short-formula-search/external_check.py
  • research/out/20260929-short-formula-search/external_prices.json
  • research/out/20260929-short-formula-search/external_sources.json
  • research/out/20260929-short-formula-search/external_summary.json
  • research/out/20260929-short-formula-search/financial_coverage.json
  • research/out/20260929-short-formula-search/financials.json
  • research/out/20260929-short-formula-search/prepare.py
  • research/out/20260929-short-formula-search/semantic_audit.json
  • research/out/20260929-short-formula-search/source_manifest.json
  • research/out/20260929-short-formula-search/summary.json
  • research/out/20260929-short-formula-search/verification.json
  • research/out/20260929-short-formula-search/verify.py
  • research/out/20260929-short-formula-search/yahoo_ADM.json
  • research/out/20260929-short-formula-search/yahoo_CVNA.json
  • research/out/20260929-short-formula-search/yahoo_SPGI.json
  • research/out/20260929-short-formula-search/yahoo_W.json
  • research/out/20260929-short-screen/METHOD.md
  • research/out/20260929-short-screen/REPORT.md
  • research/out/20260929-short-screen/compare.py
  • research/out/20260929-short-screen/summary.json
  • research/out/20260929-short-screen/verification.json
  • research/out/20260929-short-screen/verify.py
  • research/out/20261004-literature-candidates/PREREGISTRATION.md
  • research/out/20261004-literature-candidates/REPORT.md
  • research/out/20261004-literature-candidates/lit-high-proximity/acceptance.json
  • research/out/20261004-literature-candidates/lit-high-proximity/acceptance_before_S61.json
  • research/out/20261004-literature-candidates/lit-high-proximity/correlation.json
  • research/out/20261004-literature-candidates/lit-high-proximity/formula.md
  • research/out/20261004-literature-candidates/lit-high-proximity/portfolio.json
  • research/out/20261004-literature-candidates/lit-high-proximity/report.md
  • research/out/20261004-literature-candidates/lit-high-proximity/robustness.json
  • research/out/20261004-literature-candidates/lit-liquidity/acceptance.json
  • research/out/20261004-literature-candidates/lit-liquidity/correlation.json
  • research/out/20261004-literature-candidates/lit-liquidity/formula.md
  • research/out/20261004-literature-candidates/lit-liquidity/portfolio.json
  • research/out/20261004-literature-candidates/lit-liquidity/report.md
  • research/out/20261004-literature-candidates/lit-liquidity/robustness.json
  • research/out/20261004-literature-candidates/lit-reversal/acceptance.json
  • research/out/20261004-literature-candidates/lit-reversal/correlation.json
  • research/out/20261004-literature-candidates/lit-reversal/formula.md
  • research/out/20261004-literature-candidates/lit-reversal/portfolio.json
  • research/out/20261004-literature-candidates/lit-reversal/report.md
  • research/out/20261004-literature-candidates/lit-reversal/robustness.json
  • research/out/20261004-quality-factor/PREREGISTRATION.md
  • research/out/20261004-quality-factor/REPORT.md
  • research/out/20261004-quality-factor/fetch_sec.py
  • research/out/20261004-quality-factor/lit-gross-profitability/acceptance.json
  • research/out/20261004-quality-factor/lit-gross-profitability/correlation.json
  • research/out/20261004-quality-factor/lit-gross-profitability/formula.md
  • research/out/20261004-quality-factor/lit-gross-profitability/portfolio.json
  • research/out/20261004-quality-factor/lit-gross-profitability/report.md
  • research/out/20261004-quality-factor/lit-gross-profitability/robustness.json
  • research/out/20261004-quality-factor/lit-quality-composite/acceptance.json
  • research/out/20261004-quality-factor/lit-quality-composite/correlation.json
  • research/out/20261004-quality-factor/lit-quality-composite/formula.md
  • research/out/20261004-quality-factor/lit-quality-composite/portfolio.json
  • research/out/20261004-quality-factor/lit-quality-composite/report.md
  • research/out/20261004-quality-factor/lit-quality-composite/robustness.json
  • research/out/20261004-quality-factor/sec_manifest.json
  • research/out/20261004-screen-diagnosis/METHOD.md
  • research/out/20261004-screen-diagnosis/REPORT.md
  • research/out/20261004-screen-diagnosis/diagnose.py
  • research/out/20261004-screen-diagnosis/fill_test.py
  • research/out/20261004-screen-diagnosis/fill_test_summary.json
  • research/out/20261004-screen-diagnosis/parity.py
  • research/out/20261004-screen-diagnosis/stock_only.py
  • research/out/20261004-screen-diagnosis/stock_only_summary.json
  • research/out/20261004-screen-diagnosis/stock_symbols.txt
  • research/out/20261004-screen-diagnosis/summary.json
  • research/out/20261004-short-search/PREREGISTRATION.md
  • research/out/20261004-short-search/REPORT.md
  • research/out/20261004-short-search/selection.json
  • research/out/20261004-short-three-periods/PREREGISTRATION.md
  • research/out/20261004-short-three-periods/REPORT.md
  • research/out/20261004-short-three-periods/selection.json
  • research/plan.md
  • research/process.md
  • research/src/candidates.py
  • research/src/common.py
  • research/src/fundamentals.py
  • research/src/measure.py
  • research/src/panel.py
  • research/src/study.py
  • research/src/test_harness.py
  • research/src/tools/benchmark_check.py
  • research/src/tools/bulk_fetch.py
  • research/src/tools/diversification_test.py
  • research/src/tools/drawdown_test.py
  • research/src/tools/exclusion_screen.py
  • research/src/tools/factor_census.py
  • research/src/tools/frontier.py
  • research/src/tools/llm_budget.py
  • research/src/tools/risk_signal_round.py
  • research/src/tools/short_round.py
  • research/src/tools/stability_screen.py
  • research/src/tools/survivorship_probe.py
  • tests/test_exclusion_screening.py
  • tests/test_execution_long_run_refactor.py
  • tests/test_full_review_phase2_regressions.py
  • tests/test_long_run_ab.py
  • tests/test_phase_c_remediation.py
  • tests/test_phase_c_screening.py
  • tests/test_phase_d_integration_fixes.py
  • tests/test_phase_d_long_run.py
  • tests/test_screening_data_quality.py
  • tests/test_screening_shared_budget.py
  • tradingagents/agents/managers/risk_manager.py
  • tradingagents/default_config.py
  • tradingagents/long_run.py
  • tradingagents/long_run_support/config.py
  • tradingagents/long_run_support/preflight.py
  • tradingagents/long_run_support/symbols.py
  • tradingagents/screening/context.py
  • tradingagents/screening/llm.py
  • tradingagents/screening/metrics.py
  • tradingagents/screening/pipeline.py
  • tradingagents/screening/policy.py
  • tradingagents/screening/quality.py
  • tradingagents/screening/selection_store.py
  • tradingagents/screening/universe.py

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ihsieh31
ihsieh31 merged commit b0a7ec8 into main Oct 4, 2026
3 checks passed
@ihsieh31
ihsieh31 deleted the research/screen-diagnosis-formula-search branch October 4, 2026 08:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant