stockproject / backtesting /framework /test_2_1_train_test.py
harshisageek's picture
Upload folder using huggingface_hub
8e50444 verified
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()