2aca789581
Root cause: VBT produces NaN for win_rate, profit_factor, and expectancy when all trades have zero PnL (no winners, no losers). JSON.dumps() rejects NaN/Inf values with 'ValueError: Out of range float values are not JSON compliant'. Fixes: - Add _sanitize_nan(): recursive NaN/Inf → 0.0 for JSON safety - Apply at end of _normalize_vbt_fields (after field fixes) - Fix win_rate check: use 'is None' instead of 'not' (0.0 is falsy) - Previously crashing files now work: grid_mm_BTC_4h_100b, hurst_vpin_BTC_1m_100b, etc.