Skip to content

docs: add ETF cross-asset public-data reproduction (closes #16) - #18

Merged
initial-d merged 1 commit into
initial-d:mainfrom
redamancy231-create:add-etf-public-data-reproduction
Jul 11, 2026
Merged

docs: add ETF cross-asset public-data reproduction (closes #16)#18
initial-d merged 1 commit into
initial-d:mainfrom
redamancy231-create:add-etf-public-data-reproduction

Conversation

@redamancy231-create

Copy link
Copy Markdown
Contributor

Summary

Adds a second public-data mini reproduction case using 20 ETFs across asset classes, as requested in #16.

Changes

File Description
scripts/etf_factor_ic.py Standalone reproduction script (328 lines) — downloads ETF data via yfinance, computes 6 legacy factors, reports one-day forward rank IC
scripts/etf_factor_ic_output.txt Committed output from a clean run for reproducibility verification
docs/public_data_mini_reproduction.md New "Second Case: ETF Cross-Asset Universe" section appended before "Next Useful Reproductions"

ETF Universe

20 ETFs across 5 categories — all 20 downloaded successfully with 100% coverage (1005 dates each):

  • Broad market (4): SPY, QQQ, IWM, DIA
  • Sector (9): XLK, XLF, XLE, XLV, XLY, XLP, XLI, XLB, XLU
  • Fixed income (2): AGG, TLT
  • Cross-asset (2): GLD, HYG
  • International (3): EFA, EEM, FXI

Key Results

Factor Mean IC Observations
original_001 0.0131 985
add_015 -0.0031 985
stock_001 -0.0044 985
old_042 -0.0057 985
best_002 -0.0061 985
best_001 -0.0136 982

As expected, ETF-level IC values are lower than the equity case — stock-oriented legacy factors have reduced cross-sectional discrimination on portfolio-level instruments. This is documented in the Interpretation and Caveats sections.

Verification

  • pytest — all tests pass, no regressions
  • ruff check . — no linting issues
  • ✅ First case content in public_data_mini_reproduction.md is unchanged
  • ✅ Document follows the same format as the existing first case
  • ✅ Disclaimer included: reproducibility/API check only, not a trading recommendation

Technical Note

The script includes a yfinance user-agent compatibility fix (configure_yfinance_user_agent()) for yfinance 0.2.40's obsolete Chrome 39 default header, which was causing HTTP 429 rejections. This workaround is a no-op on versions without that legacy default.


🤖 Generated with Claude Code

Co-Authored-By: Claude noreply@anthropic.com

Add second case study to public_data_mini_reproduction.md using
20 ETFs across asset classes. Computes one-day forward rank IC
for 6 legacy factors. Closes initial-d#16
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.

2 participants