Run backtest
(
self,
data: pd.DataFrame,
code: Union[str, List[str]],
strategy: BaseStrategy,
signal: BaseSignal,
strategy_kwargs: Dict = STRATEGY_PARAMS,
commission_kwargs: Dict = COMMISSION,
)
| 23 | |
| 24 | |
| 25 | async def backtest( |
| 26 | self, |
| 27 | data: pd.DataFrame, |
| 28 | code: Union[str, List[str]], |
| 29 | strategy: BaseStrategy, |
| 30 | signal: BaseSignal, |
| 31 | strategy_kwargs: Dict = STRATEGY_PARAMS, |
| 32 | commission_kwargs: Dict = COMMISSION, |
| 33 | ) -> Any: |
| 34 | """Run backtest""" |
| 35 | combo_data = signal.fit(data) |
| 36 | result = backtest_strategy( |
| 37 | data=combo_data, |
| 38 | code=code, |
| 39 | strategy=strategy, |
| 40 | strategy_kwargs=strategy_kwargs, |
| 41 | commission_kwargs=commission_kwargs, |
| 42 | ) |
| 43 | |
| 44 | return { |
| 45 | "sharpe_ratio": get_strategy_sharpe_ratio(result.cerebro), |
| 46 | "cumulative_return": get_strategy_cumulative_return(result.cerebro).iloc[-1], |
| 47 | "max_drawdown": get_strategy_maxdrawdown(result.cerebro), |
| 48 | } |
| 49 | |
| 50 | |
| 51 | class FundingNoiseArea(BaseSignal): |
nothing calls this directly
no test coverage detected