MCPcopy Index your code
hub / github.com/SkyworkAI/DeepResearchAgent / backtest_strategy

Function backtest_strategy

src/environment/quickbacktest/backtest.py:51–87  ·  view source on GitHub ↗
(
    data: pd.DataFrame,
    code: str,
    strategy: bt.Strategy,
    strategy_kwargs: Dict = {},
    commission_kwargs: Dict = {},
)

Source from the content-addressed store, hash-verified

49
50
51def backtest_strategy(
52 data: pd.DataFrame,
53 code: str,
54 strategy: bt.Strategy,
55 strategy_kwargs: Dict = {},
56 commission_kwargs: Dict = {},
57):
58 commission_kwargs: Dict = update_params(COMMISSION, commission_kwargs)
59 strategy_kwargs: Dict = update_params(STRATEGY_PARAMS, strategy_kwargs)
60 assert commission_kwargs["leverage"] == strategy_kwargs["leverage"], "leverage must be same in both strategy and commission settings"
61
62 if isinstance(code, str):
63
64 df: pd.DataFrame = data.query("code == @code").copy()
65
66 elif isinstance(code, list):
67
68 df: pd.DataFrame = data.query("code in @code").copy()
69 strategy_kwargs["hold_num"] = len(code)
70
71 df: pd.DataFrame = df.dropna(subset=["close","factor1","factor2","signal","vwap"])
72 bt_engine = BackTesting(**commission_kwargs)
73 bt_engine.load_data(
74 df,
75 datafeed_cls=CryptoDataFeed,
76 )
77 print(strategy_kwargs)
78 bt_engine.add_strategy(strategy, **strategy_kwargs)
79 bt_engine.cerebro.addanalyzer(
80 bt.analyzers.TimeReturn, _name="time_return", timeframe=bt.TimeFrame.Days
81 )
82 bt_engine.cerebro.addanalyzer(bt.analyzers.TradeAnalyzer, _name='trades')
83 bt_engine.cerebro.addanalyzer(TotalCommission, _name="total_commission")
84
85 result = bt_engine.cerebro.run()[0]
86
87 return result
88
89
90

Callers 4

run_backtestFunction · 0.90
backtestFunction · 0.90
test_backtestFunction · 0.85

Calls 8

load_dataMethod · 0.95
add_strategyMethod · 0.95
update_paramsFunction · 0.85
BackTestingClass · 0.85
printFunction · 0.85
copyMethod · 0.45
queryMethod · 0.45
runMethod · 0.45

Tested by

no test coverage detected