(57)【要約】【課題】複数のプロセス間における仮想時刻の進行を同期させる技術の実現。【解決手段】第１の仮想時刻算出部54と、第２の仮想時刻算出部56と、入力された基準仮想時刻及び仮想時刻倍率を含む仮想時刻設定情報58を、各仮想時刻算出部54, 56に同時に配信する仮想時刻設定配信部52を備えた仮想時刻の同期システム50。各仮想時刻算出部54, 56は、仮想時刻テーブル60, 62を備え、仮想時刻設定配信部52から仮想時刻設定情報58が配信される度に、仮想時刻テーブル60, 62の基準仮想時刻及び仮想時刻倍率を上書き更新すると共に、配信時のシステム時刻によって配信時システム時刻を上書き更新する。また、自己が担当するプロセスから現時点における仮想時刻の問合わせがある度に、仮想時刻テーブル60, 62を参照し、仮想時刻設定情報配信時から現時点までの経過時間に仮想時刻倍率を乗算した積を、基準仮想時刻に加算して現時点における仮想時刻を算出し、これをプロセスに返す。【選択図】図１９
2010231531.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセス毎に設けられた複数の仮想時刻算出部と、
入力手段を介して基準仮想時刻及び仮想時刻倍率が入力された場合に、この基準仮想時刻及び仮想時刻倍率を含む仮想時刻設定情報を、上記の各仮想時刻算出部に同時に配信する仮想時刻設定配信部を備えた仮想時刻の同期システムであって、
上記の各仮想時刻算出部は、基準仮想時刻、仮想時刻倍率、配信時システム時刻を格納する仮想時刻テーブルを備え、
上記仮想時刻設定配信部から仮想時刻設定情報が配信される度に、上記仮想時刻テーブルの基準仮想時刻及び仮想時刻倍率を上書き更新すると共に、配信時のシステム時刻によって上記仮想時刻テーブルの配信時システム時刻を上書き更新する機能と、
自己が担当するプロセスから現時点における仮想時刻の問合わせがある度に、上記仮想時刻テーブルを参照し、上記配信時システム時刻から現時点までの経過時間に仮想時刻倍率を乗算した積を、上記基準仮想時刻に加算して現時点における仮想時刻を算出し、これを当該プロセスに返す機能を備えたことを特徴とする仮想時刻の同期システム。
【請求項２】
上記プロセスの１つが、株式の銘柄、売買種別、数量、取引開始時刻及び終了時刻、自動執行用アルゴリズムを指定した仮想取引開始のリクエストを受信した際に、上記アルゴリズムに従って算出した価格と、上記アルゴリズムに従い指定数量の範囲内で複数に分割した個別数量を有する、指定銘柄及び指定売買種別による株式の仮想注文情報を生成し、上記アルゴリズムに規定されたタイミングで仮想取引実行用のプロセスに出力する機能を備えた証券取引の自動執行プロセスよりなり、
上記プロセスの他の１つが、株式の銘柄、日付、取引開始時刻及び終了時刻を指定した仮想取引開始のリクエストを受信した際に、株式の銘柄、日時、売買種別、価格、数量を含む外部注文情報が格納された記憶手段から対応の外部注文情報を取り出し、メモリ上に配置させる機能と、
銘柄、売買種別、価格、数量を含む仮想注文情報を受信した際に、仮想取引上の受信日時を付加して上記メモリ上に配置させる機能と、
上記メモリ上に配置された外部注文情報及び仮想注文情報を、それぞれの売買種別、価格、数量、日時に基づいてマッチングさせ、約定を成立させる機能と、
約定が成立した際に、少なくとも仮想注文情報の識別コード、約定数量、約定価格、約定日時を含む約定情報を生成し、上記自動執行用プロセスに送信する機能を備えた株式の仮想取引実行プロセスよりなることを特徴とする請求項１に記載の仮想時刻の同期システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は仮想時刻の同期システムに係り、特に、複数のプロセス間における仮想時刻の進行を同期させる技術に関する。
【背景技術】
【０００２】
個人投資家や新人トレーダ等にとって、いきなり実際の証券取引所において株式の売買を行うことは大きな危険を伴うため、事前に仮想の取引市場を通じて練習を積むことが有益である。
また、特許文献１に示すように、大量の株式の注文をコンピュータが自動執行するシステムが既に提案されている。このシステムは、注文のペースやタイミング、数量、価格戦略等が細かく定義された発注アルゴリズムに従い、証券取引所のコンピュータに対して注文情報を複数回に分けて送信する機能を備えている。
このため、銘柄毎に最適な発注のロジックを設定する目的で、現実の市場の動きを精巧に再現した証券取引シミュレータを通じ、何度も取引の実験を繰り返す必要がある。
【０００３】
このような要望に応えるため、特許文献２に示すように、仮想投資シミュレーション装置が既に提案されている。これは、証券取引所のコンピュータから送信される限られた市況情報の中から取引情報を推定的に抽出し、仮想注文情報と突き合わせることで約定を模擬する機能を備えている。
【０００４】
ところで、現実の証券取引は平日の午前９時〜１１時（前場）、午後１２時３０分〜１５時（後場）のように取引時間が決められており、シミュレーションに用いる上記の取引情報にも現実の取引に投入された際の時刻が関連付けられている。したがって、コンピュータ上において取引情報同士を仮想的にマッチングする際にも、それぞれの時刻順にマッチング対象として仮想取引上に投入されることとなる。
【０００５】
ただし、シミュレーションの開始時刻を実際の取引と同様、午前９時に合わせることは非現実的であり、シミュレーション結果が出るまでに数時間も待たなければならないとすることも非効率的である。
この問題に関し、例えば特許文献３に開示されているように、当該シミュレーション上で独自に進行する「仮想時刻」をシミュレーション用のコンピュータに導入することで、現実の時間から切り離してシミュレーション独自の時間進行を管理することが考えられる。
【特許文献１】特開２００８−２０９９８６
【特許文献２】特開２００２−０４９７５９
【特許文献３】特開平９−１８５５９９
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、証券取引の自動執行プロセスと仮想取引システムを接続し、両者間で株式の売買取引を模擬する場合には、それぞれのシステム（プロセス）間で仮想時刻を同期させる必要があるため、特許文献３のように、単一のコンピュータ（単一のプロセス）上で時間倍率を計算したりタイミングを管理したりする方式では対応できなかった。
そもそも、特許文献３の場合、コマンドの実行開始予定時刻を現在時刻に合わせて調整することにより、シミュレーションの実行時間を可変とする方式であるため、証券取引のように各注文情報に付与された時刻自体に意味があるもののシミュレーションには適用できなかった。
【０００７】
この発明は、このような従来の問題を解決するために案出されたものであり、複数のプロセス間において仮想時刻の進行を同期させることを可能とする技術の実現を目的としている。
【課題を解決するための手段】
【０００８】
上記の目的を達成するため、請求項１に記載した仮想時刻の同期システムは、複数のプロセス毎に設けられた複数の仮想時刻算出部と、入力手段を介して基準仮想時刻及び仮想時刻倍率が入力された場合に、この基準仮想時刻及び仮想時刻倍率を含む仮想時刻設定情報を、上記の各仮想時刻算出部に同時に配信する仮想時刻設定配信部を備えた仮想時刻の同期システムであって、上記の各仮想時刻算出部は、基準仮想時刻、仮想時刻倍率、配信時システム時刻を格納する仮想時刻テーブルを備え、上記仮想時刻設定配信部から仮想時刻設定情報が配信される度に、上記仮想時刻テーブルの基準仮想時刻及び仮想時刻倍率を上書き更新すると共に、配信時のシステム時刻によって上記仮想時刻テーブルの配信時システム時刻を上書き更新する機能と、自己が担当するプロセスから現時点における仮想時刻の問合わせがある度に、上記仮想時刻テーブルを参照し、上記配信時システム時刻から現時点までの経過時間に仮想時刻倍率を乗算した積を、上記基準仮想時刻に加算して現時点における仮想時刻を算出し、これを当該プロセスに返す機能を備えたことを特徴としている。
【０００９】
請求項２に記載した仮想時刻の同期システムは、請求項１のシステムであって、さらに上記プロセスの１つが、株式の銘柄、売買種別、数量、取引開始時刻及び終了時刻、自動執行用アルゴリズムを指定した仮想取引開始のリクエストを受信した際に、上記アルゴリズムに従って算出した価格と、上記アルゴリズムに従い指定数量の範囲内で複数に分割した個別数量を有する、指定銘柄及び指定売買種別による株式の仮想注文情報を生成し、上記アルゴリズムに規定されたタイミングで仮想取引実行用のプロセスに出力する機能を備えた証券取引の自動執行プロセスよりなり、上記プロセスの他の１つが、株式の銘柄、日付、取引開始時刻及び終了時刻を指定した仮想取引開始のリクエストを受信した際に、株式の銘柄、日時、売買種別、価格、数量を含む外部注文情報が格納された記憶手段から対応の外部注文情報を取り出し、メモリ上に配置させる機能と、銘柄、売買種別、価格、数量を含む仮想注文情報を受信した際に、仮想取引上の受信日時を付加して上記メモリ上に配置させる機能と、上記メモリ上に配置された外部注文情報及び仮想注文情報を、それぞれの売買種別、価格、数量、日時に基づいてマッチングさせ、約定を成立させる機能と、約定が成立した際に、少なくとも仮想注文情報の識別コード、約定数量、約定価格、約定日時を含む約定情報を生成し、上記自動執行用プロセスに送信する機能を備えた株式の仮想取引実行プロセスよりなることを特徴としている。
【発明の効果】
【００１０】
請求項１に記載した仮想時刻の同期システムによれば、複数のプロセス毎に仮想時刻算出部が設けられており、各仮想時刻算出部には仮想時刻設定配信部を介して基準仮想時刻及び仮想時刻倍率を含む仮想時刻設定情報が同時に配信され、各仮想時刻算出部は自己が担当するプロセスから現在時刻の照会がある度に、最新の基準仮想時刻及び仮想時刻倍率に基づいて現時点における仮想時刻を算出する機能を備えているため、複数のプロセス間において仮想時刻の進行を同期させることが可能となる。
しかも、現在時刻に合わせてプロセス側のデータの時刻を変更するのではなく、プロセスが参照する時刻を仮想時刻に切り替える方式を採用しているため、プロセス側の各データに関連付けられた時刻の意義を損なうこともない。
【００１１】
請求項２に記載した仮想時刻の同期システムによれば、証券取引の自動執行プロセス及び株式の仮想取引実行プロセスのそれぞれに仮想時刻算出部が設けられ、両プロセスが同じ仮想時刻に沿って必要な処理を実行することが担保されるため、証券取引のシミュレーションを任意の時刻に任意の倍速で実行可能となる。
【発明を実施するための最良の形態】
【００１２】
図１は、この発明に係る仮想時刻の同期システム50を、株式の仮想取引実行プロセス18及び自動執行プロセス22に適用した場合の全体構成を示すブロック図であり、仮想時刻の同期システム50は、仮想時刻設定配信部52と、第１の仮想時刻算出部54と、第２の仮想時刻算出部56を備えている。
【００１３】
仮想取引実行プロセス18は仮想取引システム10の一部を構成しており、仮想取引システム10はこの他に、外部注文情報生成プロセス12と、外部注文情報記憶部14を備えている。
外部注文情報生成プロセス12には、通信ネットワークを介して証券取引所のコンピュータ20が接続されており、市況情報（ティックデータ）が同コンピュータ20から断続的に送信される。
外部注文情報生成プロセス12は、この市況情報に所定のロジックを適用することにより、取引市場における注文情報を推定的に生成する機能を備えているのであるが、詳細は後述する。
【００１４】
仮想取引実行プロセス18には、通信ネットワークを介して自動執行プロセス22が接続されている。
この仮想取引実行プロセス18は、証券取引所のコンピュータ20と同様の機能を備えている。すなわち、外部注文情報同士、あるいは外部注文情報と自動執行プロセス22から入力された仮想注文情報とを突き合わせて約定を成立させたり、未約定の注文情報を気配としてコンピュータのメモリ上に保持したりする機能を発揮する。また、自動執行プロセス22に対して、仮想取引に係る市況情報を送信したり、約定情報を送信したりする機能も備えている。
【００１５】
自動執行プロセス22は、本来、ユーザの操作するクライアント端末24からの指令を受け、比較的大量の注文情報をゲートウェイサーバ26経由で証券取引所のコンピュータ20に送信し、株式の売買注文を自動的に執行するためのものである。
すなわち、自動執行プロセス22は、予め設定された複数の自動執行用アルゴリズムを搭載しており、ユーザが選択または設定したアルゴリズム従い、所定のタイミングで所定数量の注文情報を生成し、証券取引所のコンピュータ20に送信する。また、自動執行プロセス22は、各アルゴリズムの設定に従い、同コンピュータ20から送信された市況情報や約定情報に基づいて発注ペースや価格を自動修正する機能をも備えている。
【００１６】
ここでは、自動執行プロセス22に搭載された各アルゴリズムの有効性を検証する目的で、証券取引所のコンピュータ20に実際に注文情報を送信する前に、株式の仮想取引システム10を介してシミュレーションを行うことを前提にしている。
【００１７】
上記仮想時刻設定配信部52は、独立したサーバのCPU が、専用のアプリケーションプログラムに従って動作することにより、実現される。
また、上記仮想取引システム10の外部注文情報生成プロセス12及び仮想取引実行プロセス18は、他のコンピュータのCPUが、OS及び専用のアプリケーションプログラムに従って必要な処理を実行することにより実現される。また、外部注文情報記憶部14は、同コンピュータのハードディスク内に設けられている。
上記自動執行プロセス22は、他のコンピュータのCPUが、OS及び専用のアプリケーションプログラムに従って必要な処理を実行することにより実現される。
【００１８】
上記第１の仮想時刻算出部54は、自動執行プロセス22と同じコンピュータ上に起動された専用の常駐プログラムに従い、同コンピュータのCPUが必要な処理を実行することによって実現される。
上記第２の仮想時刻算出部54は、仮想取引システム10と同じコンピュータ上に起動された専用の常駐プログラムに従い、同コンピュータのCPUが必要な処理を実行することによって実現される。
仮想時刻設定配信部52と第１の仮想時刻算出部54間、及び仮想時刻設定配信部52と第２の仮想時刻算出部56間は、通信可能に接続されている。
【００１９】
つぎに、図２〜図１０に従い、外部注文情報生成プロセス12による、外部注文情報の生成処理について詳説する。
すなわち、証券取引所のコンピュータ20から提供される市況情報は、銘柄毎の現在価格（約定価格）、出来高（約定数量の累積値）、売り側気配価格（最良気配を含めた上位５つの売り気配価格）、売り側気配数量（最良気配を含めた上位５つの売り気配数量）、買い側気配価格（最良気配を含めた上位５つの買い気配価格）、買い側気配数量（最良気配を含めた上位５つの買い気配数量）など、ごく限られたデータに限定されており、個々の注文内容を明示するデータは含まれていない。
このため、外部注文情報生成プロセス12は、一定の判定ロジック（判定ルール）に従い、上記の限られたデータに基づいて具体的な注文情報を抽出する方式を採用している。
【００２０】
図２(a)は、証券取引所のコンピュータ20から送信された市況情報に基づいて、ある時間「ｔ」における銘柄コード「1234」の気配の分布状況を模式的に表現したものであり、一般に「板」と称されるものを示している。この場合、売り注文が100円に10,000株、101円に3,000株、102円に1,000株ほど待機しており、買い注文が99円に7,000株、98円に2,000株待機している。また、現時点における出来高が123,000株であり、現在価格が100円であることも示されている。
因みに、100円の売り注文が売り注文の中では最も価格が安くて約定し易いため、売り側の最良気配となる。また、99円の買い注文が買い注文の中では最も価格が高くて約定し易いため、買い側の最良気配となる。
【００２１】
これに対し、証券取引所のコンピュータ20から送信された次の市況情報により、後の時間「ｔ＋１」における板の状況が図２(b)のように変化した場合、外部注文情報生成プロセス12は以下のポイントに着目し、「種別：買い／価格：99円／数量：2,000株」の新規指値注文がなされたものと推定する。
(1) 時間ｔとｔ＋１との間で出来高に変化なし。
(2) 買い側最良気配（99円）の数量が7,000株から9,000株に増加している。
【００２２】
実際には、価格を指定しない成行の買い注文が2,000株あった場合でも、図２(b)と同様の変化がもたらされることとなるが、ここでは指値注文と成行注文とを区別する情報が存在しないため、外部注文情報生成プロセス12は全てを指値注文として処理する。
【００２３】
また、図３に示すように、板の状態が(a)から(b)へと変化した場合には、外部注文情報生成プロセス12は以下のポイントに着目し、「種別：買い／価格：100円／数量：2,000株」の新規指値注文を抽出する。
(1) 時間ｔとｔ＋１との間で出来高が2,000株増加している。
(2) 売り側の100円の気配数量が10,000株から8,000株に減少している。
(3) 買い側の気配に変化なし。
【００２４】
この場合、新規100円の買い注文が入り、売り側の最良気配数量が2,000株分減少したものと推定される。
なお、この場合も成行の買い注文が2,000株生じれば図３(b)の板の状態になるが、指値注文と成行注文とを区別する情報が存在しないため、上記と同様、外部注文情報生成プロセス12は指値注文として処理する。
【００２５】
また、図４に示すように、板の状態が(a)から(b)へと変化した場合、外部注文情報生成プロセス12は以下のポイントに着目し、「種別：買い／価格：成行／数量：11,000株」の新規成行注文を抽出する。
(1) 時間ｔとｔ＋１との間で出来高が11,000株増加している。
(2) 売り側の100円の気配数量が10,000株から0株に減少している。
(3) 売り側の101円の気配数量が3,000株から2,000株に減少している。
【００２６】
この場合、売り側の複数の価格にまたがって合計11,000株減少しているので、成行注文があったものと推定される。
なお、101円の買い注文が11,000株あったとしても、図４(b)の板の状態になるが、両者を区別する情報が存在せず、また反対サイド（売り側）の第２気配に対して指値注文をするよりも成行注文を出す可能性の方が通常は高いため、外部注文情報生成プロセス12は成行注文として処理する。
【００２７】
また、図５に示すように、板の状態が(a)から(b)へと変化した場合、外部注文情報生成プロセス12は以下のポイントに着目し、「種別：売り／価格：101円→100円／数量：2,000株」の価格訂正注文を抽出する。
(1) 時間ｔとｔ＋１との間で出来高に変化なし。
(2) 売り側の100円の気配数量が10,000株から12,000株に増加している。
(3) 売り側の101円の気配数量が3,000株から1,000株に減少している。
【００２８】
この場合、売り側の異なる価格間で数量の移動があり、かつ出来高に変化がない以上、外部注文情報生成プロセス12は価格訂正がなされたものと推定する。
【００２９】
また、図６に示すように、板の状態が(a)から(b)へと変化した場合、外部注文情報生成プロセス12は以下のポイントに着目し、「種別：売り／価格：100円→99円／数量：2,000株」の価格訂正注文を抽出する。
(1) 時間ｔとｔ＋１との間で出来高が2,000株増加している。
(2) 売り側の100円の気配数量が10,000株から8,000株に減少している。
(3) 買い側の99円の気配数量が7,000株から5,000株に減少している。
【００３０】
この場合、売り側及び買い側の双方において異なる価格で同数減少しているため、外部注文情報生成プロセス12は何れかが価格訂正されて約定が成立したものとみなし、現在価格が99円となっていることから、売り側の2,000株の注文が100円から99円に価格訂正されたものと推定する。
なお、売り側の2,000株の注文が100円から成行に価格訂正された場合でも、同様の板の遷移となるが、両者を区別する情報が存在しないため、外部注文情報生成プロセス12は指値の変更として処理する。
【００３１】
また、図７に示すように、板の状態が(a)から(b)へと変化した場合、外部注文情報生成プロセス12は以下のポイントに着目し、「種別：売り／価格：100円→成行／数量：8,000株」の価格訂正注文を抽出する。
(1) 時間ｔとｔ＋１との間で出来高が8,000株増加している。
(2) 売り側の100円の気配数量が10,000株から2,000株に減少している。
(3) 買い側の99円の気配数量が7,000株から0株に減少している。
(4) 買い側の98円の気配数量が2,000株から1,000株に減少している。
【００３２】
この場合、売り側及び買い側の双方において出来高の増加分と同じ数量だけ減少しており、かつ買い側では複数の価格にわたって減少が生じているため、外部注文情報生成プロセス12は、売り側の価格訂正によって約定が成立したものと推定する。また、買い側では複数の価格にわたって約定が成立しているため、売り側の100円の気配数量の中、8,000株について100円から成行に価格訂正されたものと推定する。
なお、売り側の8,000株の注文が100円から98円に価格訂正された場合でも同様の板の遷移となるが、両者を区別する情報が存在せず、また反対サイドの第２気配へ価格訂正するよりも成行への訂正を行う可能性の方が通常は高いため、外部注文情報生成プロセス12は成行への価格変更として処理する。
【００３３】
また、図８に示すように、板の状態が(a)から(b)へと変化した場合、外部注文情報生成プロセス12は以下のポイントに着目し、「種別：売り／価格：100円→99円／数量：8,000株」の価格訂正注文を抽出する。
(1) 時間ｔとｔ＋１との間で出来高が7,000株増加している。
(2) 売り側の100円の気配数量が10,000株から2,000株に減少している。
(3) 売り側の99円の気配数量が0株から1,000株に増加している。
(4) 買い側の99円の気配数量が7,000株から0株に減少している。
【００３４】
この場合、出来高が7,000株増加し、買い側で7,000株減少しているため、外部注文情報生成プロセス12は、売り側で価格訂正が生じた結果、約定が成立したものと推定する。また、売り側の100円の気配数量が8,000株減少し、その減少分と出来の増加分7,000株との差である1,000株が売り側の99円の気配数量として増加しているため、売り側の100円の気配数量の中、8,000株について100円から99円に価格訂正されたものと推定する。
【００３５】
また、図９に示すように、板の状態が(a)から(b)へと変化した場合、外部注文情報生成プロセス12は以下のポイントに着目し、「種別：買い／価格：99円／数量：2,000株」の取消注文がなされたものと推定する。
(1) 時間ｔとｔ＋１との間で出来高の変化なし。
(2) 買い側の99円の気配数量が7,000株から5,000株に減少している。
【００３６】
なお、減株訂正が行われた場合も同様の板の遷移となるが、両者を区別する情報が存在しないため、外部注文情報生成プロセス12は減株訂正注文の推定は行わず、全て取消注文にまとめることとしている。
【００３７】
外部注文情報生成プロセス12によって抽出された外部注文情報は、上記のように具体的な価格情報を備えているが、これらを仮想取引実行プロセス18に外部注文情報としてそのまま投入するのは適切ではない。
すなわち、仮想取引実行プロセス18には自動執行プロセス22からも仮想注文情報が所定のタイミングで投入される結果、現在価格や気配価格、気配数量、出来高に影響を及ぼすこととなり、外部注文情報の価格が持つ意義に変質が生じる。
【００３８】
例えば、図１０(a)に示すように、証券取引所における現実取引の板において買い気配の先頭に躍り出る「買い／96円／5,000株」の外部注文が存在した場合に、図１０(b)に示すように、仮想取引実行プロセス18によって実行される仮想取引上の板において上記外部注文情報の前に「買い／96円／3,000株」の仮想注文が発せられていると、この外部注文は気配の先頭に立つことができなくなる。
リアルな市場の動きを再現するためには、この外部注文を発した投資家の心理を慮り、仮想取引の板においても買い気配の先頭に立てるよう「買い／97円」の位置に5,000株の注文を投入すべきである。
【００３９】
そこで外部注文情報生成プロセス12は、外部注文情報の価格を、当該外部注文情報が発せられた際の現実取引の状況を反映させた相対価格に変換する処理を実行する。
この相対価格は、具体的には現実取引における基準となる価格種別の指定と、この基準価格種別に係る値からの距離（価格の開き具合）とを組合せた、（基準価格種別，相対距離）の形式で表現される。以下、個別に説明する。
【００４０】
(1)［外部注文情報の価格が「成行」の場合］
この場合には、そのまま成行として仮想取引に投入すればよいので、以下のように相対価格が表現される。
（成行，０）
【００４１】
(2)［外部注文情報の価格が現実取引における最良気配と同じか有利な価格の場合］
相対価格は、（最良気配価格，ｘ）として表現される。
ここで「ｘ」には最良気配価格からの距離が代入されるものであり、最良気配と同じ価格の場合には「０」となる。
例えば、図１１に示すように、現実取引における買い側最良気配が95円の状態にあるときに、これよりも買い手にとって価格的に有利な「買い／94円／5,000株」の外部注文が発生していた場合、その相対価格は以下のように表現される。
（最良気配価格，１）
【００４２】
94円は、最良気配価格である95円から１単位分離れているため、相対距離として「１」が代入されている。
なお、相対距離の１単位は単純に「１円」となるのではなく、当該銘柄の株価水準に応じて認められた最小値付け幅、すなわち「１ティック」が該当する。したがって、銘柄によっては「１ティック＝１円」となる場合もあるが、「１ティック＝100円」、「１ティック＝1,000円」等となる場合もある。
【００４３】
(3)［外部注文情報の価格が現実取引における反対側最良気配と同じか不利な価格の場合］
相対価格は、（反対側最良気配価格，ｘ）として表現される。
ここで「ｘ」には反対側最良気配価格からの距離が代入されるものであり、反対側最良気配と同じ価格の場合には「０」となる。
【００４４】
例えば、図１２に示すように、現実取引における板の売り側最良気配（反対側最良気配）が100円の状態にあるときに、これよりも買い手にとって価格的に不利な「買い／101円／5,000株」の外部注文が発生していた場合、その相対価格は以下のように表現される。
（反対側最良気配価格，１）
101円は、反対側最良気配価格である100円から１ティック離れているため、相対距離として「１」が代入されている。
【００４５】
(4)［外部注文情報の価格が現実取引における最良気配より不利で、かつ反対側最良気配よりも有利な価格の場合］
相対価格は、（中間，ｘ）として表現される。
ここで「ｘ」は、以下の式によって求められる。
｜最良気配価格−外部注文情報の価格｜／｜最良気配価格−反対側最良気配価格｜
【００４６】
例えば、図１３に示すように、現実取引における板の最良気配が95円、売り側最良気配（反対側最良気配）が100円の状態にあるときに、これらの中間位置に「買い／98円／5,000株」の外部注文情報が発生していた場合、その相対価格は以下のように表現される。
（中間，0.6）
【００４７】
(5)［外部注文情報の価格が現実取引における最良気配より不利であるが、反対側最良気配が存在しない場合］
相対価格は(2)の場合と同様、（最良気配価格，ｘ）として表現されるのであるが、この場合「ｘ」には負の値が代入される。
【００４８】
例えば、図１４に示すように、現実取引における板の最良気配が95円で、売り側最良気配（反対側最良気配）が存在しない状態で「買い／98円／5,000株」の外部注文が発生していた場合、その相対価格は以下のように表現される。
（最良気配価格，−３）
【００４９】
(6)［外部注文情報の価格が現実取引における反対側最良気配よりも有利であるが、最良気配が存在しない場合］
相対価格は(3)の場合と同様、（反対側最良気配価格，ｘ）として表現されるのであるが、この場合「ｘ」には負の値が代入される。
【００５０】
例えば、図１５に示すように、現実取引における板の売り側最良気配（反対側最良気配）が100円で、買い側最良気配が存在しない状態で「買い／98円／5,000株」の外部注文が発生していた場合、その相対価格は以下のように表現される。
（反対側最良気配価格，−２）
【００５１】
(7)［最良気配及び反対側最良気配の両者が存在しない場合］
相対価格は、（現在価格，ｘ）として表現される。
ここで「ｘ」には現在価格からの距離が代入されるものであり、現在価格と同じ価格の場合には「０」が、現在価格よりも有利な場合には正の符号付の数値が、現在価格よりも不利な場合には負の符号付の数値が代入される。
【００５２】
例えば、図１６に示すように、現実取引における板上に一切の気配が存在せず、現在価格＝100円の状態で、「買い／98円／5,000株」の外部注文が発生していた場合、その相対価格は以下のように表現される。
（現在価格，２）
【００５３】
これに対し、仮に同じ状況で「買い／101円／5,000株」の外部注文が発生していた場合、その相対価格は（現在価格，−１）と表現されることとなる。また、同じ状況において「売り／98円／5,000株」の外部注文が発生していた場合、その相対価格は（現在価格，−２）と表現され、「売り／101円／5,000株」の外部注文が発生していた場合、その相対価格は（現在価格，１）と表現される。
【００５４】
以上の変換ルールはあくまでも一例であり、他の変換ルールに基づいて外部注文情報の具体的な価格を相対価格に変換することも当然に可能である。例えば、基準価格種別の選択や、基準価格種別に係る値との距離の表現形式等を適宜変更することができる。
【００５５】
外部注文情報生成プロセス12は、上記のように外部注文情報の具体的な価格を、外部注文情報が発せられた時点における板の状況（最良気配価格、反対側最良気配価格、現在価格との位置関係）を反映させた相対価格に変換した後、外部注文情報記憶部14に格納する。図１７は外部注文情報の構成例を示すものであり、日付、時刻、銘柄、売買種別、注文種別、価格、相対価格、数量のデータ項目を備えている。
因みに、図１７(a)は新規指値注文情報に対応しており、注文種別として「新規」が設定されると共に、価格として「99円」が、相対価格として「（最良気配価格,１）」設定されている。また、図１７(b)は新規成行注文情報に対応しており、注文種別として「新規」が設定されると共に、価格として「成行」が、相対価格として「（成行,０）」が設定されている。また、図１７(c)は価格訂正注文情報に対応しており、注文種別として「価格訂正」が設定されると共に、価格として「101円→100円」が、相対価格として「（最良気配価格,１）→（最良気配価格,０）」が設定されている。図１７(d)は取消注文情報に対応しており、注文種別として「取消」が設定されると共に、価格として「99円」が、相対価格として「（最良気配価格,１）」が設定されている。
これらの外部注文情報は、仮想取引実行プロセス18によって相対価格が仮想取引の現況を反映させた具体的な価格に変換された上で、自動執行プロセス22から投入される仮想注文情報等とのマッチングに供されるのであるが、詳細は後述する。
【００５６】
つぎに、仮想取引実行プロセス18及び自動執行プロセス22による仮想取引処理について説明する。
まずユーザは、図１８に示すように、クライアント端末24の画面上にシミュレート条件設定画面30を呼び出し、仮想取引の条件を設定する。
すなわち、シミュレートデータ日付設定欄には、今回の仮想取引において再現したい過去の特定の日付を入力する。
また、仮想時刻設定欄には、基準仮想時刻（例えば「08:00」）を選択入力すると共に、倍速設定欄には仮想時刻の進行速度を現実の時間に対する倍数（例えば「15」倍速）で選択入力する。
【００５７】
またユーザは、アルゴリズム設定欄において、今回の仮想取引において実験したいアルゴリズムを指定する。図においては、「VWAP1」と命名されたアルゴリズムと、「Participation（感応）」と命名された２種類のアルゴリズムが指定されている。
売買種別設定欄には「売／買」の何れかを選択入力し、銘柄設定欄には仮想取引の対象となる具体的な銘柄コード及び銘柄名を、数量設定欄には取引数量を入力する。
また、開始時刻及び終了時刻設定欄には、取引の時間的範囲を入力する。
【００５８】
以上の設定を終了したユーザは、「ＯＫ」ボタンをクリックし、自動執行プロセス22、仮想取引実行プロセス18、仮想時刻設定配信部52に対して仮想取引を指令する。
これに対し仮想時刻設定配信部52は、図１９に示すように、上記仮想取引に係る設定情報の中から「基準仮想時刻＝08：00」及び「倍率＝15倍」の仮想時刻設定情報58を取り出し、第１の仮想時刻算出部54及び第２の仮想時刻算出部56に対して同報配信する。
【００５９】
図２０のフローチャートに示すように、この仮想時刻設定情報58を受信した第１の仮想時刻算出部54は（Ｓ10）、内部に保持している第１の仮想時刻テーブル60を更新する（Ｓ12）。この結果、第１の仮想時刻テーブル60の基準仮想時刻項目には最新の基準仮想時刻である「08：00」が記録され、仮想時刻倍率項目には最新の指定倍率である「15倍」が記録される。また、配信時システム時刻には、この同報電文を受け取った時点のシステム時刻（コンピュータの時計回路から出力される現在時刻）である「13：00」が記録される。
【００６０】
自動執行プロセス22は、仮想取引に関して時間的条件を判断する必要が生じた場合、システム時刻を参照する代わりに、第１の仮想時刻算出部54に対して仮想時刻（仮想取引上の現在時刻）を問い合わせる。
これを受けた第１の仮想時刻算出部54は（Ｓ14）、第１の仮想時刻テーブル60を参照し、以下の式に基づいて仮想時刻を算出した後（Ｓ16）、自動執行プロセス22に送信する（Ｓ18）。
仮想時刻＝基準仮想時刻＋仮想時刻倍率×（現在のシステム時刻−配信時システム時刻）
【００６１】
例えば、基準仮想時刻＝08：00、配信時システム時刻＝13：00、仮想時刻倍率＝15倍、現在のシステム時刻＝13：10とした場合、08：00＋15×（13：10−13：00）＝10：30となり、10：30の仮想時刻が自動執行プロセス22に対して通知される。
なお、上記の計算例は説明の便宜上「分」単位に単純化しているが、実際には「ミリ秒」単位の精度で仮想時刻が算出される。
【００６２】
また、上記の同報電文を受信した第２の仮想時刻算出部56も、内部に保持している第２の仮想時刻テーブル62を、仮想時刻設定情報58及び受信時のシステム時刻に基づいて更新する。この結果、仮想時刻テーブルの仮想時刻項目には最新の基準仮想時刻である「08：00」が記録され、仮想時刻倍率項目には最新の指定倍率である「15倍」が記録される。また、配信時システム時刻には、「13：00」が記録される。
【００６３】
仮想取引実行プロセス18は、仮想取引に関して時間的条件を判断する必要が生じた場合、システム時刻を参照する代わりに、第２の仮想時刻算出部56に対して現在時刻を問い合わせる。
これを受けた第２の仮想時刻算出部56は、上記と同様、以下の式に基づいて仮想時刻を算出し、仮想取引実行プロセス18に返す。
仮想時刻＝基準仮想時刻＋仮想時刻倍率×（現在のシステム時刻−配信時システム時刻）
【００６４】
以上のように、仮想時刻設定配信部52から第１の仮想時刻算出部54及び第２の仮想時刻算出部56に対して同時に同じ内容の仮想時刻設定情報58（基準仮想時刻＋倍率）が配信され、第１の仮想時刻算出部54及び第２の仮想時刻算出部56はこれ以降、配信時からの現実の経過時間に倍率を乗じた値を基準仮想時刻に加算して仮想上の現在時刻を算出し、自動執行プロセス22及び仮想取引実行プロセス18に出力する仕組みを備えている。
このため、第１の仮想時刻算出部54及び第２の仮想時刻算出部56が参照する配信時システム時刻さえ正確であれば、以後、自動執行プロセス22及び仮想取引実行プロセス18は、それぞれ同じ仮想時刻に基づき、同一倍速での仮想取引が可能となる。
【００６５】
具体的には、仮想取引上の現在時刻が09：00になった時点で、仮想取引実行プロセス18は外部注文情報記憶部14から指定された日付及び銘柄の外部注文情報を取り出し、コンピュータのメモリ上に配置させる。
また自動執行プロセス22は、仮想取引上の現在時刻が09：00になった時点で、ユーザが指定した銘柄、売買種別の、指定されたアルゴリズムに従って算出した数量、価格を備えた仮想注文情報を生成し、仮想取引実行プロセス18に複数回に分けて出力する。
これに対し仮想取引実行プロセス18は、送信された仮想注文情報に対して仮想取引上の現在日時を受信日時（日付／時刻）として付加した後、上記メモリ上に順次配置させる。この際、仮想取引実行プロセス18から自動執行プロセス22に対して、当該仮想注文情報を一意に特定するための識別コードを含む受付情報が返される。
仮想取引実行プロセス18は、仮想取引上の現在時刻を経過した日時情報を備えた外部注文情報と、仮想注文情報の相互間でマッチング処理を実行する。
このマッチング処理のパターンとしては、以下のものがある。
(1) 仮想注文情報と外部注文情報間での約定
(2) 仮想注文情報間での約定
※同じ時間的範囲を指定した同じ銘柄の買い注文と売り注文が自動執行プロセス22から送信されている場合
(3) 外部注文情報間での約定
【００６６】
このマッチング処理に際し、仮想取引実行プロセス18は、各外部注文情報の相対価格をマッチング時点における最良気配価格、反対側最良気配価格、現在価格に基づき、所定の変換ロジックに従って仮想取引上の具体的な価格に変換する。
この前提として仮想取引実行プロセス18は、メモリ上に配置された仮想注文情報と、同メモリ上に配置された外部注文情報の中で仮想取引上の現在時刻よりも古い時刻を備えた外部注文情報の売買種別、注文種別、価格、数量に基づいて、現時点における売り側の気配価格及び数量と、買い側の気配価格及び数量を算出する。
【００６７】
以下に、外部注文情報の相対価格を仮想取引上の具体的な価格に変換するロジック（ルール）を説明する。
(1) 基準価格種別＝「成行」の場合
そのまま「成行」注文とする。
【００６８】
(2) 基準価格種別＝「最良気配価格」の場合
a) 原則：仮想取引上の最良気配価格からｘティック有利な価格とする。
b) 最良気配が存在しない場合：反対側最良気配価格よりも（ｘ＋１）ティック有利な価格とする。
c) 最良気配及び反対側最良気配が存在しない場合：現在価格よりもｘティック有利な価格とする。
【００６９】
(3) 基準価格種別＝「反対側最良気配価格」の場合
a) 原則：仮想取引上の反対側最良気配価格からｘティック不利な価格とする。
b) 反対側最良気配が存在しない場合：最良気配価格よりも（ｘ＋１）ティック不利な価格とする。
c) 反対側最良気配及び最良気配が存在しない場合：現在価格よりもｘティック不利な価格とする。
【００７０】
(4) 基準価格種別＝「中間」の場合
a) 最良気配と反対側最良気配が存在し、かつ両気配間に２ティック以上の乖離が存在する場合：最良気配価格からｘ・｜最良気配価格−反対側最良気配価格｜だけ不利な値を求め、これに最も近い呼値を具体的な価格とする。ただし、この価格が最良気配価格と同じか有利なものとなった場合には最良気配価格より１ティック不利な価格とし、反対側最良価格と同じか不利なものとなった場合には反対側最良気配価格より１ティック有利な価格とする。
b) 最良気配と反対側最良気配が存在し、かつ両気配間の乖離が１ティック以下の場合：最良気配価格とする。
c) 最良気配が存在し、反対側最良気配が存在しない場合：最良気配価格より１ティック不利な価格とする。
d) 最良気配が存在せず、反対側最良気配が存在する場合：反対側最良気配価格より１ティック有利な価格とする。
e) 最良気配及び反対側最良気配が存在しない場合：現在価格とする。
【００７１】
(5) 基準価格＝「現在価格」の場合
a) 最良気配と反対側最良気配の両方が存在する場合：仲値からｘティックの位置の価格とする。ここで「仲値」とは、（買い側最良気配価格＋売り側最良気配価格）÷２によって算出される値を意味する。
b) 最良気配が存在し、反対側最良気配が存在しない場合：最良気配価格からｘティックの位置の価格とする。
c) 最良気配が存在せず、反対側最良気配が存在する場合：反対側最良気配価格からｘティックの位置の価格とする。
d) 最良気配及び反対側最良気配が存在しない場合：現在価格からｘティックの位置の価格とする。
【００７２】
以上の変換ルールはあくまでも一例であり、他の変換ルールに基づいて外部注文情報の相対価格を仮想取引上の具体的な価格に変換することも当然に可能である。例えば、適用する基準価格種別の選択や、基準価格種別に係る値との距離の設定等を適宜変更することができる。
また、仮想取引の開始直後には外部注文情報の相対価格を具体的な価格に変換するための基準となる値が存在しないため、例外的に外部注文情報の現実の価格がそのままマッチングに用いられる。
【００７３】
以上のようにして、仮想取引実行プロセス18は外部注文情報の相対価格を仮想取引上の具体的な価格に変換した後、メモリ上に配置させ、外部注文情報同士、外部注文情報と仮想注文情報間、仮想注文情報同士の突き合わせを行い、価格がマッチする売買注文情報間で出来を形成してゆく。
【００７４】
仮想取引実行プロセス18から自動執行プロセス22に対しては、証券取引所のコンピュータ20と同様、市況情報（現在価格、気配価格、気配数量、出来高等）や約定情報が、現在時刻（第２の仮想時刻算出部56によって算出された仮想時刻）と共に随時送信される。
【００７５】
これを受けた自動執行プロセス22は、各アルゴリズムの設定に従って発注動作に修正を加える。
例えば、発注後５分間を経過しても出来がつかない場合に、当初指値で出していた注文を成行注文に変更したり、出来高に占める自己の占有率が30％を超えた場合に新規注文を一時停止したりすることが該当する。この際、自動執行プロセス22は第１の仮想時刻算出部54に現在時刻を問い合わせ、返された仮想時刻から発注時刻を減算することにより、「発注後５分間経過」したか否かの判断を行う。
【００７６】
仮想取引の終了時刻（15：00）が到来すると、仮想取引実行プロセス18によるマッチング処理が停止される。同時に、自動執行プロセス22による注文情報の送信も停止される。また、自動執行プロセス22は、仮想取引実行プロセス18から送信された市況情報及び約定情報に基づいて今回の仮想取引の成績を分析し、成績報告画面をクライアント端末24に送信する。
【００７７】
図２１は、この成績報告画面32を示すものであり、市場VWAPと各アルゴリズムのVWAPとの乖離率の高低によって、アルゴリズムの成績を評価する仕組みである。
ここで「VWAP」とは、「Volume Weighted Average Price」の略であり、取引所で成立した売買について、価格毎の出来高を加味して加重平均を算出した「出来高加重平均価格（平均株価）」を意味する。
この結果に基づいて各アルゴリズムの設定項目について微調整を行った後、証券取引所のコンピュータ20に接続して本番での取引を実行することにより、自動執行プロセス22は高いパフォーマンスを発揮することが可能となる。
【００７８】
上記のように、仮想取引システム10は、外部注文情報の具体的な価格情報が、外部注文情報生成プロセス12によって外部注文情報が発生した時点における現実取引の状況を反映させた相対価格に変換されると共に、この外部注文情報を仮想取引に投入する際には、仮想取引実行プロセス18によって相対価格が仮想取引の現状に対応した具体的な価格に変換される仕組みを備えている。このため、仮想注文情報の投入によって仮想取引の状況が現実取引の状況と異なってしまっても、この変化を反映させた価格が外部注文情報に付け直される結果、仮想注文情報によって生じたマーケットインパクトを反映させたシミュレーション結果を得ることが可能となる。
【００７９】
また、仮想時刻設定配信部52から第１の仮想時刻算出部54及び第２の仮想時刻算出部56に対して同時に仮想時刻設定情報58が配信され、現在時刻を必要とする場合、自動執行プロセス22及び仮想取引実行プロセス18は第１の仮想時刻算出部54及び第２の仮想時刻算出部56にそれぞれ仮想時刻を問い合わせ、これに対して第１の仮想時刻算出部54及び第２の仮想時刻算出部56は、それぞれ同じ基準仮想時刻及び倍率に基づいて現時点での仮想時刻を算出する仕組みを備えているため、自動執行プロセス22及び仮想取引実行プロセス18は同じ仮想上の時間軸に沿って注文処理や注文間のマッチング処理を実行可能となり、相互間に矛盾や齟齬が生じることがない。
【図面の簡単な説明】
【００８０】
【図１】この発明に係る仮想時刻の同期システムを、株式の仮想取引実行プロセス及び自動執行プロセスに適用した場合の全体構成を示すブロック図である。
【図２】外部注文情報の抽出例を示す説明図である。
【図３】外部注文情報の抽出例を示す説明図である。
【図４】外部注文情報の抽出例を示す説明図である。
【図５】外部注文情報の抽出例を示す説明図である。
【図６】外部注文情報の抽出例を示す説明図である。
【図７】外部注文情報の抽出例を示す説明図である。
【図８】外部注文情報の抽出例を示す説明図である。
【図９】外部注文情報の抽出例を示す説明図である。
【図１０】マーケットインパクトの具体例を示す説明図である。
【図１１】外部注文情報の相対価格を説明する図である。
【図１２】外部注文情報の相対価格を説明する図である。
【図１３】外部注文情報の相対価格を説明する図である。
【図１４】外部注文情報の相対価格を説明する図である。
【図１５】外部注文情報の相対価格を説明する図である。
【図１６】外部注文情報の相対価格を説明する図である。
【図１７】外部注文情報の具体例を示す図である。
【図１８】シミュレート条件設定画面の具体例を示す図である。
【図１９】仮想時刻の同期システムの詳細を示す説明図である。
【図２０】第１の仮想時刻算出部における処理手順を示すフローチャートである。
【図２１】シミュレート結果である成績報告画面の具体例を示す図である。
【符号の説明】
【００８１】
10    株式の仮想取引システム
12    外部注文情報生成プロセス
14    外部注文情報記憶部
18    仮想取引実行プロセス
20    証券取引所のコンピュータ
22    自動執行プロセス
24    クライアント端末
26    ゲートウェイサーバ
30    シミュレート条件設定画面
32    成績報告画面
50    仮想時刻の同期システム
52    仮想時刻設定配信部
54    第１の仮想時刻算出部
56    第２の仮想時刻算出部
58    仮想時刻設定情報
60    第１の仮想時刻テーブル
62    第２の仮想時刻テーブル
【図１】
2010231531.tif 000003
【図２】
2010231531.tif 000004
【図３】
2010231531.tif 000005
【図４】
2010231531.tif 000006
【図５】
2010231531.tif 000007
【図６】
2010231531.tif 000008
【図７】
2010231531.tif 000009
【図８】
2010231531.tif 000010
【図９】
2010231531.tif 000011
【図１０】
2010231531.tif 000012
【図１１】
2010231531.tif 000013
【図１２】
2010231531.tif 000014
【図１３】
2010231531.tif 000015
【図１４】
2010231531.tif 000016
【図１５】
2010231531.tif 000017
【図１６】
2010231531.tif 000018
【図１７】
2010231531.tif 000019
【図１８】
2010231531.tif 000020
【図１９】
2010231531.tif 000021
【図２０】
2010231531.tif 000022
【図２１】
2010231531.tif 000023