import time import kis_rust_core def test_rust_tail(): print(f"Loaded Rust Module: {kis_rust_core}") # 1. 파라미터 셋업 params = kis_rust_core.TailParams( rsi_limit=45.0, drop_pct_min=3.0, tail_recovery_min=1.5, target_pct=2.0, stop_loss_pct=3.0 ) print(f"TailParams initialized: {params.rsi_limit}, {params.target_pct}% target") # 2. 더미 캔들 100만 개 생성 (부하 테스트) print("Generating 1,000,000 dummy candles in Python...") start_time = time.time() candles = [] # 단순 패턴: RSI 30, 크게 떨어지고(-4%), 반등(2%)하는 캔들 1개와 나머지 일반 캔들 for i in range(1_000_000): if i % 1000 == 0: # 진입 신호 조건 부합하는 캔들 c = kis_rust_core.CandleData(f"2026-09-02 {i}", 1000.0, 1050.0, 960.0, 1020.0, 50000.0, 25.0) elif i % 1000 == 5: # 청산(Target) 달성하는 캔들 (고가 1100 -> 10% 상승) c = kis_rust_core.CandleData(f"2026-09-02 {i}", 1020.0, 1100.0, 1010.0, 1080.0, 10000.0, 45.0) else: # 평범한 캔들 c = kis_rust_core.CandleData(f"2026-09-02 {i}", 1000.0, 1010.0, 990.0, 1000.0, 1000.0, 50.0) candles.append(c) print(f"Generated 1,000,000 objects in {time.time() - start_time:.3f}s") # 3. Rust 엔진으로 던지기 print("Running Rust fast tail backtest...") start_time = time.time() pnl = kis_rust_core.run_tail_backtest_fast(params, candles) elapsed = time.time() - start_time print(f"=====================================") print(f"🦀 RUST ENGINE RESULT:") print(f"Total PnL: {pnl:.2f} ₩") print(f"Elapsed Time: {elapsed:.4f} seconds for 1M candles!") print(f"=====================================") if __name__ == "__main__": test_rust_tail()