fix: shared trade physics, IQN arg swap, trailing stop, win_rate
- Upgrade compute_tx_cost: add spread_scale_override + Almgren-Chriss
impact_scale = 1+sqrt(delta/max_pos) for both train and eval paths
- Wire training kernel to shared functions: replace 6 inline duplicates
(decode, position map, order_type, tx_cost, capital floor) with
trade_physics.cuh calls
- Fix IQN sample_taus_kernel: args 2-3 were swapped (seed/total)
- Add trailing stop to shared header + backtest kernel
- Fix win_rate test data: 6 instances used percentages (55.0) not
ratios (0.55)
- Static analysis: 65 kernel launches audited (1 mismatch fixed),
90+ buffers verified safe
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>