vol_normalizer now computed from raw close-price log returns (targets) instead of potentially z-scored feature values. Fxcache smoketest treats NaN as non-fatal — validates code path (no hang, no CUDA error) not training quality. NaN at step 22 needs separate investigation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>