cache_dir: data/raw
outputs_dir: data/outputs
min_delay_seconds: 0.75
max_workers: 8
universe:
- GME
- AAPL
- TSLA
- MSFT
# Philosophy baseline — deep contrarian value (see README "Philosophy").
# bt_optimizer --update_config overwrites these; the in-sample-optimal set it
# last wrote (value 8.6 / health 37.5 / sentiment 23.5 / quality 30.4) is kept
# below for reference. Optimized weights answer "what worked in-sample";
# these state the thesis.
scoring_weights:
  value: 35
  financial_health: 25
  sentiment_crowding: 25
  quality_momentum: 15
scoring_weights_optimized_ref:
  value: 8.6
  financial_health: 37.5
  sentiment_crowding: 23.5
  quality_momentum: 30.4
guardrails:
  distress_cap: 60
  dilution_penalty_threshold: 0.3
  dilution_penalty_points: 15
universe_csv: us_universe.csv
results_jsonl: raw_rows.jsonl
checkpoint_every: 50
burry:
  results_jsonl: burry_rows.jsonl
  scoring_weights:
    quality: 35
    capital: 25
    safety: 25
    value: 15
buffett:
  results_jsonl: buffett_rows.jsonl
  sec_dir: data/sec
  scoring_weights:
    quality: 35
    cash: 20
    moat: 15
    balance: 15
    valuation: 15
  gates:
    min_years: 4
    min_fcf_positive: 0.6
    max_net_debt_ebitda: 4.0
    max_share_cagr: 0.05
    min_market_cap: 1000000000
    exclude_financials: true
kulamagi:
  results_jsonl: kulamagi_rows.jsonl
  min_dollar_volume: 20000000
  scoring_weights:
    momentum: 40
    structure: 35
    quality: 15
    liquidity: 10
_optimized_top_n: 15
_optimized_train_sharpe: 1.328
_optimized_test_sharpe: 0.394
