diff --git a/backtesting/backtesting.py b/backtesting/backtesting.py index 7d1a3041..85a4aa76 100644 --- a/backtesting/backtesting.py +++ b/backtesting/backtesting.py @@ -945,6 +945,7 @@ def _round_timedelta(value, _period=_data_period(df)): s.loc['Avg. Trade [%]'] = mean_return * 100 s.loc['Max. Trade Duration'] = _round_timedelta(durations.max()) s.loc['Avg. Trade Duration'] = _round_timedelta(durations.mean()) + s.loc['Profit Factor'] = returns[returns > 0].sum() / (abs(returns[returns < 0].sum()) or np.nan) # noqa: E501 s.loc['Expectancy [%]'] = ((returns[returns > 0].mean() * win_rate - returns[returns < 0].mean() * (100 - win_rate))) pl = pl.dropna() diff --git a/backtesting/test/_test.py b/backtesting/test/_test.py index 7e8ebc28..3cb8d794 100644 --- a/backtesting/test/_test.py +++ b/backtesting/test/_test.py @@ -256,6 +256,7 @@ def test_compute_stats(self): 'Max. Drawdown Duration': pd.Timedelta('584 days 00:00:00'), 'Max. Drawdown [%]': -48.15069053929621, 'Max. Trade Duration': pd.Timedelta('183 days 00:00:00'), + 'Profit Factor': 2.060450149412349, 'Return [%]': 426.2429346696951, 'SQN': 0.91553210127173, 'Sharpe Ratio': 0.23169782960690408,