Spaces:
Running
Running
File size: 1,455 Bytes
8e50444 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import sys, os
import warnings; warnings.filterwarnings('ignore')
from backtesting.framework.config import STRATEGY_NAME, ACTIVE_STRATEGY_FN, ACTIVE_PARAMS, load_data
try:
from v30_causal_engine import evaluate_slice
except ImportError:
from backtesting.v30_causal_engine import evaluate_slice
def run_test_2_1():
print("=" * 80)
print(f" TEST 2.1: STRICT TRAIN/TEST SPLIT - {STRATEGY_NAME}")
print("=" * 80)
dc, spy, vf, daily_ret = load_data()
print("Evaluating Full Strategy...")
c = ACTIVE_STRATEGY_FN(dc, spy, vf, daily_ret, **ACTIVE_PARAMS)
if isinstance(c, dict) and 'curve' in c:
c = c['curve']
m_train = evaluate_slice(c, "2008-01-01", "2018-12-31")
m_test = evaluate_slice(c, "2019-01-01", "2025-12-31")
print(f" Train Sharpe (2008-2018): {m_train['sharpe']:.4f}")
print(f" Test Sharpe (2019-2025): {m_test['sharpe']:.4f}")
diff = m_test['sharpe'] - m_train['sharpe']
print(f" Difference (Out-of-Sample Lift): {diff:+.4f}")
print("-" * 80)
if diff > -0.20:
if diff > 0:
print(" VERDICT: STRONG PASS (Exceptionally robust, test improved)")
else:
print(" VERDICT: PASS (Test decay is within acceptable limits of -0.20)")
else:
print(" VERDICT: FAIL (Likely overfit, test decayed > -0.20)")
if __name__ == "__main__":
run_test_2_1()
|