11. Backtester 戦略バックテスト エンジン

Backtester クラスは、オペレーター オブジェクトのバックテストに使用されます。

このクラスの属性には、バックテストの計算に必要なすべてのパラメーターと、バックテスト中に生成された結果データが含まれます。これらの結果データは ndarray として保存され、オブジェクトの存続期間中保持され、繰り返し更新できます。

Backtester クラスはオペレーター オブジェクトに依存して取引シグナルを生成し、取引を実行するため、このクラスはオペレーター オブジェクトが作成された後にのみインスタンス化できます。一般的な使用方法は次のとおりです。

operator = Operator( ... )  # 创建Operator对象
backtested = Operator.backtest( signal_count=100, share_count=10, **kwargs)  # 创建Backtester对象
# get backtest raw results:
backtested.cash_investment_array
backtested.own_cashes
...
# get backtest results as DataFrame:
result_df = backtested.value_records()
trade_log_df = backtested.trade_logs()
trade_summary_df = backtested.trade_summary()
class qteasy.backtest.Backtester(op: Operator, shares: list[str], cash_plan: CashPlan, cash_investment_array: ndarray, cash_inflation_array: ndarray, delivery_day_indicators: ndarray, cost_params: ndarray, signal_parsing_params: dict, trading_moq_params: dict, trading_delivery_params: dict, trade_price_data: ndarray, benchmark_data: Optional[Union[DataFrame, Series]] = None, evaluate_price_data: Optional[DataFrame] = None, enable_tracing: bool = False, logger: Optional[Logger] = None)[ソース]

Backtester クラスは、オペレーター オブジェクトのバックテストに使用されます。このクラスの属性には、バックテストの計算に必要なすべてのパラメーターと、バックテスト中に生成された結果データが含まれます。これらの結果データは ndarray として保存され、オブジェクトの存続期間中保持され、繰り返し更新できます。

Backtester クラスはオペレーター オブジェクトに依存して取引シグナルを生成し、取引を実行するため、このクラスはオペレーター オブジェクトが作成された後にのみインスタンス化できます。一般的な使用方法は次のとおりです。

operator = Operator( ... )  # 创建Operator对象
backtested = Operator.backtest( signal_count=100, share_count=10, **kwargs)  # 创建Backtester对象
# get backtest raw results:
backtested.cash_investment_array
backtested.own_cashes
...
# get backtest results as DataFrame:
result_df = backtested.value_records()
trade_log_df = backtested.trade_logs()
trade_summary_df = backtested.trade_summary()
op

取引シグナルの生成と取引の実行のためのロジックを含む取引操作オブジェクト

Type:

Operator

clear_backtest_buffers()[ソース]

バックテストを再計算できるように、キャッシュされたバックテスト結果データをクリアし、バックテスト結果データを空の配列にリセットします。

戻り値の型:

None

evaluate_result(indicators: str) dict[ソース]

取引結果の評価レポートを生成し、self.evaluate_result 属性に保存します。

パラメータ:

indicators (str) -- バックテスト結果の評価指標。詳細については、qteasy.evaluate.evaluate() 関数を参照してください。

generate_trade_logs(save_to_file_path: Optional[str] = None) DataFrame[ソース]

バックテスト結果に基づいて取引ログを生成します。取引ログは、取引期間ごとに次の情報を含む完全な取引記録ファイルです。

各取引期間には、次のように 8 行のデータが含まれます。

  • 0, trade signal: 各銘柄の当期の取引シグナル

  • 1, price: 各銘柄の当期間の取引価格

  • 2, traded amounts: 各銘柄の当期間の取引数量。取引がない場合は0

  • 3, cash changed: 各銘柄の当期現金変動額。買いの場合はマイナス、売りの場合はプラス

  • 4, trade cost: 各銘柄の当期間の取引コスト

  • 5, own amounts: 各銘柄の期末保有数量

  • 6, available amounts: 各在庫の期末利用可能数量

  • 7, summary: 今期の各株式のポジション価値。概要データ (今期末保有現金、利用可能な現金、総資産価値) も含まれます。

上記の情報は DataFrame の形式で保存されます。行インデックスは MultiIndex です。第 1 レベルと第 2 レベルは時間/戦略グループ インデックスで、第 3 レベルは上記の 8 つのデータ カテゴリです。トレードログファイルはCSV形式で「trade_log.csv」というファイル名で保存できます。

