特許第6066881号(P6066881)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 新日鉄住金ソリューションズ株式会社の特許一覧

特許6066881情報処理システム、情報処理装置、情報処理方法及びプログラム
<>
  • 特許6066881-情報処理システム、情報処理装置、情報処理方法及びプログラム 図000002
  • 特許6066881-情報処理システム、情報処理装置、情報処理方法及びプログラム 図000003
  • 特許6066881-情報処理システム、情報処理装置、情報処理方法及びプログラム 図000004
  • 特許6066881-情報処理システム、情報処理装置、情報処理方法及びプログラム 図000005
  • 特許6066881-情報処理システム、情報処理装置、情報処理方法及びプログラム 図000006
  • 特許6066881-情報処理システム、情報処理装置、情報処理方法及びプログラム 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6066881
(24)【登録日】2017年1月6日
(45)【発行日】2017年1月25日
(54)【発明の名称】情報処理システム、情報処理装置、情報処理方法及びプログラム
(51)【国際特許分類】
   G06Q 40/04 20120101AFI20170116BHJP
   G06F 19/00 20110101ALI20170116BHJP
【FI】
   G06Q40/04
   G06F19/00 110
【請求項の数】14
【全頁数】24
(21)【出願番号】特願2013-212050(P2013-212050)
(22)【出願日】2013年10月9日
(65)【公開番号】特開2015-75942(P2015-75942A)
(43)【公開日】2015年4月20日
【審査請求日】2015年12月3日
(73)【特許権者】
【識別番号】000191076
【氏名又は名称】新日鉄住金ソリューションズ株式会社
(74)【代理人】
【識別番号】100090273
【弁理士】
【氏名又は名称】國分 孝悦
(72)【発明者】
【氏名】西村 太志
【審査官】 大野 朋也
(56)【参考文献】
【文献】 特開2000−163392(JP,A)
【文献】 特開2003−162428(JP,A)
【文献】 特開2000−016295(JP,A)
【文献】 特開平08−194680(JP,A)
【文献】 米国特許第06879948(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00−99/00
G06F 19/00
(57)【特許請求の範囲】
【請求項1】
シミュレーションの対象期間の一部の期間である部分期間を単位として、前記部分期間に実行すべきシミュレーションのそれぞれを実行する複数のシミュレーション手段と、
仮想時間軸における前記部分期間に相当する実時間をカウントするカウント手段と、
前記カウント手段が前記部分期間のカウントを終了する度に、直前にカウントが終了した前記部分期間に続く、次の部分期間のシミュレーションの開始を前記複数のシミュレーション手段に指示すると共に、カウントの開始を前記カウント手段に指示する開始管理手段と
を有し、
前記シミュレーション手段は、前記開始管理手段から前記部分期間のシミュレーションの開始を指示される度に、前記次の部分期間のシミュレーションを実行し、
前記カウント手段は、前記開始管理手段から前記部分期間のカウントの開始を指示される度に、前記次の部分期間のカウントを開始する情報処理システム。
【請求項2】
前記開始管理手段は、前記複数のシミュレーション手段それぞれによる前記部分期間のシミュレーションが完了した時点において、前記カウントが終了していない場合に、前記カウントが終了するまで、前記次の部分期間のシミュレーションの開始及び前記カウントの開始を指示することなく待機する請求項1に記載の情報処理システム。
【請求項3】
前記カウント手段は、実時間軸において前記複数のシミュレーション手段が前記部分期間のシミュレーションを実行するのに要する実処理時間に比べて短い、前記仮想時間軸における部分期間に相当する実時間をカウントする請求項2に記載の情報処理システム。
【請求項4】
前記部分期間の設定指示を受け付ける第1の受付手段をさらに有し、
前記複数のシミュレーション手段は、前記設定指示に係る前記部分期間のシミュレーションを実行し、
前記カウント手段は、前記設定指示に係る前記部分期間をカウントする請求項1乃至3何れか1項に記載の情報処理システム。
【請求項5】
前記部分期間に相当する実時間の設定指示を受け付ける第2の受付手段をさらに有し、
前記複数のシミュレーション手段は、前記設定指示に係る前記部分期間のシミュレーションを実行し、
前記カウント手段は、前記設定指示に係る前記部分期間をカウントする請求項1乃至3何れか1項に記載の情報処理システム。
【請求項6】
前記仮想時間軸は、実時間軸のN(N>0)倍の速度で時間が経過する時間軸である請求項1乃至5何れか1項に記載の情報処理システム。
【請求項7】
実時間軸に対する前記仮想時間軸の倍率の設定指示を受け付ける第3の受付手段をさらに有し、
前記カウント手段は、前記設定指示に係る倍率の前記仮想時間軸における前記部分期に相当する実時間をカウントする請求項1乃至6何れか1項に記載の情報処理システム。
【請求項8】
前記情報処理システムは、複数のシミュレーション装置と、前記複数のシミュレーション装置の同期を管理する情報処理装置とを有し、
前記複数のシミュレーション装置それぞれは、前記複数のシミュレーション手段それぞれを有し、
前記情報処理装置は、前記開始管理手段と、前記カウント手段とを有する請求項1乃至7何れか1項に記載の情報処理システム。
【請求項9】
シミュレーションの対象期間の一部の期間である部分期間を単位として、前記部分期間に実行すべき複数のシミュレーションのそれぞれを実行する複数のシミュレーション手段と、
仮想時間軸における前記部分期間に相当する実時間をカウントするカウント手段と、
前記複数のシミュレーション手段すべてが前記部分期間のシミュレーションを完了し、かつ、前記カウント手段が前記部分期間のカウントを終了した場合に、シミュレーションが完了した前記部分期間に続く、次の部分期間のシミュレーションの開始を前記複数のシミュレーション手段に指示すると共に、前記次の部分期間のカウントの開始を前記カウント手段に指示する開始管理手段と、
を有し、
前記シミュレーション手段は、前記開始管理手段から前記部分期間のシミュレーションの開始を指示される度に、前記部分期間のシミュレーションを実行し、
前記カウント手段は、前記開始管理手段から前記部分期間のカウントの開始を指示される度に、前記部分期間のカウントを開始する情報処理システム。
【請求項10】
仮想時間軸における、シミュレーションの対象期間の一部の期間である部分期間に相当する実時間をカウントするカウント手段と、
前記カウント手段が前記部分期間のカウントを終了する度に、直前にカウントが終了した前記部分期間に続く、次の部分期間のシミュレーションの開始指示を、複数のシミュレーション装置に送信する送信手段と
を有する情報処理装置。
【請求項11】
情報処理システムが実行する情報処理方法であって、
シミュレーションの対象期間の一部の期間である部分期間を単位として、前記部分期間に実行すべきシミュレーションのそれぞれを実行する複数のシミュレーションステップと、
仮想時間軸における前記部分期間に相当する実時間をカウントするカウントステップと、
前記部分期間のカウントを終了する度に、直前にカウントが終了した前記部分期間に続く、次の部分期間のシミュレーションの開始を前記複数のシミュレーションステップに指示すると共に、カウントの開始を前記カウントステップに指示する開始管理ステップと
を含み、
前記シミュレーションステップにおいては、前記開始管理ステップにより前記部分期間のシミュレーションの開始を指示される度に、前記次の部分期間のシミュレーションを実行し、
前記カウントステップにおいては、前記開始管理ステップにより前記部分期間のカウントの開始を指示される度に、前記次の部分期間のカウントを開始する情報処理方法。
【請求項12】
情報処理システムが実行する情報処理方法であって、
シミュレーションの対象期間の一部の期間である部分期間を単位として、前記部分期間に実行すべき複数のシミュレーションのそれぞれを実行する複数のシミュレーションステップと、
仮想時間軸における前記部分期間に相当する実時間をカウントするカウントステップと、
前記部分期間の複数のシミュレーションすべてが完了し、かつ、前記部分期間のカウントが終了した場合に、シミュレーションが完了した前記部分期間に続く、次の部分期間のシミュレーションの開始を前記複数のシミュレーションステップに指示すると共に、前記次の部分期間のカウントの開始を前記カウントステップに指示する開始管理ステップと、
を含み、
前記シミュレーションステップにおいては、前記開始管理ステップにおいて前記部分期間のシミュレーションの開始を指示される度に、前記部分期間のシミュレーションを実行し、
前記カウントにおいては、前記開始管理ステップにおいて前記部分期間のカウントの開始を指示される度に、前記部分期間のカウントを開始する情報処理方法。
【請求項13】
情報処理装置が実行する情報処理方法であって、
仮想時間軸における、シミュレーションの対象期間の一部の期間である部分期間に相当する実時間をカウントするカウントステップと、
前記部分期間のカウントが終了する度に、直前にカウントが終了した前記部分期間に続く、次の部分期間のシミュレーションの開始指示を、複数のシミュレーション装置に送信する送信ステップと
を含む情報処理方法。
【請求項14】
コンピュータを、
仮想時間軸において、シミュレーションの対象期間の一部の期間である部分期間のカウントを開始するカウント手段と、
前記カウント手段が前記部分期間のカウントを終了する度に、直前にカウントが終了した前記部分期間に続く、次の部分期間のシミュレーションの開始指示を、複数のシミュレーション装置に送信する送信手段と
して機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、情報処理装置、情報処理方法及びプログラムに関する。
【背景技術】
【0002】
従来、株取引のシミュレーションを行うための種々のシミュレータが提案されている。例えば、特許文献1には、アルゴリズム処理装置と、市況模擬装置と、市場模擬装置とを備えた証券模擬売買システムが開示されている。本システムにおいては、市況模擬装置は、現実の時刻よりも速く進む模擬時刻を市場模擬装置に配信する。そして、市場模擬装置は、この模擬時刻に基づいて、市況情報と発注情報との約定判定を行う。
【0003】
また、特許文献2には、特許文献1に記載の構成と同様の株式売買の取引シミュレーションにおいて、仮想時刻を用いて複数のプロセスの進行を同期させるシステムが開示されている。特許文献2のシステムでは、技術仮想時刻配信部は、自動執行プロセスの仮想時刻算出部及び仮想取引実行プロセスの仮想時刻算出部に、基準仮想時刻及び仮想時刻倍率を配信する。そして、それぞれの仮想時刻算出部は、自動執行プロセス及び仮想取引実行プロセスからの要求に応じて、下記の計算式により算出した仮想時刻をプロセスに返す。
仮想時刻=基準仮想時刻+倍率×(現在のシステム時刻−基準仮想時刻を受信した際のシステム時刻)
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2012−155464号公報
【特許文献2】特開2010−231531号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記特許文献2の技術においては、各プロセスは、注文受付開始等のイベント時刻のみを仮想時刻のオフセット値として取得し、その後は、各プロセスが稼働しているノード(計算機)上のシステム時刻を用いて仮想時刻を算出する。
【0006】
しかしながら、各ノードにおける負荷の状況に起因し、各プロセスが稼働しているノードそれぞれがカウントするシステム時刻にずれが生じる可能性がある。例えば、シミュレーションにより負荷が増大した場合には、CPUの処理において遅延が発生し、各ノードのCPUの時間のずれが生じ易くなる。このような場合には、ノード間において仮想時刻のずれが生じ、本来同一となるべき仮想時刻が異なる仮想時刻になってしまう。特に、株取引のシミュレーションにおいては、約定のタイミングが本来のタイミングからずれてしまい、正確なシミュレーションを行うことができない。このように、仮想時刻が各ノードにおける負荷の状況に応じて変動する場合には、再現性のあるシミュレーションを行うことができないという問題があった。
【0007】
本発明はこのような問題点に鑑みなされたもので、正確且つ再現性のあるシミュレーションを行うことを目的とする。
【課題を解決するための手段】
【0008】
そこで、本発明は、シミュレーションの対象期間の一部の期間である部分期間を単位として、前記部分期間に実行すべきシミュレーションのそれぞれを実行する複数のシミュレーション手段と、仮想時間軸における前記部分期間に相当する実時間をカウントするカウント手段と、前記カウント手段が前記部分期間のカウントを終了する度に、直前にカウントが終了した前記部分期間に続く、次の部分期間のシミュレーションの開始を前記複数のシミュレーション手段に指示すると共に、カウントの開始を前記カウント手段に指示する開始管理手段とを有し、前記シミュレーション手段は、前記開始管理手段から前記部分期間のシミュレーションの開始を指示される度に、前記次の部分期間のシミュレーションを実行し、前記カウント手段は、前記開始管理手段から前記部分期間のカウントの開始を指示される度に、前記次の部分期間のカウントを開始する。
【0009】
上記の構成によれば、本発明に係る情報処理システムには、複数のシミュレーション手段が含まれる。各シミュレーション手段は、対象期間の一部の期間である部分期間を単位として、部分期間に各シミュレーション手段が実行すべきシミュレーションをそれぞれ実行する。シミュレーション手段は、例えば、複数の証券取引所に対応する市場シミュレータやOMS(オーダーマネジメントシステム)として実装されるが、これに限定されない。また、シミュレーション手段は、例えば、シミュレーション対象となる事象の1時間分の状況の推移についてシミュレーションを行う必要がある場合、1秒分の状況の推移についてのシミュレーションを1つの単位(部分期間)として繰り返し、1時間分のシミュレーションを実行する。
【0010】
また、カウント手段は、仮想時間軸における部分期間に相当する実時間をカウントする。例えば、仮想時間軸における部分期間が1秒の場合、この1秒分の状況の推移についてのシミュレーションを、実時間上、例えば0.1秒ごとに進めていく場合には、仮想時間軸における部分期間1秒に相当する実時間は0.1秒ということになる。そして、カウント手段は、CPUのクロック等を利用して実時間上、0.1秒の経過を計測する。
【0011】
開始管理手段は、カウント手段が部分期間のカウントを終了する度に、直前にカウントが終了した部分期間に続く、次の部分期間のカウントの開始をカウント手段に指示する。
【0012】
そして、シミュレーション手段は、部分期間のカウントが開始される度に、開始された部分期間のシミュレーションを実行し、カウント手段は開始管理手段から部分期間のカウントの開始を指示される度に、部分期間のカウントを開始する。
【0013】
これにより、例えば、仮想時間軸における部分期間1秒の状況の推移についてのシミュレーションが、あるときは0.01秒で完了したり、あるときは0.05秒で完了したりしても、各部分期間についてのシミュレーションを、実時間上0.1秒ごとに進めることができる。
【0014】
例えば、株取引のシミュレーションにおいて、過去のある日の1時間分の取引についてのシミュレーションを10秒で行うこともできるし、30秒で行うこともできるし、仮想時間軸と同じ1時間で行うことも可能となる。つまり、ユーザが任意にシミュレーションの実時間上での実行速度を調整することが可能となる。特に株取引のシミュレーションにおいては、アルゴリズム取引等のモデルの検証のために、そのパラメータやその実行のタイミングを変更して、短時間に何回でも実施したいとの要求を満足させるために、シミュレーションの速度を調整できることは、非常に有効である。
【0015】
また、複数のシミュレーション手段におけるシミュレーションの進行を、共通のカウント手段および開始管理手段により制御しているため、非常に高精度な同期をとることが可能となる。特に、部分期間を非常に小さい期間に設定すれば、複数のシミュレーション手段が異なるコンピュータ上で動作している場合においても、各コンピュータのそれぞれの負荷状況に起因するシステム時刻のズレによる影響を受けることがなくなるため、非常に高い精度で同期をとることができる。したがって、本発明によれば、正確且つ再現性のあるシミュレーションを行うことが可能となる。
【0016】
本発明に係る情報処理システムでは、前記開始管理手段は、前記複数のシミュレーション手段それぞれによる前記部分期間のシミュレーションが完了した時点において、前記カウントが終了していない場合に、前記カウントが終了するまで、前記次の部分期間のシミュレーションの開始及び前記カウントの開始指示することなく待機することが好ましい。
【0017】
上記の構成によれば、開始管理手段は、複数のシミュレーション手段がそれぞれによる部分期間のシミュレーションが完了した時点において、カウントが終了していない場合に、カウントが終了するまで、次の部分期間のシミュレーションの開始及びカウントの開始を指示することなく待機する。
【0018】
例えば、仮想時間軸における部分期間に相当する実時間が0.1秒の場合に、全てのシミュレーション手段における部分期間についてのシミュレーションが実時間0.06秒で完了した場合であっても、開始管理手段は0.04秒待機する。
これにより、各部分期間のシミュレーションは常に0.1秒ごとに次の部分期間のシミュレーションに移行する。したがって、シミュレーションの実時間上での進行が調整可能となる。
【0019】
本発明に係る情報処理システムでは、前記カウント手段は、実時間軸において前記複数のシミュレーション手段が前記部分期間のシミュレーションを実行するのに要する実処理時間に比べて短い、前記仮想時間軸における部分期間に相当する実時間をカウントすることが好ましい。
【0020】
上記の構成によれば、仮想時間軸における部分期間に相当する実時間は、実時間軸において複数のシミュレーション手段が部分期間のシミュレーションを実行するのに要する実処理時間に比べて短い。
【0021】
これにより、例えば、各部分期間のシミュレーションが0.01秒以内には終わらないようなシミュレーションを実行する場合に、部分期間に相当する実時間を0.001秒に設定すると、常にカウント手段におけるカウントがシミュレーションよりも先に完了するため、開始管理手段が待機することがないため、各シミュレーション手段でのシミュレーションが完了次第、次の部分期間のシミュレーションに移行する。したがって、高精度かつ最大速度でシミュレーションを実行することが可能となる。
【0022】
本発明に係る情報処理システムは、前記部分期間の設定指示を受け付ける第1の受付手段をさらに有し、前記複数のシミュレーション手段は、前記設定指示に係る前記部分期間のシミュレーションを実行し、前記カウント手段は、前記設定指示に係る前記部分期間をカウントすることが好ましい。第1の受付手段は、ユーザから、部分期間の設定指示を受け付けることが好ましい。これにより、ユーザは部分期間を任意に設定可能となる。
【0023】
本発明に係る情報処理システムは、前記部分期間に相当する実時間の設定指示を受け付ける第2の受付手段をさらに有し、前記複数のシミュレーション手段は、前記設定指示に係る前記部分期間のシミュレーションを実行し、前記カウント手段は、前記設定指示に係る前記部分期間をカウントすることが好ましい。
上記の構成によれば、第2の受付手段は、ユーザから、部分期間に相当する実時間の設定指示を受け付けることが好ましい。これにより、ユーザは部分期間に相当する実時間を任意に設定可能となる。
【0024】
本発明に係る情報処理システムでは、前記仮想時間軸は、実時間軸のN(N>0)倍の速度で時間が経過する時間軸であることが好ましい。上記の構成によれば、仮想時間軸は、実時間軸のN(N>0)倍の速度で時間が経過する時間軸である。
【0025】
例えば、仮想時間軸上における部分期間をΔTとすると、仮想時間軸における部分期間に相当する実時間をΔT/N(N>0)に設定する。より具体的には、ΔT=1秒の場合、N=10とすると、ΔT/N=0.1秒となり、実時間0.1秒ごとに、仮想時間軸上の1秒に相当するシミュレーションが進行することになる。
【0026】
これにより、実時間軸でΔT/Nを経過したタイミングにおいて、仮想時間軸上の部分期間ΔTのシミュレーションが次の部分期間ΔTのシミュレーションに移るため、仮想時間軸では、実時間軸のN倍の速度で時間が経過することになる。したがって、ユーザはシミュレーションをN倍速(任意の速度倍率)で実行させることが可能となる。
【0027】
本発明に係る情報処理システムは、実時間軸に対する前記仮想時間軸の倍率の設定指示を受け付ける第3の受付手段をさらに有し、前記カウント手段は、前記設定指示に係る倍率の前記仮想時間軸における前記部分期間に相当する実時間をカウントすることが好ましい。上記の構成によれば、第3の受付手段は、仮想時間軸に倍率の設定指示を受け付けることが好ましい。
【0028】
これにより、ユーザは、仮想時間軸における部分期間に相当する実時間を、部分期間の倍率を指定することにより設定可能となる。
【0029】
本発明に係る情報処理システムは、複数のシミュレーション装置と、前記複数のシミュレーション装置の同期を管理する情報処理装置とを有し、前記複数のシミュレーション装置それぞれは、前記複数のシミュレーション手段それぞれを有し、前記情報処理装置は、前記開始管理手段と、前記カウント手段とを有することが好ましい。
【0030】
すなわち、情報処理システムは、複数のシミュレーション手段それぞれを有する複数のシミュレーション装置と、開始管理手段とカウント手段とを備えた複数のシミュレーション装置の同期を管理する情報処理装置とを有するシステムとして構成されることが好ましい。
【0031】
本発明に係る情報処理システムは、シミュレーションの対象期間の一部の期間である部分期間を単位として、前記部分期間に実行すべきシミュレーションのそれぞれを実行する複数のシミュレーション手段と、前記複数のシミュレーション手段すべてが前記部分期間のシミュレーションを完了した場合に、完了した前記部分期間に続く、次の部分期間のシミュレーションの開始を前記複数のシミュレーション手段に指示する開始管理手段とを有し、前記シミュレーション手段は、前記部分期間のシミュレーションの開始を指示される度に、前記部分期間のシミュレーションを実行することが好ましい。
【0032】
上記の構成によれば、情報処理システムには、同期管理の対象となる複数のシミュレーション手段が含まれる。各シミュレーション手段は、対象期間の一部の期間である部分期間を単位として、部分期間に各シミュレーション手段が実行すべきシミュレーションをそれぞれ実行する。シミュレーション手段は、例えば、複数の証券取引所に対応する市場シミュレータやOMS(オーダーマネジメントシステム)として実装されるが、これに限定されない。また、シミュレーション手段は、例えば、シミュレーション対象となる事象の1時間分の状況の推移についてシミュレーションを行う必要がある場合、1秒分の状況の推移についてのシミュレーションを1つの単位(部分期間)として繰り返し、1時間分のシミュレーションを実行する。
【0033】
また、開始管理手段は、複数のシミュレーション手段すべてが部分期間のシミュレーションを完了した場合に、完了した部分期間に続く、次の部分期間のシミュレーションの開始を複数のシミュレーション手段に指示する。そして、シミュレーション手段は、部分期間のシミュレーションの開始を指示される度に、部分期間のシミュレーションを実行する。
【0034】
これにより、同期管理の対象となる全てのシミュレーション手段が部分期間についてのシミュレーションを完了した上で、次の部分期間についてのシミュレーションが開始されるので、部分期間ごとのシミュレーションの進行の同期を完全にとることができる。特に、部分期間を非常に小さい期間に設定すれば、複数のシミュレーション手段が異なるコンピュータ上で動作している場合においても、各コンピュータのそれぞれの負荷状況に起因するシステム時刻のズレによる影響を受けることがなくなるため、全体として非常に高い精度で同期をとることができる。したがって、本発明によれば、正確且つ再現性のあるシミュレーションを行うことが可能となる。
【0035】
本発明に係る情報処理システムによれば、シミュレーションの対象期間の一部の期間である部分期間を単位として、前記部分期間に実行すべき複数のシミュレーションのそれぞれを実行する複数のシミュレーション手段と、仮想時間軸における前記部分期間に相当する実時間をカウントするカウント手段と、前記複数のシミュレーション手段すべてが前記部分期間のシミュレーションを完了し、かつ、前記カウント手段が前記部分期間のカウントを終了した場合に、シミュレーションが完了した前記部分期間に続く、次の部分期間のシミュレーションの開始を前記複数のシミュレーション手段に指示すると共に、前記次の部分期間のカウントの開始を前記カウント手段に指示する開始管理手段と、を有し、前記シミュレーション手段は、前記開始管理手段から前記部分期間のシミュレーションの開始を指示される度に、前記部分期間のシミュレーションを実行し、前記カウント手段は、前記開始管理手段から前記部分期間のカウントの開始を指示される度に、前記部分期間のカウントを開始することが好ましい。
【0036】
上記の構成によれば、開始管理手段は、複数のシミュレーション手段すべてが部分期間のシミュレーションを完了し、かつ、カウント手段が部分期間のカウントを終了した場合に、シミュレーションが完了した部分期間に続く、次の部分期間のシミュレーションの開始を複数のシミュレーション手段に指示すると共に、次の部分期間のカウントの開始をカウント手段に指示する。例えば、カウント手段がシミュレーションの完了前にカウントを終了した場合には、シミュレーションの完了を待って、次の部分期間のカウントとシミュレーションが開始される。また、例えば、シミュレーションがカウント手段によるカウント終了前に完了した場合には、カウントの終了を待って、次の部分期間のカウントとシミュレーションが開始される。
【0037】
これにより、ユーザが任意にシミュレーションの実時間上での実行速度を調整しつつ、非常に高い精度で同期をとることができるため、正確且つ再現性のあるシミュレーションを行うことが可能となる。
【0038】
本発明に係る情報処理装置は、仮想時間軸における、シミュレーションの対象期間の一部の期間である部分期間に相当する実時間をカウントするカウント手段と、前記カウント手段が前記部分期間のカウントを終了する度に、直前にカウントが終了した前記部分期間に続く、次の部分期間のシミュレーションの開始指示を、複数のシミュレーション装置に送信する送信手段とを有することが好ましい。
【0039】
本発明に係る情報処理装置は、複数のシミュレーション装置それぞれから、シミュレーションの対象期間の一部の期間である部分期間のシミュレーションの完了通知を受信する受信手段と、前記受信手段が前記複数のシミュレーション装置のすべてから前記完了通知を受信した場合に、完了した前記部分期間に続く、次の前記部分期間におけるシミュレーションの開始指示を送信する送信手段とを有することが好ましい。
【0040】
本発明に係るシミュレーション装置は、情報処理装置から開始指示を受信する受信手段と、前記開始指示を受信すると、シミュレーションの対象期間の一部の期間である部分期間を単位として、前記部分期間に実行すべきシミュレーションを実行するシミュレーション手段と、前記部分期間のシミュレーションが完了した場合に、前記情報処理装置に完了通知を送信する送信手段とを有し、前記シミュレーション手段は、前記送信手段が前記完了通知を送信した後に、前記受信手段が前記開始指示を受信した場合に、前記完了通知に係る前記シミュレーションの前記部分期間に続く、次の前記部分期間のシミュレーションを実行することが好ましい。
【発明の効果】
【0041】
本発明によれば、正確且つ再現性のあるシミュレーションを行うことができる。
【図面の簡単な説明】
【0042】
図1図1は、シミュレーションシステムを示す図である。
図2図2は、制御装置を示す図である。
図3図3は、仮想時刻管理処理を示すフローチャートである。
図4図4は、部分期間のシミュレーション処理を示すフローチャートである。
図5図5は、シミュレーション処理を示すシーケンス図である。
図6図6は、部分期間の経過と、ack信号送信のタイミングの関係を説明するための図である。
【発明を実施するための形態】
【0043】
図1は、情報処理システムとしてのシミュレーションシステム10の全体構成を示す図である。本実施形態にかかるシミュレーションシステム10は、株取引のシミュレーションを行う。シミュレーションシステム10は、アルゴリズム取引に用いられるアルゴリズムの精度を検証する場合や、株取引の初心者が訓練を行う場合等に利用される。
【0044】
シミュレーションシステム10は、ユーザにより指定された期間をシミュレーションの対象期間とし、対象期間における株取引のシミュレーションを行う。シミュレーションシステム10は、さらにユーザからの指示に応じて、対象期間におけるシミュレーションを、実際の対象期間の2倍、3倍といった速度で進む仮想時間軸に沿って進行及び完了することができる。
【0045】
図1に示すように、シミュレーションシステム10は、制御装置100と、仮想時刻管理装置110とを有している。シミュレーションシステム10はまた、オーダーマネジメントシステム(OMS)120と、市場シミュレータ130,140(第1の市場シミュレータ130及び第2の市場シミュレータ140)と、を有している。制御装置100と、仮想時刻管理装置110と、OMS120と、市場シミュレータ130,140とは、例えばLAN等のネットワークを介して相互に通信可能であるものとする。ここで、仮想時刻管理装置110は、情報処理装置の一例である。また、OMS120及び市場シミュレータ130,140は、シミュレーション装置の一例である。
【0046】
OMS120は、ユーザが株取引の発注を行うためのシステムである。OMS120は、自身が備える記憶部に格納されたアプリケーションプログラムに従い発注処理を行う。このアプリケーションプログラムは、第1の市場シミュレータ130又は第2の市場シミュレータ140により生成された板情報に基づいて、注文情報を生成するアルゴリズムを実行するプログラムである。なお、アルゴリズムによる注文を行う際、OMS120は、板情報以外に、ネットワークを介して取得可能な株取引に参考となる指標等の情報(例えば、PBR、PER等)を取得して、それらの情報も用いて注文情報を生成してもよい。例えば、OMS120は、インターネットのツイッターから情報を取得することも可能である。
【0047】
なお、他の例としては、OMS120は、第1の市場シミュレータ130又は第2の市場シミュレータ140により生成された板情報に基づいて、ユーザにより入力された発注指示を受け付けてもよい。この場合には、OMS120は、発注指示に基づいて、注文情報を生成する。
【0048】
市場シミュレータ130,140は、過去の市況情報に基づいて市場取引を再現するシステムである。第1の市場シミュレータ130は、東京証券取引所に対応する市場シミュレータである。第2の市場シミュレータ140は、名古屋証券取引所に対応する市場シミュレータである。各市場シミュレータ130,140は、それぞれ対応する証券取引所の過去のTICKデータを取得し、取得したTICKデータに基づいて、仮想の注文情報を生成する。なお、市場シミュレータ130,140は、それぞれ証券会社のシステム等の外部装置からTICKデータを取得する。
【0049】
TICKデータには、過去の実際の注文日時や約定日時などが含まれている。したがって、市場シミュレータ130,140は、シミュレーション対象期間に対応する過去の市況情報を用いてシミュレーションを行うこととなる。
【0050】
第1の市場シミュレータ130は、注文シミュレータ131と、注文情報DB132と、取引シミュレータ133とを有している。注文シミュレータ131は、過去の市況情報に基づいて、仮想の注文情報を自動生成する。より詳細には、注文シミュレータ131は、取引シミュレータ133からフィードバックされる板情報を受信するが、その板情報を解釈するモデルを実装しており、板情報と過去の市況情報に基づいて、注文情報を生成する。本実施形態に係る注文シミュレータ131は、市況情報として、東証のTICKデータを取得し、TICKデータに基づいて、注文情報を生成する。ここで、注文情報は、株式銘柄、注文日時、数量等の情報を含んでいる。
【0051】
注文シミュレータ131は、例えば、過去の注文/板に基づいて、仮想の注文情報を自動生成する。注文シミュレータ131はまた、取引シミュレータ133からフィードバックされた板情報と、過去の注文情報に基づいて想定していた板と異なる場合には、カオス理論を用いてトレンドを見つけ、そのトレンドに追従するように仮想の注文情報を生成する。注文情報DB132は、注文シミュレータ131により生成された注文情報等を格納する。
【0052】
取引シミュレータ133は、注文シミュレータ131により生成された注文情報に基づいて、仮想の板情報を生成し、生成した板情報をOMS120に配信する。ここで、板情報は、株式銘柄の取引情報を示す情報である。板情報は、より具体的には、買い注文や売り注文の価格、数量等の情報を含んでいる。取引シミュレータ133はまた、OMS120から、注文情報を受信する。そして、取引シミュレータ133は、OMS120から受信した注文情報と、自身が生成した板情報とのマッチングを行い、約定の可否を判定する。また、取引シミュレータ133は、注文シミュレータ131により生成された注文情報についても、同様に板情報とのマッチングを行い、約定の可否を判定する。
【0053】
第2の市場シミュレータ140は、第1の市場シミュレータ130と同様に、注文シミュレータ141と、注文情報DB142と、取引シミュレータ143とを有している。注文シミュレータ141、注文情報DB142及び取引シミュレータ143の処理は、それぞれ注文シミュレータ131、注文情報DB132及び取引シミュレータ133の処理と同様である。
【0054】
なお、第1の市場シミュレータ130及び第2の市場シミュレータ140のシミュレーションにおける具体的な処理内容は、異なっていてもよい。すなわち、第1の市場シミュレータ130及び第2の市場シミュレータ140は、注文情報や板情報の生成、約定の判定等のシミュレーションを行えばよく、シミュレーションにおける具体的な処理内容は、実施形態に限定されるものではない。例えば、第1の市場シミュレータ130及び第2の市場シミュレータ140それぞれが異なる証券取引所に対応する場合には、各市場シミュレータ130,140は、夫々に対応する証券取引所の取引システムに対応する異なる処理を行ってもよい。
【0055】
制御装置100は、シミュレーションシステム10全体を管理する。制御装置100は、例えば、仮想時刻管理装置110、OMS120及び市場シミュレータ130,140をリモートで起動する。なお、他の例としては、仮想時刻管理装置110、OMS120及び市場シミュレータ130,140のうち少なくとも1つの装置は、シミュレーションを行うユーザによる手動で起動してもよい。
【0056】
制御装置100は、ユーザによる入力を受け付けると、受け付けた入力内容に従い、仮想時刻管理装置110、OMS120及び市場シミュレータ130,140を初期化する。制御装置100は、例えば、シミュレーションの対象市場、対象期間、速度倍率(N)、部分期間(ΔT)等のユーザ入力を受け付ける。なお、シミュレーションの対象市場については、市場ごとに取引対象とする銘柄の一覧をユーザが入力する構成であってもよい。
【0057】
ここで、対象市場は、例えば、東証、名証などシミュレーションを希望する市場である。本実施形態にかかるシミュレーションシステムにおいては、市場シミュレータ130,140に対応し、ユーザは、対象市場として、東証及び名証を選択することができる。シミュレーションシステム10が、福証など他の市場に対応した市場シミュレータをさらに有している場合には、ユーザは、これらの市場についても選択することができる。
【0058】
対象期間は、仮想時間軸上におけるシミュレーションの開始日時から終了日時までの期間である。対象期間は、例えば、「2013年7月1日10:00:00から2013年7月1日11:00:00」というように設定される。
【0059】
速度倍率(N)は、実時間軸上での時間経過速度に対する、仮想時間軸上での時間経過速度の倍率である。すなわち、仮想時間軸上では、実時間軸上での時間経過に対しN倍の速度で時間が経過する。例えば、速度倍率2倍の場合には、実時間軸上において5分が経過する間に、仮想時間軸上においては、10分が経過する。ここで、速度倍率(N)は、正の数である。速度倍率(N)は、ユーザにより入力される任意の値である。速度倍率(N)としては、例えば、100倍等の値が入力される。
【0060】
シミュレーションシステム10は、過去のTICKデータに基づいて、シミュレーションを実行する。したがって、シミュレーション装置(OMS120及び市場シミュレータ130,140)は、実際に1s待つことなく、実際の株取引における1sの間のTICKデータを取得することができる。このため、シミュレーションシステム10は、実時間に比べて早い速度で進行する仮想時間軸上でシミュレーションを実行することができる。
【0061】
部分期間(ΔT)は、OMS120及び市場シミュレータ130,140がシミュレーションを実行する際の単位期間であり、対象期間の一部の期間である。すなわち、OMS120及び市場シミュレータ130,140は、部分期間を単位としてシミュレーションを逐次的に実行することにより、対象期間内のすべてのシミュレーションを完了する。本実施形態においては、部分期間は、ユーザにより設定された長さの期間である。部分期間としては、例えば1s等の値が入力される。
【0062】
本実施形態にかかるシミュレーション装置(OMS120等)は、部分期間におけるシミュレーションを実行単位とし、シミュレーション装置間で同期を取りながら、逐次的にシミュレーションを実行する。例えば、部分期間が1s、シミュレーションの対象期間が1minである場合には、シミュレーション装置は、部分期間のシミュレーションを逐次的に60回繰り返すことにより、対象期間のシミュレーションを完了する。なお、シミュレーション装置が同期をとるための処理については、後に詳述する。
【0063】
制御装置100は、さらに、OMS120及び市場シミュレータ130,140に、対象期間及び部分期間(ΔT)を送信することで、OMS120及び市場シミュレータ130,140を初期化する。制御装置100は、また、対象市場に基づいて、シミュレーションを実行する実行装置を選択する。例えば、対象市場として東証及び名証が選択された場合には、制御装置100は、OMS120及び市場シミュレータ130,140をシミュレーションの実行装置として選択する。そして、制御装置100は、仮想時刻管理装置110に、シミュレーションの実行装置、対象期間、速度倍率(N)及び部分期間(ΔT)を送信することで、仮想時刻管理装置110を初期化する。
【0064】
なお、他の例としては、部分期間(ΔT)は、予め定められた固定値であってもよい。この場合には、部分期間(ΔT)は、仮想時刻管理装置110、OMS120及び市場シミュレータ130,140の記憶部等に予め設定されているものとする。そして、この場合、制御装置100が各装置に部分期間(ΔT)を送信する処理は不要である。また、部分期間(ΔT)以外の値についても、仮想時刻管理装置110、OMS120、市場シミュレータ130、140に予め設定しておき、予め設定されていないものについてのみ制御装置100が送信する構成であってもよい。
【0065】
仮想時刻管理装置110は、OMS120及び市場シミュレータ130,140がシミュレーションを実行する際の仮想時刻の経過を管理する。仮想時刻管理装置110は、開始管理部111と、カウント部112とを有している。
【0066】
開始管理部111は、OMS120からシミュレーションの開始指示を受信すると、仮想時間軸上における第1の部分期間の開始時刻の初期値T(0)をOMS120及び市場シミュレータ130,140に送信する。開始管理部111はさらに、(式1)により、第1の部分期間に続く第2の部分期間の開始時刻T(1)、第2の部分期間に続く第3の部分期間の開始時刻T(2)を順次算出する。開始管理部111は、同様の処理を繰り返すことにより、シミュレーションの対象期間の開始日時から終了日時までの部分期間の開始時刻T(k)(k=0,1,2…)を算出する。
T(k+1)=T(k)+ΔT(k=0,1,2…) …(式1)
【0067】
例えば、T(0)=10:00:00、ΔT=1sである場合には、開始管理部111は、T(1)及びT(2)として、それぞれ「10:00:01」、「10:00:02」を算出する。
【0068】
そして、開始管理部111は、後述のカウント部112が部分期間のカウントを終了する度に、開始時刻T(1)、T(2)…を順番に、OMS120及び市場シミュレータ130,140に送信する。
【0069】
カウント部112は、開始管理部111により、開始時刻が送信される度に、仮想時間軸において部分期間(ΔT)のカウントを開始し、仮想時間軸において部分期間(ΔT)が経過するまでカウントを行う。ここで、カウントとは、時間の経過をCPUのクロックを利用して計測する機能である。CPUのクロックは、実時間軸における実時間を計測するものである。すなわち、カウント部112は、具体的には、CPUのクロックを利用して、仮想時間軸における部分期間(ΔT)に相当する実時間軸上の実時間(ΔT/N)をカウントする。カウント部112は、開始管理部111の制御の下、シミュレーションの対象期間の終了日時までカウントを繰り返す。カウント部112は、開始管理部111の制御の下、シミュレーションの対象期間の終了日時までカウントを繰り返す。
【0070】
なお、OMS120及び市場シミュレータ130,140は、開始時刻を受信する度に、開始時刻を始点とする部分期間におけるシミュレーションを実行する。そして、OMS120及び市場シミュレータ130,140は、シミュレーションが完了すると、仮想時刻管理装置110に対し、完了通知を送信する。
【0071】
開始管理部111は、カウント部112による部分期間のカウントが終了し(すなわち部分期間が経過し)、且つOMS120及び市場シミュレータ130,140すべてから完了通知を受信すると、(式1)により、次の部分期間の開始時刻を算出する。そして、開始管理部111は、算出した開始時刻をOMS120及び市場シミュレータ130,140に送信する。
【0072】
図2は、制御装置100のハードウェア構成を示す図である。制御装置100は、CPU101と、ROM102と、RAM103と、HDD104と、ネットワークI/F105と、操作部106と、表示部107とを有している。CPU101は、制御装置100の全体を総括的に制御する。ROM102は、制御プログラム等を記憶する。RAM103は、CPU101の主メモリ、ワークエリア等の一時記憶領域として用いられる。HDD104は、画像データや各種プログラム等を記憶する。
【0073】
ネットワークI/F105は、ネットワークに接続し、仮想時刻管理装置110や、OMS120、市場シミュレータ130,140と通信する。操作部106は、ユーザによる操作入力を受け付ける。表示部107は、各種情報を表示する。表示部107は、例えば、シミュレーション結果を表示する。
【0074】
なお、仮想時刻管理装置110、OMS120及び市場シミュレータ130,140のハードウェア構成は、図2を参照しつつ説明した制御装置100のハードウェア構成と同様である。ただし、仮想時刻管理装置110、OMS120及び市場シミュレータ130,140は、操作部106及び表示部107を備えなくともよい。
【0075】
後述する制御装置100の機能や処理は、制御装置100が備えるCPU101がROM102又はHDD104に格納されているプログラムを読み出し、このプログラムを実行することにより実現されるものである。同様に、後述する仮想時刻管理装置110の機能や処理は、仮想時刻管理装置110が備えるCPU101がROM102又はHDD104に格納されているプログラムを読み出し、このプログラムを実行することにより実現されるものである。また、OMS120及び市場シミュレータ130,140それぞれの機能や処理は、各装置が備えるCPU101がROM102又はHDD104に格納されているプログラムを読み出し、このプログラムを実行することにより実現されるものである。
【0076】
図3は、仮想時刻管理装置110による仮想時刻管理処理を示すフローチャートである。S100において、仮想時刻管理装置110は、制御装置100からシミュレーションの開始指示と共に初期条件を受信する。初期条件には、シミュレーションの実行装置、対象期間、速度倍率(N)及び部分期間(ΔT)が含まれている。仮想時刻管理装置110は、初期条件を受信すると、初期条件を初期値としてRAM103等に格納することにより、初期化処理を行う。
【0077】
次に、S101において、仮想時刻管理装置110の開始管理部111は、部分期間(ΔT)を開始する(開始管理処理)。すなわち、開始管理部111は、開始時刻の初期値T(0)を、シミュレーションの対象として選択された実行装置(例えば、OMS120及び市場シミュレータ130,140)に送信する。ここで、開始時刻は、部分期間のシミュレーションの開始指示の一例である。また、S101の処理は、開始指示を送信する送信処理の一例である。
【0078】
初期値T(0)を受信した実行装置は、初期値T(0)を始点とする部分期間(ΔT)におけるシミュレーションを実行し、実行が完了すると、仮想時刻管理装置110に完了通知としてのack信号を送信する。
【0079】
次に、S102において、仮想時刻管理装置110のカウント部112は、仮想時間軸における部分期間(ΔT)のカウントを開始する(カウント処理)。次に、S103において、仮想時刻管理装置110の開始管理部111は、シミュレーションの実行装置のすべてからack信号を受信するまで待機する。そして、開始管理部111は、すべての実行装置からack信号を受信すると(S103でYes)、処理をS104へ進める。ここで、ack信号は、部分期間のシミュレーションの完了を通知する情報である。また、S103の処理は、部分期間のシミュレーションの完了通知を受信する受信処理の一例である。
【0080】
S104において、開始管理部111は、カウント部112によるカウント結果を参照し、仮想時間軸において部分期間(ΔT)(実時間軸におけるΔT/N)が経過したか否かを確認する。開始管理部111は、仮想時間軸における部分期間(ΔT)が経過していない場合には、(S104でNo)、部分期間(ΔT)が経過するまで待機する(開始管理処理)。
【0081】
このように、仮想時刻管理装置110は、すべての実行装置からack信号を受信した場合であっても、部分期間が経過するまで次の部分期間に移行することなく待機する。これにより、仮想時刻管理装置110は、ユーザにより設定された速度倍率でシミュレーションを進行することができる。
【0082】
一方、S104において、開始管理部111は、仮想時間軸における部分期間(ΔT)が経過した場合には(S104でYes)、処理をS105へ進める。S105において、開始管理部111は、カウント部112によるカウント結果を参照し、仮想時間軸において、シミュレーションの対象期間が経過したか否かを確認する。開始管理部111は、対象期間が終了した場合には(S105でYes)、仮想時刻管理処理を終了する。開始管理部111は、対象期間が終了していない場合には(S105でNo)、処理をS106へ進める。
【0083】
S106において、開始管理部111は、(式1)により、直前に送信した開始時刻T(k)をΔTだけ進めた値を新たな開始時刻T(k)として算出する。ここで、新たな開始時刻T(k)は、直前にカウント部112によるカウントが完了した部分期間に続く、次の部分期間の開始時刻である。
【0084】
例えば、直前に初期値T(0)を送信した場合には、開始管理部111は、直前に送信した初期値T(0)に基づいて、(式1)により、続く開始時刻T(1)を算出する。なお、開始時刻T(1)は、初期値T(0)をΔTだけ進めた時刻である。同様に、開始管理部111は、開始時刻T(2)、T(3)…を、それぞれ、直前の開始時刻T(1)、T(2)…に基づいて算出する。なお、開始時刻の算出処理(S106)は、S107の処理前に完了していればよく、開始時刻の算出処理の実行タイミングは、実施形態に限定されるものではない。
【0085】
次に、S107において、開始管理部111は、S106において算出した開始時刻T(k)を実行装置に送信し、処理をS102へ進める。そして、S102において、カウント部112は、再び部分期間(ΔT)のカウントを開始し、開始管理部111は、ack信号の受信を待つ。
【0086】
なお、S106の処理は、カウント部112が部分期間(ΔT)のカウントを完了する度に、直前にカウントが完了した部分期間に続く、次の部分期間を開始する開始管理処理の一例である。そして、カウント部112は、S106を経由した後のS102において、開始管理部111により部分期間が開始される度に、開始された部分期間のカウントを開始する。
【0087】
また、S107の処理は、カウント部112が部分期間(ΔT)のカウントを終了する度に、次の部分期間の開始時刻(開始指示)を、実行装置に送信する送信処理の一例である。
【0088】
以上のように、仮想時刻管理装置110は、対象期間が終了するまで、仮想時間軸における部分期間のカウントを繰り返す。そして、仮想時刻管理装置110は、部分期間のカウントが完了する度に、次の部分期間の開始時刻を実行装置に送信する。
【0089】
図4は、OMS120及び市場シミュレータ130,140が実行する、部分期間のシミュレーション処理を示すフローチャートである。以下、第1の市場シミュレータ130によるシミュレーション処理を例に説明する。S200において、第1の市場シミュレータ130は、制御装置100から開始指示と共に、対象期間及び部分期間(ΔT)を初期条件として受信する。第1の市場シミュレータ130は、初期条件を初期値としてRAM103等に格納することにより、初期化処理を行う。
【0090】
次に、S201において、第1の市場シミュレータ130は、仮想時刻管理装置110から部分期間(ΔT)の開始時刻T(k)(k=0,1,2…)を受信するまで待機する。ここで、S201の処理は、開始指示としての開始時刻を受信する受信処理の一例である。第1の市場シミュレータ130は、開始時刻T(k)を受信すると(S201でYes)、処理をS202へ進める。S202において、第1の市場シミュレータ130は、受信した開始時刻T(k)を始点とし、T(k)+ΔTを終点とする部分期間を特定する。そして、第1の市場シミュレータ130は、部分期間の開始時刻T(k)と、終了時刻T(k)+ΔTをRAM103等に格納する。
【0091】
次に、S203において、第1の市場シミュレータ130は、部分期間を単位として、部分期間のシミュレーションを実行する(シミュレーション処理)。なお、第2の市場シミュレータ140及びOMS120も、各装置が実行する、部分期間のシミュレーション処理のS203において、部分期間のシミュレーションを実行する。
【0092】
OMS120及び市場シミュレータ130,140は、それぞれS202において、以下に示す<i>〜<iii>の処理を繰り返し実行する。なお、説明の便宜上、<i>〜<iii
>においては、OMS120と第1の市場シミュレータ130の処理について説明するが、第2の市場シミュレータ140も、第1の市場シミュレータ130と同様の処理を行うものとする。
【0093】
<i>
第1の市場シミュレータ130の注文シミュレータ131は、TICKデータの注文日時や数量等の取引情報を参照し、対象期間に対応するTICKデータを抽出する。そして、注文シミュレータ131は、部分期間内のTICKデータの履歴を読み出し、取引シミュレータ133から板情報のフィードバックを受け、カオス理論等に基づいて、注文情報を生成する。そして、取引シミュレータ133は、注文情報に基づいて板情報を生成し、生成した板情報をOMS120に送信する。
【0094】
<ii>
OMS120は、板情報を受信すると、発注アルゴリズムに基づいて、板情報に基づいて注文するか否かを判定する。OMS120は、注文すると判定した場合、発注処理を行う。すなわち、OMS120は、板情報に基づいて、注文情報を生成し、生成した注文情報を第1の市場シミュレータ130に送信する。なお、OMS120は、自動で注文情報を行ってもよく、また他の例としては、ユーザ操作に応じて、ユーザが希望する注文情報を生成してもよい。
【0095】
<iii>
第1の市場シミュレータ130の取引シミュレータ133は、OMS120又は注文シミュレータ131から注文情報が入力されると、入力された注文情報に基づいて、約定するか否かを判定する。取引シミュレータ133は、約定すると判定した場合には、約定結果に基づいて板情報を更新し、更新後の板情報をOMS120に送信する。
【0096】
なお、各シミュレーション装置(OMS120及び市場シミュレータ130,140)がシミュレーション完了と判断する条件は、シミュレーション装置毎に予め設定されているものとする。
【0097】
また、本実施形態においては、取引シミュレータ133は、注文シミュレータ131やOMS120による注文入力の度に、板情報を生成するが、板情報生成のタイミングは実施形態に限定されるものではない。他の例としては、通信負荷軽減の観点から、取引シミュレータ133は、注文入力の度に板情報を生成するのに替えて、所定間隔おきに板情報を生成し、これを送信することとしてもよい。
【0098】
例えば、OMS120が「2013年7月1日10:00:00:01」の時点で送信された板情報に基づいて注文を行うと判定した場合、OMS120は、即座に注文情報を第1の市場シミュレータ130に送信する。そして、「2013年7月1日10:00:00:02」のタイミングで、第1の市場シミュレータ130が注文情報を受信したとする。この場合、第1の市場シミュレータ130は、注文情報に基づいて、即座に板情報を更新し、更新後の板情報をOMS120に送信する。なお、取引シミュレータ133は、注文シミュレータ131から注文情報が入力された場合も同様の処理を行う。
【0099】
なお、本実施形態においては、OMS120から送信される注文情報には、時刻の情報は含まれていない。そこで、第1の市場シミュレータ130は、注文が入力された時点で注文時刻を算出する。第1の市場シミュレータ130は、例えば、時間計算ロジックに基づいて、ΔTを分割し、入力シーケンスに矛盾が生じないように、注文時刻を算出する。
他の例としては、OMS120等は、時間指定注文においては、時刻を含む注文情報を生成し、これを第1の市場シミュレータ130に送信することとしてもよい。
【0100】
次に、S204において、第1の市場シミュレータ130は、部分期間におけるシミュレーションが完了したか否かを確認する。第1の市場シミュレータ130は、シミュレーションが完了した場合には(S204でYes)、処理をS205へ進める。S205において、第1の市場シミュレータ130は、部分期間におけるシミュレーションが完了したことを示すack信号を仮想時刻管理装置110に送信する。以上で、部分期間のシミュレーション処理が完了する。ここで、S205の処理は、完了通知を送信する送信処理の一例である。
【0101】
なお、第1の市場シミュレータ130は、図4に示す部分期間のシミュレーション処理を繰り返すことによりシミュレーションの対象期間の開始日時から終了日時までのシミュレーション処理を完了する。
【0102】
次に、図5を参照しつつ、シミュレーションシステム10によるシミュレーション処理の全体の流れを説明する。ここでは、以下の初期条件に対応するシミュレーション処理について説明する。
<初期条件>
対象市場:東証及び名証
対象期間:2013年7月1日 10:00:00−11:00:00
部分期間(ΔT):1(s)
速度倍率(N):100(倍)
【0103】
S300において、制御装置100は、ユーザから、対象市場、対象期間、部分期間(ΔT)及び速度倍率(N)の設定指示の入力を受け付ける(受付処理)。次に、制御装置100は、シミュレーションの開始指示と共に、初期条件を仮想時刻管理装置110、OMS120及び市場シミュレータ130,140に送信する(S301〜S304)。
【0104】
なお、制御装置100は、仮想時刻管理装置110には、初期条件として、実行装置、対象期間、部分期間(ΔT)及び速度倍率(N)を送信する。なお、本例においては、東証及び名証の対象市場に対応し、仮想時刻管理装置110が受信する初期条件には、OMS120及び市場シミュレータ130,140が実行装置として示される。また、制御装置100は、OMS120及び市場シミュレータ130,140には、初期条件として、対象期間及び部分期間(ΔT)を送信する。
【0105】
その後、OMS120及び市場シミュレータ130,140は、仮想時刻管理装置110から部分期間の開始時刻(仮想時間軸における開始時刻)を受信するまでシミュレーションを開始することなく、待機する。
【0106】
続いて、仮想時刻管理装置110は、初期条件に基づいて、開始時刻の初期値T(0)を特定し、これを実行装置として選択されたOMS120及び市場シミュレータ130,140に送信する(S310〜S312)。
【0107】
第1の市場シミュレータ130は、初期値T(0)を受信すると、開始時刻T(k)を始点とし、T(k)+ΔTを終点とする部分期間を特定する。そして、第1の市場シミュレータ130は、部分期間の開始時刻T(k)と、終了時刻「T(k)+ΔT」をRAM103等に格納する。第1の市場シミュレータ130は、続いて、T(0)〜「T(0)+ΔT」までの部分期間におけるシミュレーションを実行する。
【0108】
より具体的には、第1の市場シミュレータ130は、注文情報に基づいて板情報を生成し(S313)、生成した板情報をOMS120に送信する(S314)。なお、第1の市場シミュレータ130は、注文情報が入力される度に、板情報を生成又は更新し、生成又は更新した板情報をOMS120に送信する。そして、第1の市場シミュレータ130は、シミュレーションが完了すると、仮想時刻管理装置110にack信号を送信する(S315)。
【0109】
同様に、第2の市場シミュレータ140は、初期値T(0)を受信すると、部分期間を特定し、T(0)〜「T(0)+ΔT」までの部分期間におけるシミュレーションを実行する。より具体的には、第2の市場シミュレータ140は、注文情報に基づいて板情報を生成し(S316)、生成した板情報をOMS120に送信する(S317)。なお、第2の市場シミュレータ140は、注文情報が入力される度に、板情報を生成又は更新し、生成又は更新した板情報をOMS120に送信する。そして、第2の市場シミュレータ140は、シミュレーションが完了すると、仮想時刻管理装置110にack信号を送信する(S318)。
【0110】
OMS120は、初期値T(0)を受信すると、部分期間を特定し、T(0)〜「T(0)+ΔT」までの部分期間におけるシミュレーションを実行する。より具体的には、OMS120は、適宜注文情報を生成し、対応する市場シミュレータ130,140に送信する(S319)。そして、OMS120は、送信した注文情報に対応して更新された板情報を受信すると、シミュレーションを完了し、仮想時刻管理装置110にack信号を送信する(S320)。
【0111】
一方、仮想時刻管理装置110においては、開始時刻の初期値T(0)の送信後、カウント部112は、仮想時間軸における部分期間(ΔT)のカウントを開始する。そして、仮想時刻管理装置110は、仮想時間軸における部分期間(ΔT)(実時間におけるΔT/N)が経過したか否かを確認する(S321)。ここで、速度倍率=100であるため、(式2)より、ΔT/Nは、0.01sとなる。
ΔT/N=1s/100=0.01s …(式2)
【0112】
カウントが終了すると、開始管理部111は、全ての実行装置からack信号を受信しているので、次の開始時刻T(1)をOMS120等に送信する(S330〜S332)。ここで、開始時刻T(1)は、(式3)より、「10:00:01」となる。
T(1)
=T(0)+ΔT=10:00:00+1s=10:00:01 …(式3)
【0113】
そして、OMS120及び市場シミュレータ130,140は、T(1)とΔTに基づいて、次にシミュレーションを行う部分期間を特定する。以下、T(0)を開始時刻とする部分期間におけるシミュレーション(S310〜S320)と同様の処理により、T(1)を開始時刻とする部分期間における市場シミュレーションが実行される。
【0114】
仮想時刻管理装置110は、同様に、順次部分期間の開始時刻をΔTだけ進めることにより、対象期間の終了日時「11:00:00」まで部分期間のシミュレーション処理を繰り返す。本例においては、終了日時「11:00:00」に対応する開始時刻T(3600)まで、3600回、部分期間のシミュレーション処理が繰り返される。
【0115】
以上のように、本実施形態にかかるシミュレーションシステム10においては、仮想時刻管理装置110は、実行単位時間により仮想時刻におけるシミュレーションの進行を管理する。したがって、シミュレーションシステム10は、複数のシミュレーション装置間の同期を取ることができる。
【0116】
図6は、部分期間の経過と、ack信号送信のタイミングの関係を説明するための図である。図中縦軸は、実時間軸を示している。仮想時刻管理装置110がack信号を受信するタイミングとしては、図6(a)及び図6(b)に示す2通りが考えられる。
【0117】
図6(a)は、部分期間(ΔT/N)が経過する前にすべての実行装置(OMS120及び市場シミュレータ130,140)からack信号を受信した例を示す図である。この場合には、仮想時刻管理装置110は、すべての実行装置からack信号を受信した後、カウント部112が部分期間のカウントを終了するまで待機した後、新たな部分期間の開始時刻を送信する。これにより、仮想時刻管理装置110は、ユーザにより指定された速度倍率でシミュレーションを進行することができる。
【0118】
一方、図6(b)は、部分期間(ΔT/N)内にすべての実行装置からack信号を受信できない例を示す図である。この場合には、仮想時刻管理装置110は、すべての実行装置からack信号を受信するまで待機し、すべての実行装置からack信号を受信したことを条件として、次の部分期間の開始時刻を送信する。これにより、仮想時刻管理装置110は、一のシミュレーションが完了しないことに起因し、不適切なシミュレーション結果が得られるのを防ぐことができる。
【0119】
さらに、図6(c)は、仮想時刻管理装置110が開始時刻を送信してから、ack信号を送信するまでに要する実処理時間に比べて短い最短期間がΔT/Nとして設定された例を示す図である。この場合には、仮想時刻管理装置110がすべての実行装置からack信号を受信したタイミングにおいては、常に最短期間が経過していることとなる。すなわち、仮想時刻管理装置110は、ΔT/Nに最短期間を設定することにより、シミュレーションシステム10の能力における最大速度においてシミュレーションを実行することができる。
【0120】
例えば、仮想時刻管理装置110が開始時刻を送信してからack信号を受信するまでの平均時間が0.01sであるとする。また、速度倍率(N)が1000に設定されているとする。この場合、ΔT/Nは、0.001sとなるため、実行装置は、ΔT/Nの期間内に部分期間のシミュレーションを完了することができない。このため、仮想時刻管理装置110は、すべての実行装置からack信号を受信後直ちに、次の部分期間の開始時刻を送信することとなる。
【0121】
なお、ΔT/Nの最短期間は、仮想時刻管理装置110のROM102等に予め設定されているものとする。なお、最短期間は、仮想時刻管理装置110が開始時刻を送信してから、すべての実行装置からack信号を受信するまでに要する時間の実測値に基づいて、決定されるのが好ましい。
【0122】
次に、シミュレーションシステム10の第1の変更例について説明する。第1の変更例としては、仮想時刻管理装置110が部分期間の開始タイミングにおいて送信する情報は、開始時刻に限定されるものではない。例えば、仮想時刻管理装置110は、部分期間のカウントが終了する度に、開始時刻にかえて、対象期間の開始時刻からの経過時刻(0s,1s…)を送信してもよい。この場合には、経過時刻を受信したシミュレーションの実行装置は、シミュレーションの対象期間の開始時刻に経過時刻を加算することにより、部分期間の開始時刻を算出する。実行装置はまた、開始時刻にΔTを加算することにより、部分期間の終了時刻を算出する。
【0123】
また、他の例としては、仮想時刻管理装置110は、開始時刻に替えて、単に部分期間を1つ進める(ΔTを1つ進める)ことを示す進行信号を送信してもよい。この場合には、シミュレーションの実行装置は、進行信号を受信した回数をカウントする。そして、実行装置は、(式4)により、部分期間の開始時刻を算出する。
部分期間の開始時刻
=対象期間の開始時刻+ΔT×(進行信号の受信回数−1) …(式4)
【0124】
第2の変更例としては、仮想時刻管理装置110は、図3に示す仮想時間管理処理において、部分期間(ΔT)が経過したか否かを確認する処理を省略してもよい。これにより、仮想時刻管理装置110は、仮想時間における部分期間(ΔT)のカウントが終了するのを待つことなく、次の部分期間を開始することができる。
【0125】
さらに、この場合には、仮想時刻管理装置110は、例えば、ΔT/Nに最短期間を設定することにより、最大速度でのシミュレーションを実現することができる。さらには、ΔT/Nの時間の経過をカウントすることなく、全ての実行装置からack信号を受信し
たタイミングで次の部分期間のシミュレーションを進めるような構成としてもよい。この場合も、全ての実行装置において部分期間(ΔT)単位のシミュレーションが完了する毎
に、次の部分期間のシミュレーションが実行されることになるため、同期をとることができる。
【0126】
第3の変更例としては、仮想時刻管理装置110は、ユーザにより選択されたシミュレーション装置だけでなく、シミュレーションシステム10が有するすべてのシミュレーション装置の仮想時刻の進行を管理してもよい。また、他の例としては、仮想時刻管理装置110は、市場シミュレータ130,140のみ同期させることとしてもよい。この場合、OMS120は、市場シミュレータ130,140とは非同期で、板情報を受信する。また、他の例としては、市場シミュレータ130,140の状態(シミュレーションが完了したか否か)をOMS120が所定の間隔で確認し、シミュレーションが完了したことを検出した場合には、OMS120から仮想時刻管理装置110にack信号を送信する構成であってもよい。
【0127】
第4の変更例としては、本実施形態にかかるシミュレーションシステム10が備える装置は、実施形態に限定されるものではない。例えば、シミュレーションシステム10は、東証及び名証の2つの市場に対応する市場シミュレータ130,140の他に、又はこれらに替えて、これ以外の市場(福岡証券取引所等)に対応する市場シミュレータを有してもよい。
【0128】
また、他の例としては、制御装置100は、OMS120と一体に設けられていてもよい。また、他の例としては、仮想時刻管理装置110は、OMS120又は市場シミュレータ130,140と一体に設けられていてもよい。この場合には、OMS120が実行するアプリケーションプログラムと、制御装置100が実行する起動制御プログラムとは、1つの端末上で実行される。また、他の例としては、制御装置100と仮想時刻管理装置110は、一体に設けられていてもよい。なお、シミュレーションシステムは、クラウドシステムとして構成することも可能である。すなわち、シミュレーションシステムを構成する各装置は、データセンターに用意された多数のサーバ群によってその機能を実現する構成であってもよい。
【0129】
第5の変更例としては、シミュレーションシステムは、処理を同期させる必要のある複数の装置を備えるシステムであればよく、システムが行う処理内容は、実施形態に限定されるものではない。他の例としては、シミュレーションシステムは、証券会社が扱う各種債券、派生商品(デリバティブ)、為替取引等、他の金融取引を行うシステムであってもよい。また、他の例としては、シミュレーションシステムは、商品の在庫管理等金融取引以外の処理を行うシステムであってもよい。
【0130】
第6の変更例としては、本実施形態にかかるシミュレーションシステム10は、シミュレーション装置が部分期間に対応するデータを参照してシミュレーションを行うものであった。これに対し、第6の変更例としては、シミュレーション装置は、対象期間に実行すべきシミュレーションに含まれるすべての処理ステップのうち、部分期間に対応する処理ステップを部分期間に実行するものであってもよい。ここで、部分期間に対応する処理ステップは、各シミュレーション装置のROM102等に予め格納されているものとする。
【0131】
なお、第7の変更例としては、制御装置100は、速度倍率(N)、部分期間(ΔT)及び部分期間に相当する実時間(ΔT/N)を特定できればよく、このためにユーザから受け付ける入力内容は、実施形態に限定されるものではない。例えば、制御装置100は、実時間(ΔT/N)及び速度倍率(N)のユーザ入力を受け付け、これらに基づいて、部分期間(ΔT)を特定してもよい。また、他の例としては、制御装置100は、部分期間(ΔT)及び実時間(ΔT/N)のユーザ入力を受け付け、これらに基づいて、速度倍率(N)を特定してもよい。
【0132】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【0133】
以上、上述した各実施形態によれば、正確且つ再現性のあるシミュレーションを行うことができる。
【0134】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0135】
10 シミュレーションシステム
100 制御装置
101 CPU
102 ROM
103 RAM
104 HDD
110 仮想時刻管理装置
120 OMS
130 第1の市場シミュレータ
140 第2の市場シミュレータ
図1
図2
図3
図4
図5
図6