(57)【特許請求の範囲】
【請求項１】
アルゴリズム取引システムによる株の取り引きのシミュレーションを行う約定シミュレーションシステムであって、
過去の市場における株の値動きを示す第１ＴＩＣＫデータの履歴を記憶する第１ＴＩＣＫデータ記憶手段から、前記第１ＴＩＣＫデータを時系列に沿って抽出するステップと、
前記抽出された第１ＴＩＣＫデータに基づいて、前記過去の市場における株の注文状況を示す第１ワーク板を更新するステップと、
前記更新前の第１ワーク板と前記更新後の第１ワーク板とを比較することによって、前記過去の市場において新たに発生した注文の内容を示す第１注文情報を推定するステップと、
前記推定された第１注文情報を、第１注文情報記憶手段に格納するステップと、
前記アルゴリズム取引システムからの注文の内容を示す第２注文情報を受信するステップと、
前記第１注文情報記憶手段から、前記第１注文情報を時系列に沿って抽出するステップと、
前記抽出された第１注文情報及び前記受信した第２注文情報を、仮想的な市場における株の値動きを示す第２ワーク板に時系列に沿って反映することによって、前記第２ワーク板を更新するステップと、
前記更新後の第２ワーク板に基づいて、前記仮想的な市場において注文を約定させるステップと、を実行することを特徴とする約定シミュレーションシステム。
【請求項２】
更に、前記更新前の第２ワーク板と前記更新後の第２ワーク板とを比較することによって、前記仮想的な市場における株の値動きを示す第２ＴＩＣＫデータを作成するステップと、
前記作成された第２ＴＩＣＫデータを相場情報として、前記アルゴリズム取引システムに送信するステップと、を実行することを特徴とする請求項１に記載の約定シミュレーションシステム。
【請求項３】
更に、前記更新前の第２ワーク板と前記更新後の第２ワーク板とを比較することによって、前記仮想的な市場における株の値動きを示す第２ＴＩＣＫデータを作成するステップと、
前記作成された第２ＴＩＣＫデータを、シミュレーション結果記憶手段に格納するステップと、を実行することを特徴とする請求項１に記載の約定シミュレーションシステム。
【請求項４】
更に、前記抽出された第１ＴＩＣＫデータが前記過去の市場における約定に関する情報を含む場合、前記抽出された第１ＴＩＣＫデータに含まれる前記約定に関する情報及び前記更新後の第１ワーク板に基づいて、当該約定の直前の第１ワーク板を作成するステップと、
前記更新前の第１ワーク板と前記作成された約定の直前の第１ワーク板とを比較することによって、前記第１注文情報を推定するステップと、を実行することを特徴とする請求項１に記載の約定シミュレーションシステム。
【請求項５】
更に、前記アルゴリズム取引システムからの注文を前記仮想的な市場において約定させると、当該約定が前記仮想的な市場に与える影響の大きさを示すマーケットインパクトを算出するステップを実行し、
前記第２ワーク板を更新するステップでは、前記算出されたマーケットインパクトを考慮して、前記第２ワーク板を更新することを特徴とする請求項１に記載の約定シミュレーションシステム。
【請求項６】
更に、前記アルゴリズム取引システムからの注文を前記仮想的な市場において約定させると、当該約定が前記仮想的な市場に与える影響の大きさを示すマーケットインパクトを算出するステップを実行し、
前記第２ワーク板を更新するステップでは、
前記抽出された第１注文情報に含まれる株の注文価格に、前記算出されたマーケットインパクトを加算し、
当該抽出された第１注文情報に含まれる株の注文価格を、当該加算結果に変更し、
前記注文価格が変更された第１注文情報に基づいて、前記第２ワーク板を更新することを特徴とする請求項１に記載の約定シミュレーションシステム。
【請求項７】
前記マーケットインパクトは、前記アルゴリズム取引システムからの注文が約定した時からの時間の経過と共に減衰することを特徴とする請求項５又は６に記載の約定シミュレーションシステム。
【請求項８】
更に、前記第２注文情報を正常に受信した場合、前記第２注文情報の受付通知を前記アルゴリズム取引システムに送信するステップを実行することを特徴とする請求項１に記載の約定シミュレーションシステム。
【請求項９】
更に、前記アルゴリズム取引システムからの注文を約定させた場合、当該約定の内容を含む約定通知を前記アルゴリズム取引システムに送信するステップを実行することを特徴とする請求項１に記載の約定シミュレーションシステム。
【請求項１０】
アルゴリズム取引システムに接続される計算機に、
過去の市場における株の値動きを示す第１ＴＩＣＫデータの履歴を記憶する第１ＴＩＣＫデータ記憶手段から、前記第１ＴＩＣＫデータを時系列に沿って抽出するステップと、
前記抽出された第１ＴＩＣＫデータに基づいて、前記過去の市場における株の注文状況を示す第１ワーク板を更新するステップと、
前記更新前の第１ワーク板と前記更新後の第１ワーク板とを比較することによって、前記過去の市場において新たに発生した注文の内容を示す第１注文情報を推定するステップと、
前記推定された第１注文情報を、第１注文情報記憶手段に格納するステップと、
前記アルゴリズム取引システムからの注文の内容を示す第２注文情報を受信するステップと、
前記第１注文情報記憶手段から、前記第１注文情報を時系列に沿って抽出するステップと、
前記抽出された第１注文情報及び前記受信した第２注文情報を、仮想的な市場における株の値動きを示す第２ワーク板に時系列に沿って反映することによって、前記第２ワーク板を更新するステップと、
前記更新後の第２ワーク板に基づいて、前記仮想的な市場において注文を約定させるステップと、を実行させることを特徴とするプログラム。
【請求項１１】
更に、前記更新前の第２ワーク板と前記更新後の第２ワーク板とを比較することによって、前記仮想的な市場における株の値動きを示す第２ＴＩＣＫデータを作成するステップと、
前記作成された第２ＴＩＣＫデータを相場情報として、前記アルゴリズム取引システムに送信するステップと、を前記計算機に実行させることを特徴とする請求項１０に記載のプログラム。
【請求項１２】
更に、前記更新前の第２ワーク板と前記更新後の第２ワーク板とを比較することによって、前記仮想的な市場における株の値動きを示す第２ＴＩＣＫデータを作成するステップと、
前記作成された第２ＴＩＣＫデータを、シミュレーション結果記憶手段に格納するステップと、を前記計算機に実行させることを特徴とする請求項１０に記載のプログラム。
【請求項１３】
更に、前記抽出された第１ＴＩＣＫデータが前記過去の市場における約定に関する情報を含む場合、前記抽出された第１ＴＩＣＫデータに含まれる前記約定に関する情報及び前記更新後の第１ワーク板に基づいて、当該約定の直前の第１ワーク板を作成するステップと、
前記更新前の第１ワーク板と前記作成された約定の直前の第１ワーク板とを比較することによって、前記第１注文情報を推定するステップと、を前記計算機に実行させることを特徴とする請求項１０に記載のプログラム。
【請求項１４】
更に、前記アルゴリズム取引システムからの注文を前記仮想的な市場において約定させると、当該約定が前記仮想的な市場に与える影響の大きさを示すマーケットインパクトを算出するステップを、前記計算機に実行させ、
前記第２ワーク板を更新するステップでは、前記算出されたマーケットインパクトを考慮して、前記第２ワーク板を更新することを特徴とする請求項１０に記載のプログラム。
【請求項１５】
更に、前記アルゴリズム取引システムからの注文を前記仮想的な市場において約定させると、当該約定が前記仮想的な市場に与える影響の大きさを示すマーケットインパクトを算出するステップを、前記計算機に実行させ、
前記第２ワーク板を更新するステップでは、
前記抽出された第１注文情報に含まれる株の注文価格に、前記算出されたマーケットインパクトを加算し、
当該抽出された第１注文情報に含まれる株の注文価格を、当該加算結果に変更し、
前記注文価格が変更された第１注文情報に基づいて、前記第２ワーク板を更新することを特徴とする請求項１０に記載のプログラム。
【請求項１６】
前記マーケットインパクトは、前記アルゴリズム取引システムからの注文が約定した時からの時間の経過と共に減衰することを特徴とする請求項１４又は１５に記載のプログラム。
【請求項１７】
更に、前記第２注文情報を正常に受信した場合、前記第２注文情報の受付通知を前記アルゴリズム取引システムに送信するステップを前記計算機に実行させることを特徴とする請求項１０に記載のプログラム。
【請求項１８】
更に、前記アルゴリズム取引システムからの注文を約定させた場合、当該約定の内容を含む約定通知を前記アルゴリズム取引システムに送信するステップを前記計算機に実行させることを特徴とする請求項１０に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アルゴリズム取引システムによる株の取り引きのシミュレーションを行う約定シミュレーションシステムに関する。
【背景技術】
【０００２】
近年、アルゴリズム取引が急速に普及しつつある。アルゴリズム取引プログラムが実行される計算機（アルゴリズム取引システム）は、対象銘柄の値動き、出来具合、板の形状、関連指数及びテクニカル指標などを常に監視する。そして、アルゴリズム取引システムは、監視結果に基づいて、株式売買発注のタイミング及び数量を決定して、自動的に株の売買注文を繰り返す。
【０００３】
そこで、アルゴリズム取引システムのパフォーマンスを検証するためのシミュレーションが必要となる。当該シミュレーションでは、アルゴリズム取引システムによる注文の約定状況を考慮する必要がある。
【０００４】
指値注文の約定確率を算出する技術が、特許文献１に開示されている。特許文献１に開示された技術では、銘柄毎の確率モデルに基づいて、指値注文の約定確率が事前に算出される。
【特許文献１】特開２００６−１８９９９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示されている技術は、指値注文の約定確率を算出することはできるが、過去の特定の日時における約定価格を算出できない。そのため、アルゴリズム取引システムのパフォーマンスの検証精度が低いという問題があった。
【０００６】
本発明は、前述した問題点に鑑みてなされたものであって、アルゴリズム取引システムのパフォーマンスを高精度に検証する約定シミュレーションシステムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の代表的な形態は、アルゴリズム取引システムによる株の取り引きのシミュレーションを行う約定シミュレーションシステムであって、過去の市場における株の値動きを示す第１ＴＩＣＫデータの履歴を記憶する第１ＴＩＣＫデータ記憶手段から、前記第１ＴＩＣＫデータを時系列に沿って抽出するステップと、前記抽出された第１ＴＩＣＫデータに基づいて、前記過去の市場における株の注文状況を示す第１ワーク板を更新するステップと、前記更新前の第１ワーク板と前記更新後の第１ワーク板とを比較することによって、前記過去の市場において新たに発生した注文の内容を示す第１注文情報を推定するステップと、前記推定された第１注文情報を、第１注文情報記憶手段に格納するステップと、前記アルゴリズム取引システムからの注文の内容を示す第２注文情報を受信するステップと、前記第１注文情報記憶手段から、前記第１注文情報を時系列に沿って抽出するステップと、前記抽出された第１注文情報及び前記受信した第２注文情報を、仮想的な市場における株の値動きを示す第２ワーク板に時系列に沿って反映することによって、前記第２ワーク板を更新するステップと、前記更新後の第２ワーク板に基づいて、前記仮想的な市場において注文を約定させるステップと、を実行する。
【発明の効果】
【０００８】
本発明の代表的な形態によれば、アルゴリズム取引システムのパフォーマンスの検証精度を高めることができる。
【発明を実施するための最良の形態】
【０００９】
以下に本発明の実施の形態を図面に基づいて説明する。
【００１０】
図１は、本発明の実施の形態の約定シミュレーションシステム１のハードウェア構成のブロック図である。
【００１１】
約定シミュレーションシステム１は、ＣＰＵ１０、メモリ１１、記憶装置（ＨＤＤ）１２、インタフェース１３及び通信制御装置１４を備える。
【００１２】
ＣＰＵ１０は、メモリ１１に記憶されるプログラムを実行することによって、各種処理を行う。メモリ１１は、ＣＰＵ１０によって実行されるプログラム及びＣＰＵ１０によって必要とされる情報などを一時的に記憶する。例えば、メモリ１１には、ＨＤＤ１２から読み出されたプログラム及び情報が記憶される。
【００１３】
ＨＤＤ１２は、各種プログラム及び各種情報などを記憶する。例えば、ＨＤＤ１２は、後述するＴＩＣＫ原データ２１、分解後注文ファイル２３、シミュレーションパラメータ２８及び結果ファイル２９を記憶する。
【００１４】
インタフェース１３は、入力装置１５及びディスプレイ１６などに接続される。入力装置１５は、ユーザによって入力された情報を、インタフェース１３を介してＣＰＵ１０に送信する。ディスプレイ１６は、ＣＰＵ１０によって指示された情報を表示する。
【００１５】
通信制御装置１４は、ＬＡＮ又はインターネットなどのネットワーク１７を介して、アルゴリズム取引システムに接続される。アルゴリズム取引システムは、ＣＰＵ、メモリ及びインタフェースを備え、アルゴリズム取引プログラムを実行する計算機である。
【００１６】
図２は、本発明の実施の形態の約定シミュレーションシステム１の機能構成のブロック図である。図３は、本発明の実施の形態の約定シミュレーションシステム１の処理の概要のフローチャートである。
【００１７】
約定シミュレーションシステム１は、ＴＩＣＫ原データ２１を予め記憶している。ＴＩＣＫ原データ２１は、現実の市場におけるＴＩＣＫデータの履歴である。ＴＩＣＫデータは、ある時刻における証券の値動きに関する情報である。なお、ＴＩＣＫ原データ２１及びＴＩＣＫデータについては、図４で詳細を説明する。
【００１８】
まず、アルゴリズム取引システムは、約定シミュレーションシステム１に予めログオンしておく。その後、約定シミュレーションシステム１は、起動パラメータ２４を含む起動コマンドを受けると、当該シミュレーションを開始する。なお、起動パラメータ２４は、銘柄コード、対象年月日、開始時刻及び終了時刻を含む。
【００１９】
具体的には、約定シミュレーションシステム１は、起動パラメータ２４に含まれる対象年月日における、起動パラメータ２４に含まれる開始時刻から起動パラメータ２４に含まれる終了時刻まで、起動パラメータ２４に含まれる銘柄コードによって識別される銘柄の株をアルゴリズム取引システムに取り引きさせた場合のシミュレーションを行う。
【００２０】
まず、約定シミュレーションシステム１は、ＴＩＣＫ原データ２１及び起動パラメータ２４に基づいて、注文分解処理２２を実行する。なお、約定シミュレーションシステム１によって実行される注文分解処理２２については、図９で詳細を説明する。
【００２１】
約定シミュレーションシステム１は、注文分解処理を実行することによって、分解後注文ファイル２３を作成する。分解後注文ファイル２３は、起動パラメータ２４に含まれる銘柄コードによって識別される銘柄の株に対する注文の履歴を示す。
【００２２】
但し、分解後注文ファイル２３は、現実の市場における注文の履歴を示すのではなく、約定シミュレーションシステム１が注文分解処理２２を実行することによって推定した仮想的な注文の履歴を示す。例えば、一つの仮想的な注文は、現実の市場において同時期に発生した複数の注文がまとめられたものである。また、仮想的な注文が、成行注文であっても、現実の市場においては指値注文の場合もある。なお、分解後注文ファイル２３については、図５で詳細を説明する。
【００２３】
次に、約定シミュレーションシステム１は、ワーク板登録・約定シミュレート処理２５を実行する。ワーク板登録・約定シミュレート処理２５は、ＴＩＣＫ注文登録処理２５１、アルゴ注文登録処理２５５及び約定シミュレート処理２５９などを含む。なお、約定シミュレーションシステム１によって実行されるワーク板登録・約定シミュレート処理２５については、図１１で詳細を説明する。
【００２４】
ＴＩＣＫ注文登録処理２５１では、約定シミュレーションシステム１は、作成した分解後注文ファイル２３に基づいて、当該シミュレーションにおける株の値動きを示すワーク板２６（シミュレーション用ワーク板２６）を作成又は更新する。
【００２５】
ワーク板２６は、起動パラメータ２４に含まれる銘柄コードによって識別される銘柄の株に関する注文状況を示す論理的な板であり、メモリ１１に記憶される。そのため、ワーク板２６は、値段ごとに、売り注文の株数及び買い注文の株数を示す。なお、ワーク板２６については、図８で詳細を説明する。
【００２６】
具体的には、約定シミュレーションシステム１は、分解後注文ファイル２３に含まれる仮想的な注文（ＴＩＣＫ注文）を、時系列に従って、シミュレーション用ワーク板２６に登録する。このとき、約定シミュレーションシステム１は、アルゴリズム取引システムからの注文（アルゴ注文）による影響の大きさを示すマーケットインパクトを考慮して、ＴＩＣＫ注文を、シミュレーション用ワーク板２６に登録する。
【００２７】
例えば、約定シミュレーションシステム１は、シミュレーションパラメータ２８に基づいて、マーケットインパクトを算出する。なお、シミュレーションパラメータ２８については、図１２で詳細を説明する。
【００２８】
また、約定シミュレーションシステム１は、ＴＩＣＫ復元処理２５２を行う。ＴＩＣＫ復元処理では、約定シミュレーションシステム１は、シミュレーション用ワーク板２６の変化を監視する。シミュレーション用ワーク板２６に変化がある度に、約定シミュレーションシステム１は、シミュレーション用ワーク板２６から変化情報を抽出する。そして、約定シミュレーションシステム１は、抽出した変化情報に基づいて、シミュレーションにおけるＴＩＣＫデータを作成する。
【００２９】
なお、シミュレーションにおけるＴＩＣＫデータは、アルゴ注文を受ける前では、ＴＩＣＫ原データ２１に含まれるものと同一となる。一方、アルゴ注文を受けた後では、シミュレーションにおけるＴＩＣＫデータは、ＴＩＣＫ注文及びアルゴ注文の双方に応じた値動き情報となる。
【００３０】
次に、約定シミュレーションシステム１は、作成したシミュレーションにおけるＴＩＣＫデータを、汎用プロトコルからＦＩＸプロトコルに変換する。そして、約定シミュレーションシステムは、プロトコル変換されたＴＩＣＫデータを相場情報として、アルゴリズム取引システムに送信する（２５３）。
【００３１】
なお、汎用プロトコルは、約定シミュレーションシステム１が対応可能なプロトコルである。また、ＦＩＸプロトコルは、リアルタイムで迅速に金融データを送受信するための金融業界標準のプロトコルである。そのため、ＦＩＸプロトコルは、注文、約定、注文取消などが行われるトレーディングで最も利用されている。
【００３２】
アルゴリズム取引システムは、ＴＩＣＫデータを約定シミュレーションシステム１から受信する。すると、アルゴリズム取引システムは、受信したＴＩＣＫデータを分析する。次に、アルゴリズム取引システムは、分析結果に基づいて、当該銘柄の注文内容を決定する。そして、アルゴリズム取引システムは、決定した内容の注文を、約定シミュレーションシステム１にＦＩＸプロトコルで送信する。
【００３３】
約定シミュレーションシステム１は、注文をアルゴリズム取引システムから受信する（２５４）。すると、約定シミュレーションシステム１は、受信したアルゴ注文を、ＦＩＸプロトコルから汎用プロトコルに変換する。更に、約定シミュレーションシステム１は、アルゴリズム取引システムから送信されたアルゴ注文を正常に受信できたか否かを判定する。
【００３４】
アルゴ注文を正常に受信できなかった場合、約定シミュレーションシステム１は、注文受付エラー通知を作成する。次に、約定シミュレーションシステム１は、作成した注文受付エラー通知を、汎用プロトコルからＦＩＸプロトコルに変換する。そして、約定シミュレーションシステム１は、プロトコル変換された注文受付エラー通知を、アルゴリズム取引システムに送信する（２５７）。
【００３５】
一方、アルゴ注文を正常に受信できた場合、約定シミュレーションシステム１は、当該アルゴ注文の一意な識別子を含む注文受付通知を作成する。次に、約定シミュレーションシステム１は、作成した注文受付通知を、汎用プロトコルからＦＩＸプロトコルに変換する。そして、約定シミュレーションシステム１は、プロトコル変換された注文受付通知を、アルゴリズム取引システムに送信する（２５６）。
【００３６】
次に、約定シミュレーションシステム１は、アルゴ注文登録処理２５５を実行する。
【００３７】
アルゴ注文登録処理２５５では、約定シミュレーションシステム１は、アルゴリズム取引システムから正常に受信できたアルゴ注文に基づいて、シミュレーション用ワーク板２６を更新する。
【００３８】
まず、約定シミュレーションシステム１は、受信したアルゴ注文が論理的に正しいか否かを判定する。例えば、アルゴ注文が訂正注文又は取消注文の場合には、約定シミュレーションシステム１は、当該アルゴ注文によって訂正又は取消を要求された注文（買注文又は売注文）がシミュレーション用ワーク板２６に残っているか否かを判定することによって、アルゴ注文が論理的に正しいか否かを判定する。
【００３９】
アルゴ注文が論理的に誤っている場合、約定シミュレーションシステム１は、当該アルゴ注文の識別子を含む執行エラー通知を作成する。次に、約定シミュレーションシステム１は、作成した執行エラー通知を、汎用プロトコルからＦＩＸプロトコルに変換する。そして、約定シミュレーションシステム１は、プロトコル変換した執行エラー通知を、アルゴリズム取引システムに送信する（２５８）。
【００４０】
一方、アルゴ注文が論理的に正しい場合、約定シミュレーションシステム１は、受信したアルゴ注文を、時系列に従って、シミュレーション用ワーク板２６に登録する。
【００４１】
また、約定シミュレート処理２５９では、約定シミュレーションシステム１は、シミュレーション用ワーク板２６に登録された注文を約定させるためのシミュレーションを行う。
【００４２】
次に、約定シミュレーションシステム１は、シミュレーションの結果に基づいて、シミュレーションにおけるＴＩＣＫデータを作成する。そして、約定シミュレーションシステム１は、作成したＴＩＣＫデータを、結果ファイル２９に格納する。そのため、結果ファイル２９は、シミュレーションにおいて作成されたＴＩＣＫデータの履歴となる。なお、結果ファイル２９及びシミュレーションにおけるＴＩＣＫデータについては、図６で詳細を説明する。
【００４３】
また、約定シミュレート処理２５９においてアルゴ注文が約定した場合、約定シミュレーションシステム１は、約定価格及び約定高を含む約定通知を作成する。なお、約定通知については、図７で詳細を説明する。
【００４４】
次に、約定シミュレーションシステム１は、作成した約定通知を、汎用プロトコルからＦＩＸプロトコルに変換する。そして、約定シミュレーションシステム１は、プロトコル変換された約定通知を、アルゴリズム取引システムに送信する（２７）。
【００４５】
更に、約定シミュレーションシステム１は、作成した約定通知に含まれる情報を、アルゴ注文の約定に関する情報として、結果ファイル２９に格納する。
【００４６】
その後、約定シミュレーションシステム１によるシミュレーションが終了すると、アルゴリズム取引システムは、約定シミュレーションシステム１からログアウトする。
【００４７】
図４は、本発明の実施の形態の約定シミュレーションシステム１に記憶されるＴＩＣＫ原データ２１の構成図である。
【００４８】
約定シミュレーションシステム１は、現実の市場での取引日ごとにＴＩＣＫ原データ２１を記憶する。そのため、ＴＩＣＫ原データ２１では、特定の取引日におけるＴＩＣＫデータ２１０が時系列に従って並んでいる。また、ＴＩＣＫ原データ２１は、現実の市場におけるＴＩＣＫデータ２１０の履歴を銘柄ごとに含む。
【００４９】
現実の市場におけるＴＩＣＫデータ２１０は、取引日２１００、時刻２１０１、銘柄コード２１０２、レコード通番２１０３、現値２１０４、約定高２１０５、売気配値２１０６、買気配値２１０７、売気配数量２１０８及び買気配数量２１０９を含む。
【００５０】
取引日２１００は、当該ＴＩＣＫデータ２１０が作成された日付けを示す。時刻２１０１は、当該ＴＩＣＫデータ２１０が作成された時刻を示す。つまり、取引日２１００及び時刻２１０１は、当該ＴＩＣＫデータ２１０が現実の市場のいつの時点における値動き情報であるかを示す。
【００５１】
銘柄コード２１０２は、当該ＴＩＣＫデータ２１０に対応する銘柄の一意な識別子である。レコード通番２１０３は、当該ＴＩＣＫデータ２１０を識別するための通し番号である。
【００５２】
現値２１０４は、当該ＴＩＣＫデータ２１０が作成された時刻における株価である。具体的には、現値２１０４は、当該取引日２１００及び当該時刻２１０１における、当該銘柄コード２１０２によって識別される銘柄の株価を示す。
【００５３】
約定高２１０５は、前回のＴＩＣＫデータ２１０の作成時から今回のＴＩＣＫデータ２１０の作成時までの間に、当該銘柄コード２１０２によって識別される銘柄の株が約定した株数を示す。
【００５４】
売気配値２１０６は、売注文で指定された価格（気配値）である。なお、ＴＩＣＫデータ２１０に含まれる売気配値２１０６は、前回のＴＩＣＫデータ２１０の作成時から今回のＴＩＣＫデータ２１０の作成時までの間に売気配数量が変化した（新たな売注文が入った）気配値である。
【００５５】
売気配数量２１０８は、売気配値２１０６での売注文の総株数を示す。
【００５６】
なお、売気配値２１０６及び売気配数量２１０８は、ＴＩＣＫデータ２１０に複数含まれていてもよい。この場合、一つの売気配値２１０６と一つの売気配数量２１０８とが対応する。そして、売気配数量２１０８は、当該売気配数量２１０８に対応する売気配値２１０６での売注文の総株数を示す。
【００５７】
買気配値２１０７は、買注文で指定された気配値である。なお、ＴＩＣＫデータ２１０に含まれる買気配値２１０７は、前回のＴＩＣＫデータ２１０の作成時から今回のＴＩＣＫデータ２１０の作成時までの間に買気配数量が変化した（新たな買注文が入った）気配値である。
【００５８】
買気配数量２１０９は、買気配値２１０７での買注文の総株数を示す。
【００５９】
なお、買気配値２１０７及び買気配数量２１０９は、ＴＩＣＫデータ２１０に複数含まれていてもよい。この場合、一つの買気配値２１０７と一つの買気配数量２１０９とが対応する。そして、買気配数量２１０９は、当該買気配数量２１０９に対応する買気配値２１０７での買注文の総株数を示す。
【００６０】
図５は、本発明の実施の形態の約定シミュレーションシステム１に記憶される分解後注文ファイル２３の構成図である。
【００６１】
分解後注文ファイル２３は、時刻２３１、種別２３２、値段２３３及び数量２３４を含む。また、分解後注文ファイル２３に含まれる一つのレコードは、約定シミュレーションシステム１によって推定された一つの仮想的な注文に関する情報を示す。
【００６２】
時刻２３１は、当該レコードに対応する仮想的な注文がされた時を示す。種別２３２は、当該レコードに対応する仮想的な注文の種類を示す。具体的には、種別２３２は、当該レコードに対応する仮想的な注文が、売注文、買注文、売訂正注文、買訂正注文、売取消注文又は買取消注文のいずれであるかを示す。
【００６３】
値段２３３は、当該レコードに対応する仮想的な注文で指定された価格を示す。なお、当該仮想的な注文が指値注文ではなく成行注文の場合には、値段２３３は、成行注文であることを示す。
【００６４】
数量２３４は、当該レコードに対応する仮想的な注文で指定された株数を示す。
【００６５】
図６は、本発明の実施の形態の約定シミュレーションシステム１に記憶される結果ファイル２９に含まれるＴＩＣＫデータ２９１の構成図である。
【００６６】
結果ファイル２９は、シミュレーションにおいて作成されたＴＩＣＫデータ２９１の履歴を示す。そのため、結果ファイル２９では、シミュレーションにおいて作成されたＴＩＣＫデータ２９１が時系列に従って並んでいる。
【００６７】
シミュレーションによって作成されたＴＩＣＫデータ２９１は、取引日２９１０、時刻２９１１、銘柄コード２９１２、レコード通番２９１３、現値２９１４、約定高２９１５、売気配値２９１６、買気配値２９１７、売気配数量２９１８及び買気配数量２９１９を含む。
【００６８】
取引日２９１０は、シミュレーション対象となる取引が行われた日付けを示す。時刻２９１１は、当該ＴＩＣＫデータ２９１が作成された時刻を示す。なお、時刻２９１１は、現実の時刻ではなく、過去に実際に行われた取引において株取引をシミュレーションした場合における時刻（シミュレーション上の時刻）を示す。つまり、取引日２９１０及び時刻２９１１は、当該ＴＩＣＫデータ２９１が、シミュレーション上のいつの時点における値動き情報であるかを示す。
【００６９】
銘柄コード２９１２は、当該ＴＩＣＫデータ２９１に対応する銘柄の一意な識別子である。レコード通番２９１３は、当該ＴＩＣＫデータ２９１を識別するための通し番号である。
【００７０】
現値２９１４は、当該ＴＩＣＫデータ２９１が作成された時刻における株価である。具体的には、現値２９１４は、当該取引日２９１０及び当該時刻２９１１における、当該銘柄コード２９１２によって識別される銘柄の株価を示す。
【００７１】
約定高２９１５は、前回のＴＩＣＫデータ２９１の作成時から今回のＴＩＣＫデータ２９１の作成時までの間に、当該銘柄コード２９１２によって識別される銘柄の株が約定した株数を示す。
【００７２】
売気配値２９１６は、売注文で指定された気配値である。なお、ＴＩＣＫデータ２９１に含まれる売気配値２９１６は、前回のＴＩＣＫデータ２９１の作成時から今回のＴＩＣＫデータ２９１の作成時までの間に売気配数量が変化した（新たな売注文が入った）気配値である。
【００７３】
売気配数量２９１８は、売気配値２９１６での売注文の総株数を示す。
【００７４】
なお、売気配値２９１６及び売気配数量２９１８は、ＴＩＣＫデータ２９１に複数含まれていてもよい。この場合、一つの売気配値２９１６と一つの売気配数量２９１８とが対応する。そして、売気配数量２９１８は、当該売気配数量２９１８に対応する売気配値２９１６での売注文の総株数を示す。
【００７５】
買気配値２９１７は、買注文で指定された気配値である。なお、ＴＩＣＫデータ２９１に含まれる買気配値２９１７は、前回のＴＩＣＫデータ２９１の作成時から今回のＴＩＣＫデータ２９１の作成時までの間に買気配数量が変化した（新たな買注文が入った）気配値である。
【００７６】
買気配数量２９１９は、買気配値２９１７での買注文の総株数を示す。
【００７７】
なお、買気配値２９１７及び買気配数量２９１９は、ＴＩＣＫデータ２９１に複数含まれていてもよい。この場合、一つの買気配値２９１７と一つの買気配数量２９１９とが対応する。そして、買気配数量２９１９は、当該買気配数量２９１９に対応する買気配値２９１７での買注文の総株数を示す。
【００７８】
図７は、本発明の実施の形態の約定シミュレーションシステム１からアルゴリズム取引システムに送信される約定通知２９２の構成図である。
【００７９】
約定通知２９２は、アルゴ注文の約定をアルゴリズム取引システムに通知するためのものである。約定通知２９２は、銘柄コード２９２１、値段２９２２、数量２９２３、売買区分２９２４、注文ＩＤ２９２５及び時刻２９２６を含む。
【００８０】
銘柄コード２９２１は、約定したアルゴ注文で指定された銘柄の一意な識別子である。値段２９２２は、アルゴ注文が約定した価格である。数量２９２３は、アルゴ注文が約定した株数である。
【００８１】
つまり、約定通知２９２は、銘柄コード２９２１によって識別される銘柄の株が、値段２９２２で数量２９２３だけ約定したことを通知する。
【００８２】
売買区分２９２４は、約定したアルゴ注文の種類を示す。つまり、売買区分２９２４は、約定したアルゴ注文が買注文又は売注文のいずれであるかを示す。注文ＩＤ２９２５は、約定したアルゴ注文の一意な識別子である。時刻２９２６は、当該アルゴ注文が約定した時刻を示す。
【００８３】
なお、約定通知２９２は、約定シミュレーションシステム１からアルゴリズム取引システムに送信されるだけでなく、アルゴ注文の約定に関する情報として、結果ファイル２９に格納される。
【００８４】
図８は、本発明の実施の形態の約定シミュレーションシステム１に記憶されるワーク板２６の構成図である。
【００８５】
ワーク板２６は、気配値２６１、売気配数量２６２及び買気配数量２６３を含む。
【００８６】
気配値２６１は、売注文又は買注文で指定された価格である。売気配数量２６２は、当該レコードの気配値２６１での売注文の総株数を示す。買気配数量２６３は、当該レコードの気配値２６１での買注文の総株数を示す。
【００８７】
なお、ワーク板２６の最上位のレコードは、成行注文に関する情報を示す。この場合、成行注文に関する情報を示すレコードの売気配数量２６２は、成り行きでの売注文の総株数を示す。また、成行注文に関する情報を示すレコードの買気配数量２６３は、成り行きでの買注文の総株数を示す。
【００８８】
図９は、本発明の実施の形態の約定シミュレーションシステム１によって実行される注文分解処理２２のフローチャートである。
【００８９】
まず、約定シミュレーションシステム１は、起動パラメータ２４に含まれる対象年月日における、起動パラメータ２４に含まれる開始時刻から起動パラメータ２４に含まれる終了時刻までの、起動パラメータ２４に含まれる銘柄コードによって識別される銘柄に関するすべてのＴＩＣＫデータ２１０を、ＴＩＣＫ原データ２１から選択する。
【００９０】
具体的には、約定シミュレーションシステム１は、起動パラメータ２４に含まれる対象年月日とＴＩＣＫデータ２１０の取引日２１００とが一致するＴＩＣＫデータ２１０を、ＴＩＣＫ原データ２１から選択する。次に、約定シミュレーションシステム１は、ＴＩＣＫデータ２１０の時刻２１０１が、起動パラメータ２４に含まれる開始時刻から終了時刻までの間に該当するＴＩＣＫデータ２１０を、選択したＴＩＣＫデータ２１０の中から選択する。そして、約定シミュレーションシステム１は、起動パラメータ２４に含まれる銘柄コードとＴＩＣＫデータ２１０の銘柄コード２１０２とが一致するＴＩＣＫデータ２１０を、選択したＴＩＣＫデータ２１０の中から選択する。
【００９１】
次に、約定シミュレーションシステム１は、選択したＴＩＣＫデータ２１０を、作成された時刻が古いものから順に一つずつ取得する。具体的には、約定シミュレーションシステム１は、ＴＩＣＫデータ２１０のレコード通番２１０３が小さいものから順に、選択したＴＩＣＫデータ２１０を取得する。又は、約定シミュレーションシステム１は、ＴＩＣＫデータ２１０の時刻２１０１が古い物から順に、選択したＴＩＣＫデータ２１０を取得する（３０１）。
【００９２】
次に、約定シミュレーションシステム１は、取得したＴＩＣＫデータ２１０及び前回のステップ３０２で作成されたワーク板２６（前回ワーク板２６）に基づいて、新たなワーク板２６（今回ワーク板２６）を作成する（３０２）。
【００９３】
具体的には、約定シミュレーションシステム１は、取得したＴＩＣＫデータ２１０の売気配値２１０６と前回ワーク板２６の気配値２６１とが一致するレコードを、前回ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの売気配数量２６２に、取得したＴＩＣＫデータ２１０の売気配数量２１０８を格納する。
【００９４】
次に、約定シミュレーションシステム１は、取得したＴＩＣＫデータ２１０の買気配値２１０７と前回ワーク板２６の気配値２６１とが一致するレコードを、前回ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３に、取得したＴＩＣＫデータ２１０の買気配数量２１０９を格納する。
【００９５】
これによって、約定シミュレーションシステム１は、今回ワーク板２６を作成する。
【００９６】
次に、約定シミュレーションシステム１は、前回ワーク板２６に対応する時刻から今回ワーク板２６に対応する時刻までの間に、注文が約定したか否かを判定する（３０３）。
【００９７】
具体的には、約定シミュレーションシステム１は、取得したＴＩＣＫデータ２１０の約定高２１０５に「０」が格納されているか否かを判定する。
【００９８】
約定高２１０５に「０」が格納されている場合、約定シミュレーションシステム１は、前回ワーク板２６に対応する時刻から今回ワーク板２６に対応する時刻までの間に、注文が約定していないと判定する。この場合、約定シミュレーションシステム１は、そのままステップ３０５に進む。
【００９９】
一方、約定高２１０５に「０」以外の値が格納されている場合、約定シミュレーションシステム１は、前回ワーク板２６に対応する時刻から今回ワーク板２６に対応する時刻までの間に、注文が約定したと判定する。この場合、約定シミュレーションシステム１は、取得したＴＩＣＫデータ２１０及び今回ワーク板２６に基づいて、注文が約定する直前のワーク板２６（約定直前ワーク板２６）を作成する。
【０１００】
具体的には、約定シミュレーションシステム１は、取得したＴＩＣＫデータ２１０の現値２１０４と今回ワーク板２６の気配値２６１とが一致するレコードを、今回ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの売気配数量２６２又は買気配数量２６３のいずれか一方に、取得したＴＩＣＫデータ２１０の約定高２１０５を加算する。なお、約定シミュレーションシステム１は、前回ワーク板２６及び今回ワーク板２６とを比較することによって、取得したＴＩＣＫデータ２１０の約定高２１０５を、売気配数量２６２又は買気配数量２６３のいずれに加算するかを決定する。
【０１０１】
次に、約定シミュレーションシステム１は、成行注文に関する情報を示すレコードを、今回ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの売気配数量２６２及び買気配数量２６３のうちのもう一方に、取得したＴＩＣＫデータ２１０の約定高２１０５を加算する。
【０１０２】
これによって、約定シミュレーションシステム１は、約定直前ワーク板２６を作成する（３０４）。
【０１０３】
なお、約定シミュレーションシステム１は、約定直前に入った注文を成行注文と仮定して、約定直前ワーク板２６を作成する。よって、約定直前に入った注文が、実際には指値注文の場合もある。
【０１０４】
次に、約定シミュレーションシステム１は、前回ワーク板２６と今回ワーク板２６又は約定直前ワーク板２６とを比較する（３０５）。これによって、約定シミュレーションシステム１は、仮想的な注文（ＴＩＣＫ注文）を推定し、推定したＴＩＣＫ注文を分解後注文ファイル２３に格納する（３０６）。
【０１０５】
前回ワーク板２６に対応する時刻から今回ワーク板２６に対応する時刻までの間に約定していない場合、約定シミュレーションシステム１は、前回ワーク板２６と今回ワーク板２６とを比較する。そのため、約定シミュレーションシステム１は、前回ワーク板２６及び今回ワーク板２６の双方を記憶している。
【０１０６】
一方、前回ワーク板２６に対応する時刻から今回ワーク板２６に対応する時刻までの間に約定した場合、約定シミュレーションシステム１は、前回ワーク板２６と約定直前ワーク板２６とを比較する。そのため、約定シミュレーションシステム１は、前回ワーク板２６及び約定直前ワーク板２６の双方を記憶している。
【０１０７】
ここでは、前回ワーク板２６と今回ワーク板２６とを比較する処理について説明するが、前回ワーク板２６と約定直前ワーク板２６とを比較する処理も同一である。
【０１０８】
約定シミュレーションシステム１は、前回ワーク板２６の気配値２６１と今回ワーク板２６の気配値２６１とが一致するレコードを、前回ワーク板２６及び今回ワーク板２６の双方から順番に選択する。そして、約定シミュレーションシステム１は、選択したレコードごとに、以下の処理を行う。
【０１０９】
約定シミュレーションシステム１は、前回ワーク板２６から選択したレコードの売気配数量２６２と今回ワーク板２６から選択したレコードの売気配数量２６２とが一致するか否かを判定する。
【０１１０】
二つの売気配数量２６２が一致する場合、前回ワーク板２６又は今回ワーク板２６から選択したレコードの気配値２６１での売注文は新たに発生してない。よって、約定シミュレーションシステム１は、分解後注文ファイル２３を更新しない。
【０１１１】
一方、二つの売気配数量２６２が一致しない場合、前回ワーク板２６又は今回ワーク板２６から選択したレコードの気配値２６１での売注文が新たに発生している。そのため、約定シミュレーションシステム１は、売注文（ＴＩＣＫ注文）を生成する。
【０１１２】
具体的には、約定シミュレーションシステム１は、今回ワーク板２６から選択したレコードの売気配数量２６２から、前回ワーク板２６から選択したレコードの売気配数量２６２を減算することによって、売注文の株数を算出する。そして、約定シミュレーションシステム１は、選択したレコードの気配値２６１で、算出した株数の売注文を生成する。
【０１１３】
そして、約定シミュレーションシステム１は、生成した売注文に関する情報を、分解後注文ファイル２３に格納する。
【０１１４】
具体的には、約定シミュレーションシステム１は、分解後注文ファイル２３に新たなレコードを追加する。
【０１１５】
次に、約定シミュレーションシステム１は、新たなレコードの時刻２３１に、ステップ３０１で取得したＴＩＣＫデータ２１０の時刻２１０１を格納する。
【０１１６】
次に、約定シミュレーションシステム１は、算出した売注文の株数が正の値であるか否かを判定する。売注文の株数が正の値である場合、約定シミュレーションシステム１は、新たなレコードの種別２３２に、売注文であることを示す情報を格納する。一方、算出した売注文の株数が負の値である場合、約定シミュレーションシステム１は、新たなレコードの種別２３２に、売訂正注文であることを示す情報又は売取消注文であることを示す情報を格納する。
【０１１７】
次に、約定シミュレーションシステム１は、前回ワーク板２６又は今回ワーク板２６から選択したレコードの気配値２６１を、新たなレコードの値段２３３に格納する。次に、約定シミュレーションシステム１は、算出した売注文の株数を、新たなレコードの数量２３４に格納する。
【０１１８】
これによって、約定シミュレーションシステム１は、生成した売注文に関する情報を、分解後注文ファイル２３に格納する。
【０１１９】
次に、約定シミュレーションシステム１は、前回ワーク板２６から選択したレコードの買気配数量２６３と今回ワーク板２６から選択したレコードの買気配数量２６３とが一致するか否かを判定する。
【０１２０】
二つの買気配数量２６３が一致する場合、前回ワーク板２６又は今回ワーク板２６から選択したレコードの気配値２６１での買注文は新たに発生してない。よって、約定シミュレーションシステム１は、分解後注文ファイル２３を更新しない。
【０１２１】
一方、二つの買気配数量２６３が一致しない場合、前回ワーク板２６又は今回ワーク板２６から選択したレコードの気配値２６１での買注文が新たに発生している。そのため、約定シミュレーションシステム１は、買注文（ＴＩＣＫ注文）を生成する。
【０１２２】
具体的には、約定シミュレーションシステム１は、今回ワーク板２６から選択したレコードの買気配数量２６３から、前回ワーク板２６から選択したレコードの買気配数量２６３を減算することによって、買注文の株数を算出する。そして、約定シミュレーションシステム１は、選択したレコードの気配値２６１で、算出した株数の買注文を生成する。
【０１２３】
そして、約定シミュレーションシステム１は、生成した買注文に関する情報を、分解後注文ファイル２３に格納する。
【０１２４】
具体的には、約定シミュレーションシステム１は、分解後注文ファイル２３に新たなレコードを追加する。
【０１２５】
次に、約定シミュレーションシステム１は、新たなレコードの時刻２３１に、ステップ３０１で取得したＴＩＣＫデータ２１０の時刻２１０１を格納する。
【０１２６】
次に、約定シミュレーションシステム１は、算出した買注文の株数が正の値であるか否かを判定する。買注文の株数が正の値である場合、約定シミュレーションシステム１は、新たなレコードの種別２３２に、買注文であることを示す情報を格納する。一方、算出した買注文の株数が負の値である場合、約定シミュレーションシステム１は、新たなレコードの種別２３２に、買訂正注文であることを示す情報又は買取消注文であることを示す情報を格納する。
【０１２７】
次に、約定シミュレーションシステム１は、前回ワーク板２６又は今回ワーク板２６から選択したレコードの気配値２６１を、新たなレコードの値段２３３に格納する。次に、約定シミュレーションシステム１は、算出した買注文の株数を、新たなレコードの数量２３４に格納する。
【０１２８】
これによって、約定シミュレーションシステム１は、生成した買注文に関する情報を、分解後注文ファイル２３に格納する。
【０１２９】
次に、約定シミュレーションシステム１は、選択したＴＩＣＫデータ２１０のすべてを、ステップ３０１において取得したか否かを判定する。
【０１３０】
選択したＴＩＣＫデータ２１０の一つでも取得してない場合、約定シミュレーションシステム１は、ステップ３０１に戻り、処理を繰り返す。
【０１３１】
一方、選択したＴＩＣＫデータ２１０のすべてを取得した場合、約定シミュレーションシステム１は、当該注文分解処理２２を終了する。
【０１３２】
次に、約定シミュレーションシステム１によって実行される注文分解処理２２の具体例を説明する。
【０１３３】
図１０は、本発明の実施の形態の約定シミュレーションシステム１によって実行される注文分解処理２２の説明図である。
【０１３４】
本説明図では、約定シミュレーションシステム１が、時刻２１０１が「１０時００分００秒」のＴＩＣＫデータ２１０及び時刻２１０１が「１０時００分０２秒」のＴＩＣＫデータ２１０を取得した場合を説明する。
【０１３５】
時刻２１０１が「１０時００分００秒」のＴＩＣＫデータ２１０は、５０４円での売注文の総株数が６株に、５００円での売注文の総株数が３株に、４９９円での買注文の総株数が１６株に、４９８円での買注文の総株数が７株に変更されたことを示す。
【０１３６】
また、時刻２１０１が「１０時００分０２秒」のＴＩＣＫデータ２１０は、５００円で３株約定したことを示す。更に、時刻２１０１が「１０時００分０２秒」のＴＩＣＫデータ２１０は、５００円での売注文の総株数が０株に変更されたことを示す。
【０１３７】
まず、約定シミュレーションシステム１は、時刻２１０１が「１０時００分００秒」のＴＩＣＫデータ２１０を取得したとする。
【０１３８】
すると、約定シミュレーションシステム１は、当該ＴＩＣＫデータ２１０を取得する直前のワーク板２６（前回ワーク板２６）及び取得したＴＩＣＫデータ２１０に基づいて、今回ワーク板２６を作成する。作成された今回ワーク板２６は、５０４円での売注文の総株数が６株であり、５００円での売注文の総株数が３株であり、４９９円での買注文の総株数が１６株であり、且つ、４９８円での買注文の総株数が７株であることを示す。
【０１３９】
また、前回ワーク板２６は、５０４円での売注文の総株数が４株であり、５００円での売注文の総株数が０株であり、４９９円での買注文の総株数が１０株であり、且つ、４９８円での買注文の総株数が１２株であることを示す。
【０１４０】
次に、約定シミュレーションシステム１は、前回ワーク板２６と今回ワーク板２６とを比較することによって、新たに発生した注文を推定する。
【０１４１】
具体的には、約定シミュレーションシステム１は、今回ワーク板２６が示す６株から、前回ワーク板２６が示す４株を減算することによって、５０４円で２株の売注文が新たに発生したと推定する。
【０１４２】
また、約定シミュレーションシステム１は、今回ワーク板２６が示す３株から、前回ワーク板２６が示す０株を減算することによって、５００円で３株の売注文が新たに発生したと推定する。
【０１４３】
また、約定シミュレーションシステム１は、今回ワーク板２６が示す１６株から、前回ワーク板２６が示す１０株を減算することによって、４９９円で６株の買注文が新たに発生したと推定する。
【０１４４】
また、約定シミュレーションシステム１は、今回ワーク板２６が示す７株から、前回ワーク板２６が示す１２株を減算することによって、４９８円で−５株の買訂正注文が新たに発生したと推定する。
【０１４５】
そして、約定シミュレーションシステム１は、推定した新たな注文を、分解後注文ファイル２３に格納する。
【０１４６】
次に、約定シミュレーションシステム１は、時刻２１０１が「１０時００分０２秒」のＴＩＣＫデータ２１０を取得したとする。
【０１４７】
すると、約定シミュレーションシステム１は、時刻２１０１が「１０時００分００秒」のＴＩＣＫデータ２１０を取得した際に作成したワーク板２６（前回ワーク板２６）及び取得したＴＩＣＫデータ２１０に基づいて、今回ワーク板２６を作成する。作成された今回ワーク板２６は、５００円での売注文の総株数が０株であることを示す。
【０１４８】
次に、約定シミュレーションシステム１は、作成した今回ワーク板２６及び取得したＴＩＣＫデータ２１０に基づいて、約定直前ワーク板２６を作成する。このとき、約定シミュレーションシステム１は、５００円での売注文の総株数が０株に変更されたのは、売訂正注文又は売取消注文によるものではなく、注文の約定によるものと推定する。そのため、作成された約定直前ワーク板２６は、５００円での売注文の総株数が３株であること、且つ、成行での買注文が３株であることを示す。
【０１４９】
また、前回ワーク板２６は、５００円での売注文の総株数が３株であること、且つ、成行での買注文が０株であることを示す。
【０１５０】
次に、約定シミュレーションシステム１は、前回ワーク板２６と約定直前ワーク板２６とを比較することによって、新たに発生した注文を推定する。
【０１５１】
具体的には、約定シミュレーションシステム１は、今回ワーク板２６が示す３株から、前回ワーク板２６が示す０株を減算することによって、成行で３株の買注文が新たに発生したと推定する。
【０１５２】
そして、約定シミュレーションシステム１は、推定した新たな注文を、分解後注文ファイル２３に格納する。
【０１５３】
約定シミュレーションシステム１は、注文分解処理２２において、このような処理を繰り返す。
【０１５４】
図１１は、本発明の実施の形態の約定シミュレーションシステム１によって実行されるワーク板登録・約定シミュレート処理２５のフローチャートである。
【０１５５】
約定シミュレーションシステム１は、時系列に従って、アルゴ注文又はＴＩＣＫ注文を、当該シミュレーションにおける値動きを示すワーク板２６（シミュレーション用ワーク板２６）に登録する。約定シミュレーションシステム１は、アルゴ注文又はＴＩＣＫ注文をシミュレーション用ワーク板２６に登録しようとする度に、当該ワーク板登録・約定シミュレート処理２５を実行する。
【０１５６】
まず、約定シミュレーションシステム１は、シミュレーション用ワーク板２６に登録しようとする注文が、アルゴ注文又はＴＩＣＫ注文のいずれであるかを判定する（３１１）。
【０１５７】
シミュレーション用ワーク板２６にＴＩＣＫ注文を登録しようとする場合、約定シミュレーションシステム１は、シミュレーションパラメータ２８に基づいて、ＴＩＣＫ注文発生時におけるマーケットインパクトを算出する。
【０１５８】
図１２は、本発明の実施の形態の約定シミュレーションシステム１によって算出されるマーケットインパクトΔＰの説明図である。
【０１５９】
マーケットインパクトΔＰは、アルゴ注文の約定による影響の大きさを示す値である。そのため、マーケットインパクトΔＰは、アルゴ注文の約定時刻ｔ0からの時間の経過と共に指数的に減衰するのが好ましい。例えば、マーケットインパクトΔＰは、減衰係数Ｔに従って減衰する。
【０１６０】
更に、マーケットインパクトΔＰは、初期インパクトＰ0の一定比率（恒久インパクト比率Ｐ）が恒久的に残るのが好ましい。なお、初期インパクトＰ0は、アルゴ注文の約定時刻ｔ0におけるマーケットインパクトであり、ワーク板登録・約定シミュレート処理２５のステップ３１７で算出される。言い換えると、ｔ0は、初期インパクトＰ0の発生時刻である。
【０１６１】
なお、減衰係数Ｔ及び恒久インパクト比率Ｐは、シミュレーションパラメータ２８に含まれる。
【０１６２】
例えば、約定シミュレーションシステム１は、数式１を用いて、ＴＩＣＫ注文発生時刻ｔにおけるマーケットインパクトΔＰ（ｔ）を算出する。
【０１６３】
【数１】
0005099419.tif 000002
【０１６４】
ここで、図１１に戻る。
【０１６５】
約定シミュレーションシステム１は、マーケットインパクトを算出すると、算出したマーケットインパクトを四捨五入して整数にする。そして、約定シミュレーションシステム１は、整数化したマーケットインパクトを、登録しようとするＴＩＣＫ注文で指定された価格に反映する（３１２）。
【０１６６】
具体的には、約定シミュレーションシステム１は、算出したマーケットインパクトを発生させたアルゴ注文が売注文又は買注文のいずれであるかを判定する。
【０１６７】
アルゴ注文が売注文の場合、約定シミュレーションシステム１は、登録しようとするＴＩＣＫ注文で指定された価格から、整数化されたマーケットインパクトを減算することによって、登録価格を算出する。
【０１６８】
一方、アルゴ注文が買注文の場合、約定シミュレーションシステム１は、登録しようとするＴＩＣＫ注文で指定された価格に、整数化されたマーケットインパクトを加算することによって、登録価格を算出する。
【０１６９】
そして、約定シミュレーションシステム１は、算出した登録価格に基づいて、ＴＩＣＫ注文をシミュレーション用ワーク板２６に登録する（３１４）。
【０１７０】
具体的には、ＴＩＣＫ注文が売注文の場合、約定シミュレーションシステム１は、算出した登録価格とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの売気配数量２６２に、当該ＴＩＣＫ注文で指定された株数を加算する。
【０１７１】
一方、ＴＩＣＫ注文が売訂正注文又は売取消注文の場合、約定シミュレーションシステム１は、算出した登録価格とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの売気配数量２６２から、当該ＴＩＣＫ注文で指定された株数を減算する。
【０１７２】
一方、ＴＩＣＫ注文が買注文の場合、約定シミュレーションシステム１は、算出した登録価格とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３に、当該ＴＩＣＫ注文で指定された株数を加算する。
【０１７３】
一方、ＴＩＣＫ注文が買訂正注文又は買取消注文の場合、約定シミュレーションシステム１は、算出した登録価格とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３から、当該ＴＩＣＫ注文で指定された株数を減算する。
【０１７４】
以上のように、約定シミュレーションシステム１は、算出した登録価格に基づいて、ＴＩＣＫ注文をシミュレーション用ワーク板２６に登録する。
【０１７５】
なお、約定シミュレーションシステム１は、これまでにアルゴ注文をシミュレーション用ワーク板２６に登録していない場合、ＴＩＣＫ注文で指定された価格を、登録価格とする。つまり、約定シミュレーションシステム１は、マーケットインパクトを考慮せずに（通常通りに）、ＴＩＣＫ注文をシミュレーション用ワーク板２６に登録する。
【０１７６】
一方、シミュレーション用ワーク板２６にアルゴ注文を登録しようとする場合、約定シミュレーションシステム１は、登録しようとするアルゴ注文が論理的に正しいか否かを判定する（３１３）。例えば、アルゴ注文が訂正注文又は取消注文の場合には、約定シミュレーションシステム１は、当該アルゴ注文によって訂正又は取消を要求された注文がシミュレーション用ワーク板２６に残っているか否かを判定することによって、アルゴ注文が論理的に正しいか否かを判定する。
【０１７７】
アルゴ注文が論理的に誤っている場合、約定シミュレーションシステム１は、当該アルゴ注文の識別子を含む執行エラー通知を作成する。次に、約定シミュレーションシステム１は、作成した執行エラー通知を、アルゴリズム取引システムに送信する。そして、約定シミュレーションシステム１は、当該ワーク板登録・約定シミュレート処理２５を終了する。
【０１７８】
一方、アルゴ注文が論理的に正しい場合、約定シミュレーションシステム１は、アルゴ注文を、シミュレーション用ワーク板２６に登録する（３１４）。
【０１７９】
具体的には、アルゴ注文が売注文の場合、約定シミュレーションシステム１は、当該アルゴ注文で指定された価格とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの売気配数量２６２に、当該アルゴ注文で指定された株数を加算する。
【０１８０】
一方、アルゴ注文が売訂正注文又は売取消注文の場合、約定シミュレーションシステム１は、当該アルゴ注文で指定された価格とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの売気配数量２６２から、当該アルゴ注文で指定された株数を減算する。
【０１８１】
一方、アルゴ注文が買注文の場合、約定シミュレーションシステム１は、当該アルゴ注文で指定された価格とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３に、当該アルゴ注文で指定された株数を加算する。
【０１８２】
一方、アルゴ注文が買訂正注文又は買取消注文の場合、約定シミュレーションシステム１は、当該アルゴ注文で指定された価格とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３から、当該アルゴ注文で指定された株数を減算する。
【０１８３】
以上のように、約定シミュレーションシステム１は、アルゴ注文をシミュレーション用ワーク板２６に登録する。
【０１８４】
次に、約定シミュレーションシステム１は、シミュレーション用ワーク板２６に基づいて、注文が約定するか否かを判定する（３１５）。
【０１８５】
具体的には、約定シミュレーションシステム１は、シミュレーション用ワーク板２６のいずれかのレコードの売気配数量２６２及び買気配数量２６３の双方に「１」以上の値が格納されている場合、注文が約定すると判定する。更に、約定シミュレーションシステム１は、成行注文に関する情報を示すレコードの売気配数量２６２又は買気配数量２６３のいずれかに「１」以上の値が格納されている場合にも、注文が約定すると判定する。
【０１８６】
注文が約定しない場合、約定シミュレーションシステム１は、そのままステップ３１８に進む。
【０１８７】
一方、注文が約定する場合、約定シミュレーションシステム１は、シミュレーション用ワーク板２６に基づいて、注文を約定させる（３１６）。そして、約定シミュレーションシステム１は、シミュレーション用ワーク板２６の売気配数量２６２及び買気配数量２６３から、約定した株数を減算する。これによって、約定シミュレーションシステム１は、シミュレーション用ワーク板２６を、約定前の状態から約定後の状態に更新する。
【０１８８】
次に、約定シミュレーションシステム１は、約定した注文がアルゴ注文であるか否かを判定する。
【０１８９】
約定した注文がアルゴ注文でない場合、約定シミュレーションシステム１は、そのままステップ３１８に進む。
【０１９０】
一方、約定した注文がアルゴ注文である場合、約定シミュレーションシステム１は、約定価格及び約定高を含む約定通知を作成する。そして、約定シミュレーションシステム１は、作成した約定通知を、アルゴリズム取引システムに送信する。
【０１９１】
更に、約定シミュレーションシステム１は、アルゴ注文の約定結果に基づいて、初期インパクトＰ0を算出する（３１７）。
【０１９２】
例えば、約定シミュレーションシステム１は、シミュレーション用ワーク板２６に登録されている売注文の最安値と買注文の最高値との中間値（ミッドプライス）を、当該約定直前のシミュレーション用ワーク板２６及び当該約定直後のシミュレーション用ワーク板２６のそれぞれで算出する。そして、約定シミュレーションシステム１は、算出した二つのミッドプライスの差（ミッドプライスの変化量）を、初期インパクトＰ0とする。
【０１９３】
次に、約定シミュレーションシステム１は、更新された最新のシミュレーション用ワーク板２６と当該ワーク板登録・約定シミュレート処理２５が行われる直前のシミュレーション用ワーク板２６とを比較することによって、シミュレーションにおけるＴＩＣＫデータ２９１を作成する。そのため、約定シミュレーションシステム１は、更新された最新のシミュレーション用ワーク板２６及び当該ワーク板登録・約定シミュレート処理２５が行われる直前のシミュレーション用ワーク板２６の双方を記憶している。
【０１９４】
具体的には、約定シミュレーションシステム１は、シミュレーション上における現在の日付けを、ＴＩＣＫデータ２９１の取引日２９１０に格納する。次に、約定シミュレーションシステム１は、シミュレーション上における現在の時刻を、ＴＩＣＫデータ２９１の時刻２９１１に格納する。
【０１９５】
次に、約定シミュレーションシステム１は、シミュレーション対象の銘柄の識別子を、ＴＩＣＫデータ２９１の銘柄コード２９１２に格納する。次に、約定シミュレーションシステム１は、直前に作成したＴＩＣＫデータ２９１のレコード通番２９１３に「１」を加算することによって算出した値を、ＴＩＣＫデータ２９１のレコード通番２９１３に格納する。
【０１９６】
次に、約定シミュレーションシステム１は、注文を約定させた価格を、ＴＩＣＫデータ２９１の現値２９１４に格納する。次に、約定シミュレーションシステム１は、約定した株数を、ＴＩＣＫデータの約定高２９１５に格納する。
【０１９７】
次に、約定シミュレーションシステム１は、当該当該ワーク板登録・約定シミュレート処理２５によって、シミュレーション用ワーク板２６の売気配数量２６２が変化したレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの気配値２６１を、ＴＩＣＫデータ２９１の売気配値２９１６に格納する。次に、約定シミュレーションシステム１は、選択したレコードの売気配数量２６２を、ＴＩＣＫデータ２９１の売気配数量２９１８に格納する。
【０１９８】
次に、約定シミュレーションシステム１は、当該当該ワーク板登録・約定シミュレート処理２５によって、シミュレーション用ワーク板２６の買気配数量２６３が変化したレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの気配値２６１を、ＴＩＣＫデータ２９１の買気配値２９１７に格納する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３を、ＴＩＣＫデータ２９１の買気配数量２９１９に格納する。
【０１９９】
以上のように、約定シミュレーションシステム１は、シミュレーションにおけるＴＩＣＫデータ２９１を作成する（３１８）。次に、約定シミュレーションシステム１は、作成したＴＩＣＫデータ２９１を、相場情報として、アルゴリズム取引システムに送信する。
【０２００】
更に、約定シミュレーションシステム１は、作成したＴＩＣＫデータ２９１を、結果ファイル２９に格納する。
【０２０１】
そして、約定シミュレーションシステム１は、当該ワーク板登録・約定シミュレート処理２５を終了する。
【０２０２】
次に、約定シミュレーションシステム１によって実行されるワーク板登録・約定シミュレート処理２５の具体例を説明する。
【０２０３】
図１３は、本発明の実施の形態の約定シミュレーションシステム１によって実行されるワーク板登録・約定シミュレート処理２５の説明図である。
【０２０４】
まず、アルゴ注文が入る前における約定シミュレーションシステム１の処理について説明する。
【０２０５】
約定シミュレーションシステム１は、ＴＩＣＫ注文を受けると、通常通り、ＴＩＣＫ注文をシミュレーション用ワーク板２６に登録する。
【０２０６】
例えば、ＴＩＣＫ注文が５０１円で３株の買注文だとする。この場合、約定シミュレーションシステム１は、シミュレーション用ワーク板２６の気配値２６１が５０１円を示すレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３に、ＴＩＣＫ注文で指定された株数の「３」を加算する。
【０２０７】
更に、約定シミュレーションシステム１は、シミュレーション用ワーク板２６に基づいて、注文を約定させる。
【０２０８】
以上のように、約定シミュレーションシステム１は、ＴＩＣＫ注文をシミュレーション用ワーク板２６に登録する。
【０２０９】
次に、アルゴ注文が入った場合の約定シミュレーションシステム１の処理について説明する。
【０２１０】
約定シミュレーションシステム１は、アルゴ注文を受けると、アルゴ注文をシミュレーション用ワーク板２６に登録する。
【０２１１】
例えば、アルゴ注文が１０株の成行の買注文だとする。すると、約定シミュレーションシステム１は、成行注文に対応するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３に、アルゴ注文で指定された株数の「１０」を加算する。
【０２１２】
更に、約定シミュレーションシステム１は、シミュレーション用ワーク板２６に基づいて、注文を約定させる。ここでは、約定シミュレーションシステム１は、アルゴ注文を約定させる。
【０２１３】
すると、約定後におけるシミュレーション用ワーク板２６では、売注文の最安値が５０３円となる。つまり、アルゴ注文の約定により、売注文の最安値が５０１円から５０３円に上昇する。
【０２１４】
そこで、約定シミュレーションシステム１は、約定後のシミュレーション用ワーク板２６における売注文の最安値の５０３円と買注文の最高値の４９９円とのミッドプライスの５０１円を算出する。次に、約定シミュレーションシステムは、約定直前のシミュレーション用ワーク板２６における売注文の最安値の５０１円と買注文の最高値の４９９円とのミッドプライスの５００円を算出する。
【０２１５】
次に、約定シミュレーションシステム１は、算出した二つのミッドプライスの差（ミッドプライスの変化量）の「１」を、初期インパクトとする。
【０２１６】
次に、当該アルゴ注文の約定直後に、約定シミュレーションシステム１が、ＴＩＣＫ注文を受けたとする。当該ＴＩＣＫ注文が、５０１円で３株の買注文だとする。
【０２１７】
すると、約定シミュレーションシステム１は、ＴＩＣＫ注文発生時におけるマーケットインパクトを算出する。ここでは、ＴＩＣＫ注文がアルゴ注文の約定直後に発生したので、約定シミュレーションシステム１は、初期インパクトの「１」を、マーケットインパクトとする。
【０２１８】
次に、約定シミュレーションシステム１は、当該ＴＩＣＫ注文で指定された価格の５０１円に、算出したマーケットインパクトの「１」を加算することによって、登録価格の５０２円を算出する。
【０２１９】
次に、約定シミュレーションシステム１は、算出した登録価格の５０２円とシミュレーション用ワーク板２６の気配値２６１とが一致するレコードを、シミュレーション用ワーク板２６から選択する。次に、約定シミュレーションシステム１は、選択したレコードの買気配数量２６３に、当該ＴＩＣＫ注文で指定された株数の「３」を加算する。
【０２２０】
以上のように、約定シミュレーションシステム１は、アルゴ注文による影響を考慮して、ＴＩＣＫ注文をシミュレーション用ワーク板２６に登録する。
【０２２１】
本発明の実施の形態の約定シミュレーションシステム１は、過去の特定の日時における約定価格を算出しながら、アルゴリズム取引システムによる取引のシミュレーションを行う。更に、約定シミュレーションシステム１は、アルゴリズム取引システムからの注文による株価への影響をも考慮しながら、アルゴリズム取引システムによる取引のシミュレーションを行う。このため、約定シミュレーションシステムは、アルゴリズム取引システムのパフォーマンスを高精度に検証することができる。
【産業上の利用可能性】
【０２２２】
本発明は、アルゴリズム取引システムのパフォーマンスを検証するための計算機に利用できる。
【図面の簡単な説明】
【０２２３】
【図１】本発明の実施の形態の約定シミュレーションシステムのハードウェア構成のブロック図である。
【図２】本発明の実施の形態の約定シミュレーションシステムの機能構成のブロック図である。
【図３】本発明の実施の形態の約定シミュレーションシステムの処理の概要のフローチャートである。
【図４】本発明の実施の形態の約定シミュレーションシステムに記憶されるＴＩＣＫ原データの構成図である。
【図５】本発明の実施の形態の約定シミュレーションシステムに記憶される分解後注文ファイルの構成図である。
【図６】本発明の実施の形態の約定シミュレーションシステム１に記憶される結果ファイルに含まれるＴＩＣＫデータの構成図である。
【図７】本発明の実施の形態の約定シミュレーションシステムからアルゴリズム取引システムに送信される約定通知の構成図である。
【図８】本発明の実施の形態の約定シミュレーションシステムに記憶されるワーク板の構成図である。
【図９】本発明の実施の形態の約定シミュレーションシステムによって実行される注文分解処理のフローチャートである。
【図１０】本発明の実施の形態の約定シミュレーションシステムによって実行される注文分解処理の説明図である。
【図１１】本発明の実施の形態の約定シミュレーションシステムによって実行されるワーク板登録・約定シミュレート処理のフローチャートである。
【図１２】本発明の実施の形態の約定シミュレーションシステムによって算出されるマーケットインパクトの説明図である。
【図１３】本発明の実施の形態の約定シミュレーションシステムによって実行されるワーク板登録・約定シミュレート処理の説明図である。
【符号の説明】
【０２２４】
１    約定シミュレーションシステム
１０    ＣＰＵ
１１    メモリ
１２    ＨＤＤ
１３    インタフェース
１４    通信制御装置
１５    入力装置
１６    ディスプレイ
１７    ネットワーク
２１    ＴＩＣＫ原データ
２２    注文分解処理
２３    分解後注文ファイル
２４    起動パラメータ
２５    ワーク板登録・約定シミュレート処理
２６    ワーク板
２８    シミュレーションパラメータ
２９    結果ファイル
２１０    ＴＩＣＫデータ
２９１    ＴＩＣＫデータ
２９２    約定通知
【図１】
0005099419.tif 000003
【図２】
0005099419.tif 000004
【図３】
0005099419.tif 000005
【図４】
0005099419.tif 000006
【図５】
0005099419.tif 000007
【図６】
0005099419.tif 000008
【図７】
0005099419.tif 000009
【図８】
0005099419.tif 000010
【図９】
0005099419.tif 000011
【図１０】
0005099419.tif 000012
【図１１】
0005099419.tif 000013
【図１２】
0005099419.tif 000014
【図１３】
0005099419.tif 000015