refactor: enhance Optuna backtesting framework, optimize orderbook filtering, and update database management utilities.
This commit is contained in:
45
scratch/print_optuna_results.py
Normal file
45
scratch/print_optuna_results.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import os
|
||||
import glob
|
||||
import json
|
||||
import fnmatch
|
||||
|
||||
results_dir = "kis_trader/backtest/results"
|
||||
strats = ["MOMENTUM", "BREAKOUT", "SCALP", "TAIL"]
|
||||
|
||||
for strat in strats:
|
||||
# Find latest json file for this strategy
|
||||
pattern = f"optuna_{strat.lower()}_fast_20*.json"
|
||||
files = glob.glob(os.path.join(results_dir, pattern))
|
||||
if not files:
|
||||
print(f"[{strat}] No JSON file found.")
|
||||
continue
|
||||
|
||||
latest_file = max(files, key=os.path.getmtime)
|
||||
|
||||
with open(latest_file, 'r', encoding='utf-8') as f:
|
||||
data = json.load(f)
|
||||
|
||||
ob = data.get("orderbook_recommend", {})
|
||||
ws = data.get("whipsaw_recommend", {})
|
||||
|
||||
print(f"=== {strat} ===")
|
||||
if ob.get("ok"):
|
||||
p = ob.get("params", {})
|
||||
s = ob.get("recommended_stats", {})
|
||||
print(f" [호가 필터]")
|
||||
print(f" - 승률: {s.get('win_rate', 0)}% (모수: {s.get('count', 0)}건)")
|
||||
print(f" - PnL 보정치: +{s.get('pnl_diff', 0):,}원")
|
||||
print(f" - 파라미터: max_spread={p.get('orderbook_max_spread_pct')}%, min_ratio={p.get('orderbook_min_bid_ask_ratio')}, ask_mult={p.get('orderbook_entry_ask_max_mult')}, bid_mult={p.get('orderbook_entry_bid_depth_mult')}")
|
||||
else:
|
||||
print(f" [호가 필터] 추천 없음 ({ob.get('reason', 'N/A')})")
|
||||
|
||||
if ws.get("ok"):
|
||||
p = ws.get("params", {})
|
||||
s = ws.get("recommended_stats", {})
|
||||
print(f" [휩쏘 필터]")
|
||||
print(f" - 승률: {s.get('win_rate', 0)}% (모수: {s.get('count', 0)}건)")
|
||||
print(f" - PnL 보정치: +{s.get('pnl_diff', 0):,}원")
|
||||
print(f" - 파라미터: subbar={p.get('whipsaw_subbar_sec')}초, lookback={p.get('whipsaw_lookback_sec')}초, dip_pct={p.get('whipsaw_dip_pct')}")
|
||||
else:
|
||||
print(f" [휩쏘 필터] 추천 없음 ({ws.get('reason', 'N/A')})")
|
||||
print("")
|
||||
Reference in New Issue
Block a user