Mined from book/ on the 'book' branch (HEAD 436692a). 11 queued runs,
each = hypothesis + one-variable change vs the exp-26 reference + acceptance
metric, per the ch.02 isolation/falsification discipline.
- workflows/: 5 runnable config-only YAMLs (Q01 M2 repro, Q02 seed10, Q03 topk20,
Q04 label10d, Q05 label22d) byte-derived from the exp-26 reference
- designs/: 6 design docs needing custom strategy modules or tool-only A/B
(Q06 Kelly, Q07 weekly rebalance, Q08 risk-limit A/B, Q09 long-short,
Q10 HMM overlay, Q11 standalone reversal)
1.5 KiB
1.5 KiB
QUEUE-09 — Long-short construction: capture the long-short edge net of costs
Status: QUEUED · Priority: P2 · Effort: custom strategy module + run
Hypothesis (prove)
The compact stochastic signal's long-short spread is the real edge (L/S ann Sharpe 4.54, exp 24; "edge is long-short, not long-only" — chat-ideas.md), but all canonical constructions are long-only (TopkDropout buys topk, drops, holds). A market-neutral book (long topk, short bottom topk) should realize more of the spread net of costs than the long-only book, IF short-side financing + doubled turnover cost stays below the added spread capture.
Change vs exp-26 reference (ONE variable)
- Strategy: long-only TopkDropout (topk 10, n_drop 1) → custom
TopBottomDropoutStrategy(long topk by rank, short bottom topk, equal weight per side, same risk_degree), realized in a workflow with a cost model that includes both sides (open/close cost symmetric). - All signal/config unchanged.
Acceptance
net_IR > 0.21ANDnet_ann_return > +2.13%ANDtotal_costwithin ~2× the reference (doubled side count is the structural cost of this construction).- Watch: benchmark neutrality (SPY beta ≈ 0) as a secondary sanity metric.
Execution prerequisites
- New contrib module
tac_qlib/contrib/strategy/top_bottom.py(TopBottomDropoutStrategysubclassingBaseSignalStrategy), copy to the venv site-packages copy. - Workflow YAML wiring the strategy; PortAnaRecord benchmark SPY.
- Trace + run + snapshot.