# instinct: yfinanceは未確定の当日行をOHLC=NaN(Volumeのみ)で返すことがある。dropna漏れだとシグナル系が「待機」のまま永遠に沈黙する
# yfinance最終行NaNでシグナルbotが沈黙する
## 症状
- 日足`yf.download()`の最終行がOHLC全てNaN・Volumeだけ値が入る(未確定の当日行)
- `close > don_hi` などのNaN比較が常にFalse → **エラーも例外も出ずに「シグナルなし(待機)」を出力し続ける**
- paper_bot_v2が5日間シグナル0件だった真因(2026-06-10発見・vvv-bots#336)
## 対策
- ロード直後に `df.dropna(subset=["Open","High","Low","Close"])` を必ず入れる
- 長さチェック(`len(df) < N`)はdropna**後**に行う
- 検証方法: `latest_signal()`の中間値(close/sma/don_hi)をprintしてNaNが出ないこと、
過去2年でシグナル条件が現実的な回数(月0.5〜0.8回)成立することの2点で裏取り
## 教訓
- **沈黙する失敗(エラーなしの恒久False)はログでは気付けない**。「N日間イベント0件」は
正常な低頻度かバグかを必ず中間値で切り分ける
- trade-backtest/data_adapter.py の load_yfinance はdropna済み(v1無傷)。新規データローダーを
書くときは data_adapter を再利用するか同じdropnaを入れる
---
(migrated from local memory/instinct_yfinance_nan_last_row_signal_silence.md)
instinct: yfinanceは未確定の当日行をOHLC=NaN(Volumeのみ)で返すことがある。dropna漏れだとシグナル系が「待機」のまま永遠に沈黙する