パラメータ:

save_to_file_path (str, optional) -- ファイル パスが指定されている場合は、取引ログを CSV ファイルとして保存します。デフォルトは「なし」です。

戻り値:

trade_log -- 取引シミュレーション結果データ

戻り値の型:

pd.DataFrame

generate_trade_summary(share_names: Optional[list[str]] = None, save_to_file_path: Optional[str] = None) DataFrame[ソース]

取引概要テーブル (各取引の重要な情報を含み、より人間が読みやすい方法で表示され、取引のないレコードを除外する、よりコンパクトな取引概要テーブル) を生成します。関数入力 trade_log_df は、関数generate_trade_logs()の戻り値です。

パラメータ:
  • share_names (list[str], optional) -- 取引商品名のリスト。なしの場合は、名前として「N/A」を使用します。

  • save_to_file_path (str, optional) -- ファイル パスが指定されている場合は、取引概要テーブルを CSV ファイルとして保存します。デフォルトは None (ファイルを保存しません) です。

plot_result(plot_title: str, show_positions: bool, buy_sell_markers: bool) None[ソース]

取引結果をチャート形式で生成

パラメータ:
  • plot_title (str) -- チャートのタイトル

  • show_positions (bool) -- 位置間隔情報を表示するかどうか。 True に設定すると、リターン カーブ チャート上の各インターバルのポジション タイプが赤/緑のバンドで表示されます (緑はロング ポジションの保持を示し、赤はショート ポジションの保持を示します)。色が濃いほど位置比率が高くなります。

  • buy_sell_markers (bool) -- リターンカーブチャートに買い/売りポイントを表示するかどうか。 True に設定すると、買い/売りポイントがリターン カーブ チャート上に小さな赤/緑の矢印でマークされます。

戻り値の型:

None

report_result(trade_log: Optional[str] = None, trade_summary: Optional[str] = None) str[ソース]

バックテスト結果の詳細なレポートを生成します。レポートはプレーンテキスト形式であり、print コマンドを使用して印刷できます。

パラメータ:
  • trade_log (str, optional) -- 取引ログ ファイルのストレージ パス。デフォルトは「なし」です。このパスが指定されている場合、取引ログの保存パスがレポートに出力されます。

  • trade_summary (str, optional) -- 取引概要記録ファイルの保存パス。デフォルトは「なし」です。指定されている場合は、取引概要レコードのストレージ パスをレポートに出力します。

戻り値:

report_str -- 印刷用にフォーマットされたバックテスト結果レポート

戻り値の型:

str

run() Backtester[ソース]

バックテスト計算を実行し、バックテスト結果データを生成し、オブジェクトの属性に保存します。

save_complete_values(save_to_file_path: Optional[str] = None) Optional[str][ソース]

complete_values を CSV ファイルとして保存します ( trade_log=True の場合に qt_operator によって呼び出されます)。

パラメータ:

save_to_file_path (str, optional) -- パスを保存します。 None の場合は何も書き込まれません

戻り値:

成功した場合は保存パスを返します。それ以外の場合は None を返します

戻り値の型:

str or None

trace_result_df() Optional[DataFrame][ソース]

バックテスト結果に基づいて取引プロセスの記録を生成します。出力はDataFrame形式です

トレース行と op_signal_index の間の位置合わせは、書き込み時に Operator によって保証されます (update_trace_step はグローバル信号行番号を使用します)。ここでは、戦略によってのみ連結し、インデックスを op_signal_index に設定します。

戻り値:

trade_trace -- 取引シミュレーション プロセス データ

戻り値の型:

pd.DataFrame

trade_result_df() DataFrame[ソース]

バックテスト結果に基づいて資産価値レコードを生成します。出力は DataFrame 形式です。

戻り値:

value_history -- 取引シミュレーション結果データ

戻り値の型:

pd.DataFrame

trade_result_final_value()[ソース]

バックテストの最終値結果を直接かつ迅速に計算して返します。

trade_result_max_drawdown()[ソース]

バックテストの最大ドローダウン結果を直接かつ迅速に計算して返します。

trade_result_volatility()[ソース]

バックテストのボラティリティ結果を直接かつ迅速に計算して返します。