Update tests to reflect new backtest returns

This commit is contained in:
Matthias 2021-04-30 07:40:07 +02:00
parent f2e182002d
commit 4c00d4496d
3 changed files with 39 additions and 22 deletions

View File

@ -501,13 +501,14 @@ def test_backtest_results(default_conf, fee, mocker, caplog, data) -> None:
# Dummy data as we mock the analyze functions # Dummy data as we mock the analyze functions
data_processed = {pair: frame.copy()} data_processed = {pair: frame.copy()}
min_date, max_date = get_timerange({pair: frame}) min_date, max_date = get_timerange({pair: frame})
results = backtesting.backtest( result = backtesting.backtest(
processed=data_processed, processed=data_processed,
start_date=min_date, start_date=min_date,
end_date=max_date, end_date=max_date,
max_open_trades=10, max_open_trades=10,
) )
results = result['results']
assert len(results) == len(data.trades) assert len(results) == len(data.trades)
assert round(results["profit_ratio"].sum(), 3) == round(data.profit_perc, 3) assert round(results["profit_ratio"].sum(), 3) == round(data.profit_perc, 3)

View File

@ -804,6 +804,12 @@ def test_backtest_start_timerange(default_conf, mocker, caplog, testdatadir):
@pytest.mark.filterwarnings("ignore:deprecated") @pytest.mark.filterwarnings("ignore:deprecated")
def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir): def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir):
default_conf['ask_strategy'].update({
"use_sell_signal": True,
"sell_profit_only": False,
"sell_profit_offset": 0.0,
"ignore_roi_if_buy_signal": False,
})
patch_exchange(mocker) patch_exchange(mocker)
backtestmock = MagicMock(return_value={ backtestmock = MagicMock(return_value={
'results': pd.DataFrame(columns=BT_DATA_COLUMNS), 'results': pd.DataFrame(columns=BT_DATA_COLUMNS),
@ -872,7 +878,12 @@ def test_backtest_start_multi_strat(default_conf, mocker, caplog, testdatadir):
@pytest.mark.filterwarnings("ignore:deprecated") @pytest.mark.filterwarnings("ignore:deprecated")
def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdatadir, capsys): def test_backtest_start_multi_strat_nomock(default_conf, mocker, caplog, testdatadir, capsys):
default_conf['ask_strategy'].update({
"use_sell_signal": True,
"sell_profit_only": False,
"sell_profit_offset": 0.0,
"ignore_roi_if_buy_signal": False,
})
patch_exchange(mocker) patch_exchange(mocker)
result1 = pd.DataFrame({'pair': ['XRP/BTC', 'LTC/BTC'], result1 = pd.DataFrame({'pair': ['XRP/BTC', 'LTC/BTC'],
'profit_ratio': [0.0, 0.0], 'profit_ratio': [0.0, 0.0],

View File

@ -590,26 +590,31 @@ def test_generate_optimizer(mocker, hyperopt_conf) -> None:
'hyperopt_min_trades': 1, 'hyperopt_min_trades': 1,
}) })
backtest_result = pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC", backtest_result = {
"UNITTEST/BTC", "UNITTEST/BTC"], 'results': pd.DataFrame({"pair": ["UNITTEST/BTC", "UNITTEST/BTC",
"profit_ratio": [0.003312, 0.010801, 0.013803, 0.002780], "UNITTEST/BTC", "UNITTEST/BTC"],
"profit_abs": [0.000003, 0.000011, 0.000014, 0.000003], "profit_ratio": [0.003312, 0.010801, 0.013803, 0.002780],
"open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime, "profit_abs": [0.000003, 0.000011, 0.000014, 0.000003],
Arrow(2017, 11, 14, 21, 36, 00).datetime, "open_date": [Arrow(2017, 11, 14, 19, 32, 00).datetime,
Arrow(2017, 11, 14, 22, 12, 00).datetime, Arrow(2017, 11, 14, 21, 36, 00).datetime,
Arrow(2017, 11, 14, 22, 44, 00).datetime], Arrow(2017, 11, 14, 22, 12, 00).datetime,
"close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime, Arrow(2017, 11, 14, 22, 44, 00).datetime],
Arrow(2017, 11, 14, 22, 10, 00).datetime, "close_date": [Arrow(2017, 11, 14, 21, 35, 00).datetime,
Arrow(2017, 11, 14, 22, 43, 00).datetime, Arrow(2017, 11, 14, 22, 10, 00).datetime,
Arrow(2017, 11, 14, 22, 58, 00).datetime], Arrow(2017, 11, 14, 22, 43, 00).datetime,
"open_rate": [0.002543, 0.003003, 0.003089, 0.003214], Arrow(2017, 11, 14, 22, 58, 00).datetime],
"close_rate": [0.002546, 0.003014, 0.003103, 0.003217], "open_rate": [0.002543, 0.003003, 0.003089, 0.003214],
"trade_duration": [123, 34, 31, 14], "close_rate": [0.002546, 0.003014, 0.003103, 0.003217],
"is_open": [False, False, False, True], "trade_duration": [123, 34, 31, 14],
"stake_amount": [0.01, 0.01, 0.01, 0.01], "is_open": [False, False, False, True],
"sell_reason": [SellType.ROI, SellType.STOP_LOSS, "stake_amount": [0.01, 0.01, 0.01, 0.01],
SellType.ROI, SellType.FORCE_SELL] "sell_reason": [SellType.ROI, SellType.STOP_LOSS,
}) SellType.ROI, SellType.FORCE_SELL]
}),
'config': hyperopt_conf,
'locks': [],
'final_balance': 1000,
}
mocker.patch('freqtrade.optimize.hyperopt.Backtesting.backtest', return_value=backtest_result) mocker.patch('freqtrade.optimize.hyperopt.Backtesting.backtest', return_value=backtest_result)
mocker.patch('freqtrade.optimize.hyperopt.get_timerange', mocker.patch('freqtrade.optimize.hyperopt.get_timerange',