diff --git a/examples/workflow_with_highfreq_backtest.py b/examples/workflow_with_highfreq_backtest.py index 796dc21bb..682ec7a7f 100644 --- a/examples/workflow_with_highfreq_backtest.py +++ b/examples/workflow_with_highfreq_backtest.py @@ -39,10 +39,10 @@ if __name__ == "__main__": # train model ################################### data_handler_config = { - "start_time": "2008-01-01", - "end_time": "2020-08-01", - "fit_start_time": "2008-01-01", - "fit_end_time": "2014-12-31", + "start_time": "2012-01-01", + "end_time": "2019-06-01", + "fit_start_time": "2012-01-01", + "fit_end_time": "2017-04-30", "instruments": market, } @@ -72,9 +72,9 @@ if __name__ == "__main__": "kwargs": data_handler_config, }, "segments": { - "train": ("2008-01-01", "2014-12-31"), - "valid": ("2015-01-01", "2016-12-31"), - "test": ("2017-01-01", "2020-08-01"), + "train": ("2012-01-01", "2017-04-30"), + "valid": ("2017-05-01", "2019-04-30"), + "test": ("2019-05-01", "2019-06-01"), }, }, }, @@ -89,7 +89,7 @@ if __name__ == "__main__": 'device': 'cpu', }, "paths": { - "raw_dir": "/shared_data/data/v-xiabi/highfreq-exe/data/backtest_test_multi/", + "raw_dir": "/shared_data/data/v-xiabi/highfreq-exe/data/backtest_test_multi", "feature_conf": "/shared_data/data/v-xiabi/highfreq-exe/code/rl4execution/config/test_feature_all1620.json", }, "env_conf": { diff --git a/qlib/contrib/backtest/backtest.py b/qlib/contrib/backtest/backtest.py index 20512ece4..c14699bac 100644 --- a/qlib/contrib/backtest/backtest.py +++ b/qlib/contrib/backtest/backtest.py @@ -123,9 +123,6 @@ def backtest(pred, strategy, trade_exchange, shift, verbose, account, benchmark, return report_df, positions def backtest_highfreq(pred, executor, trade_exchange, shift, order_set, verbose, account, benchmark): - if get_level_index(pred, level="datetime") == 1: - pred = pred.swaplevel().sort_index() - trade_account_highfreq = Account(init_cash=account) _pred_dates = pred.index.get_level_values(level="datetime") predict_dates = D.calendar(start_time=_pred_dates.min(), end_time=_pred_dates.max()) @@ -149,9 +146,16 @@ def backtest_highfreq(pred, executor, trade_exchange, shift, order_set, verbose, if verbose: LOG.info("[I {:%Y-%m-%d}]: highfreq trade begin.".format(trade_date)) ## TODO: kanren group need to merge code here - trade_info = executor.execute(trade_account, order_list, trade_date) - update_account(trade_account_highfreq, trade_info, trade_exchange, trade_date) + print(trade_account, order_list, trade_date) + executor.execute(trade_account, order_list, trade_date) + for trade_account, order_list, trade_date in order_set: + trade_info = executor.get_res() + print(trade_info) + update_account(trade_account_highfreq, trade_info, trade_exchange, trade_date) + if verbose: + LOG.info("[I {:%Y-%m-%d}]: highfreq trade end.".format(trade_date)) + executor.close() report_df = trade_account_highfreq.report.generate_report_dataframe() report_df["bench"] = bench positions = trade_account_highfreq.get_positions() diff --git a/qlib/contrib/evaluate.py b/qlib/contrib/evaluate.py index b63ff3746..7232c3854 100644 --- a/qlib/contrib/evaluate.py +++ b/qlib/contrib/evaluate.py @@ -271,8 +271,6 @@ def backtest(pred, account=1e9, shift=1, benchmark="SH000905", verbose=True, **k spec = inspect.getfullargspec(get_exchange) ex_args = {k: v for k, v in kwargs.items() if k in spec.args} trade_exchange = get_exchange(pred, **ex_args) - - if kwargs.get('highfreq_executor', False): order_set = backtest_func( pred=pred,