Intraday Trading: Model&Strategy Testing

Introduction

Intraday Trading is designed to test models and strategies, which help users to check the performance of a custom model/strategy.

Note

Intraday Trading uses Order Executor to trade and execute orders output by Interday Strategy. Order Executor is a component in Qlib Framework, which can execute orders. Vwap Executor and Close Executor is supported by Qlib now. In the future, Qlib will support HighFreq Executor also.

Example

Users need to generate a prediction score`(a pandas DataFrame) with MultiIndex<instrument, datetime> and a `score column. And users need to assign a strategy used in backtest, if strategy is not assigned, a TopkDropoutStrategy strategy with (topk=50, n_drop=5, risk_degree=0.95, limit_threshold=0.0095) will be used. If Strategy module is not users’ interested part, TopkDropoutStrategy is enough.

The simple example of the default strategy is as follows.

from qlib.contrib.evaluate import backtest
# pred_score is the prediction score
report, positions = backtest(pred_score, topk=50, n_drop=0.5, verbose=False, limit_threshold=0.0095)

To know more about backtesting with a specific Strategy, please refer to Strategy.

To know more about the prediction score pred_score output by Interday Model, please refer to Interday Model: Model Training & Prediction.

Prediction Score

The prediction score is a pandas DataFrame. Its index is <instrument(str), datetime(pd.Timestamp)> and it must contains a score column.

A prediction sample is shown as follows.

instrument datetime   score
SH600000   2019-01-04 -0.505488
SZ002531   2019-01-04 -0.320391
SZ000999   2019-01-04  0.583808
SZ300569   2019-01-04  0.819628
SZ001696   2019-01-04 -0.137140
...                         ...
SZ000996   2019-04-30 -1.027618
SH603127   2019-04-30  0.225677
SH603126   2019-04-30  0.462443
SH603133   2019-04-30 -0.302460
SZ300760   2019-04-30 -0.126383

Interday Model module can make predictions, please refer to Interday Model: Model Training & Prediction.

Backtest Result

The backtest results are in the following form:

                                                  risk
excess_return_without_cost mean               0.000605
                           std                0.005481
                           annualized_return  0.152373
                           information_ratio  1.751319
                           max_drawdown      -0.059055
excess_return_with_cost    mean               0.000410
                           std                0.005478
                           annualized_return  0.103265
                           information_ratio  1.187411
                           max_drawdown      -0.075024
  • excess_return_without_cost
    • mean
      Mean value of the CAR (cumulative abnormal return) without cost
    • std
      The Standard Deviation of CAR (cumulative abnormal return) without cost.
    • annualized_return
      The Annualized Rate of CAR (cumulative abnormal return) without cost.
    • information_ratio
      The Information Ratio without cost. please refer to Information Ratio – IR.
    • max_drawdown
      The Maximum Drawdown of CAR (cumulative abnormal return) without cost, please refer to Maximum Drawdown (MDD).
  • excess_return_with_cost
    • mean
      Mean value of the CAR (cumulative abnormal return) series with cost
    • std
      The Standard Deviation of CAR (cumulative abnormal return) series with cost.
    • annualized_return
      The Annualized Rate of CAR (cumulative abnormal return) with cost.
    • information_ratio
      The Information Ratio with cost. please refer to Information Ratio – IR.
    • max_drawdown
      The Maximum Drawdown of CAR (cumulative abnormal return) with cost, please refer to Maximum Drawdown (MDD).

Reference

To know more about Intraday Trading, please refer to Intraday Trading.