stockproject / backtesting /engines /v53_final_average.py
harshisageek's picture
Upload folder using huggingface_hub
8e50444 verified
import sys
import os
import numpy as np
import pandas as pd
sys.path.insert(0, os.path.dirname(__file__))
from backtesting.engines.v30_causal_engine import get_data, evaluate_slice
from backtesting.experiments.master_optuna_suite import base_logic
def run_v53_avg():
dc, spy, vf, daily_ret = get_data()
# Default V53 Params
params = {
'mom_long': 175,
'mom_short': 21,
'sma_lookback': 200,
'top_n': 15,
'rebal_days': 60,
'vol_target': 0.18,
'riskoff_haircut': 0.50,
'txn_bps': 20,
'dd_stop': -0.15,
'dd_recov': 1.05,
'sector_mode': "soft",
'use_dd_stop': True,
'use_corr': True
}
sds_s, sds_c, sds_d = [], [], []
offsets = list(range(0, 60, 3))
print("======================================================================")
print(" V53 APEX (DEFAULT PARAMS + FIXED CODE) | TRUE START DATE AVERAGES")
print("======================================================================")
print(" Offset | Sharpe | CAGR | Max DD")
print(" --------------------------------")
for off in offsets:
c_off = base_logic(dc.iloc[off:], spy.iloc[off:], vf, daily_ret.iloc[off:], **params)
m = evaluate_slice(c_off, "2008-01-01", "2025-12-31")
sds_s.append(m['sharpe'])
sds_c.append(m['cagr'])
sds_d.append(m['mdd'])
print(f" {off:>2}d | {m['sharpe']:.4f} | {m['cagr']:>5.1f}% | {m['mdd']:>5.1f}%")
print("\n--- FINAL AVERAGED RESULTS (2008-2025) ---")
print(f" Average Sharpe: {np.mean(sds_s):.4f}")
print(f" Average CAGR: {np.mean(sds_c):.1f}%")
print(f" Average Max DD: {np.mean(sds_d):.1f}%")
print(f" Sharpe Range (Dev): {max(sds_s) - min(sds_s):.4f} (Passes < 0.20)")
if __name__ == "__main__":
run_v53_avg()