2026-02-21
change_pct = (predicted_close - base_price) / base_price * 100
if change_pct >= 0:
direction = 1 # UP
else:
direction = -1 # DOWN
base_price = 基準足(15:45)の終値。predicted_closeがbase_priceより低ければDOWNになる。
actual_direction = determine_direction(
actual_open, actual_high, actual_low, actual_close,
base_price=actual_open, # 実績は始値が基準
atr=atr
)
base_price = ターゲット足の始値。actual_close vs actual_openで判定。
actual_direction = 1 if actual_close > actual_open else -1
こちらもactual_close vs actual_openで判定。
| 基準 | 判定ロジック | |
|---|---|---|
| 予測方向 | base_price = 基準足のclose | predicted_close vs 基準足close |
| 実績方向 | actual_open = ターゲット足の始値 | actual_close vs ターゲット足open |
1本先の予測ではbase_price ≈ target_openなので差は小さいが、 複数本先の予測(15Mで3本先=15:45→16:30)ではbase_priceとtarget_openの乖離が大きくなり、 ローソク足は陽線なのに「下げ予測」と判定されるケースが発生する。
予測方向の判定基準を predicted_close vs predicted_open に変更する。
# Before (line 157-164):
if predicted_close is not None:
change_pct = (predicted_close - base_price) / base_price * 100
# After:
if predicted_close is not None:
ref_price = predicted_open if predicted_open is not None else base_price
change_pct = (predicted_close - ref_price) / ref_price * 100
→ predicted_open 引数の追加が必要。
# predicted_openも渡す
direction, dir_confidence, dir_conditions = predict_direction_hourly(
df, target_dt,
predicted_close=predictions['target_close'],
predicted_high=predictions['target_high'],
predicted_low=predictions['target_low'],
predicted_open=predictions['target_open'], # 追加
base_price=latest_close,
atr=atr_val
)
同様に predicted_open を渡す。
横ばい判定の change_pct も同様に predicted_open ベースに変更する。
crypto/management/commands/_predict_ohlc/direction_prediction.pycrypto/management/commands/predict_ohlc.py高(ユーザー向け表示の信頼性に直結)
2026-02-22
direction_prediction.py: predicted_open 引数を追加、predicted_close vs predicted_openで判定するよう変更predict_ohlc.py: リアルタイム予測・バックテストの両方で predicted_open を渡すよう修正predict_direction_daily() も同様に修正済みchange_pct も predicted_open ベースに変更| 項目 | 結果 |
|---|---|
| 方向的中率 | 87.5% (703/803) |
| 目標的中率 | 96.3% (750/779) |
| Close MAE | 0.147% |
| 上昇予測的中率 | 88.7% |
| 下落予測的中率 | 88.9% |
| Lowバイアス | +0.11% → -0.002%(解消) |