(57)【特許請求の範囲】
【請求項１】
金融市場活動を予測するための装置において、
ホストシステムとデータ通信状態にあるグラフィカル処理ユニットと、
コンピュータ読み取り可能記憶デバイスに記憶されたコンピュータプログラムであって、
複数の金融モデルと、各金融モデルに関連する市場データのタイプのリストとを受信する手順と、
受信した前記複数の金融モデルおよび各金融モデルに関連する市場データのタイプの前記リストに基づいて１つまたは複数のエンジンインスタンスを生成する手順と、
前記金融市場活動を示しストリーミングされる市場データをホストシステムから受信する手順と、
受信した前記市場データを前記市場データに関連するタイムスタンプに従って構築する手順と、
前記複数の金融モデルのうちの識別された金融モデルを実行する命令を前記ホストシステムから受信する手順と、
前記ストリーミングされた市場データの少なくとも一部を前記タイムスタンプおよび前記識別された金融モデルに基づく前記エンジンインスタンスに基づいて、前記識別された金融モデルで用いるために、前記グラフィカル処理ユニット上でクローン化する手順と、
予想される市場性能を示す予測データをリアルタイムに生成するために、前記識別された金融モデルとストリーミングされた前記市場データのうち前記クローン化した部分とに基づく前記エンジンインスタンスを実行する手順と、
予想される市場性能を示す前記予測データを前記ホストシステムに出力する手順とを、前記グラフィカル処理ユニットに実行させるためのコンピュータプログラムとを備える装置。
【請求項２】
サーバとデータ通信状態にある２つ以上のグラフィカル処理ユニットをさらに備える請求項１に記載の装置。
【請求項３】
前記コンピュータプログラムは、
受信した前記市場データを前記市場データに関連するティッカーシンボルに従って構築する手順を、前記グラフィカル処理ユニットに実行させる、請求項１に記載の装置。
【請求項４】
前記コンピュータプログラムは、
選択されたデータに対して２つ以上の金融アルゴリズムを並列に実行する手順を、前記グラフィカル処理ユニットに実行させる、請求項１に記載の装置。
【請求項５】
前記コンピュータプログラムは、
選択された第１のデータを選択された第２のデータでオーバライトすることによって前記選択されたデータを更新する手順を、前記グラフィカル処理ユニットに実行させる、請求項１に記載の装置。
【請求項６】
前記コンピュータプログラムは、
予想される市場性能を示す前記予測データを前記ホストシステムに転送する手順を、前記グラフィカル処理ユニットに実行させる、請求項１に記載の装置。
【請求項７】
前記コンピュータプログラムは、
金融市場活動を示すストリーミングされるデータを受信する前に、前記グラフィカル処理ユニット上でプロセッサメモリを割当てる手順を、前記グラフィカル処理ユニットに実行させる、請求項１に記載の装置。
【請求項８】
前記コンピュータプログラムは、
受信した前記市場データの処理に関する統計量を収集する手順を、前記グラフィカル処理ユニットに実行させる、請求項１に記載の装置。
【請求項９】
前記コンピュータプログラムは、
受信した前記市場データを格納するためのデータ構造を生成する手順を、前記グラフィカル処理ユニットに実行させる、請求項１に記載の装置。
【請求項１０】
前記コンピュータプログラムは、
非同期時間に少なくとも２つのエンジンインスタンスを実行する手順を、前記グラフィカル処理ユニットに実行させる、請求項１に記載の装置。
【請求項１１】
金融市場活動を予測するための装置において、
ホストシステムとデータ通信状態にあるコプロセッサハードウェアであって、
前記ホストシステムからストリーミングされる市場データを受信するプロセッサメモリを含む、コプロセッサハードウェアと、
コンピュータ読み取り可能記憶デバイスに記憶されたコンピュータプログラムであって、
複数の金融モデルと、各金融モデルに関連する市場データのタイプのリストとを受信する手順と、
受信した前記複数の金融モデルおよび各金融モデルに関連する市場データのタイプの前記リストに基づいて１つまたは複数のエンジンインスタンスを生成する手順と、
前記金融市場活動を示しストリーミングされる市場データをホストシステムから受信する手順と、
受信した前記市場データを前記市場データに関連するタイムスタンプに従って構築する手順と、
前記ホストシステムから、前記複数の金融モデルのうちの識別された金融モデルを実行する命令を受信する手順と、
前記ストリーミングされた市場データの少なくとも一部を前記タイムスタンプおよび
前記識別される金融モデルに基づく前記エンジンインスタンスに基づいて、前記識別された金融モデルで用いるために、前記コプロセッサハードウェア上でクローン化する手順と、
予想される市場性能を示す予測データをリアルタイムに生成するために、前記識別された金融モデルとストリーミングされた前記市場データのうち前記クローン化した部分とに基づく前記エンジンインスタンスを実行する手順と、
予想される市場性能を示す前記予測データを前記ホストシステムに出力する手順とを、前記コプロセッサハードウェアに実行させるためのコンピュータプログラムとを備える装置。
【請求項１２】
金融市場活動を予測するための装置において、
市場データ源とインタフェースするグラフィカル処理ユニットであって、
ストリーミングされる市場データを受信するプロセッサメモリを有する、グラフィカル処理ユニットと、
前記グラフィカル処理ユニット上に存在し、前記市場データに対して金融モデルを実行するためのコンピュータプログラムであって、
前記市場データ源から、前記複数の金融モデルと各金融モデルに関連する市場データのタイプのリストとを受信する手順と、
受信した前記複数の金融モデルおよび各金融モデルに関連する市場データのタイプの前記リストに基づいて１つまたは複数のエンジンインスタンスを生成する手順と、
金融市場活動を示しストリーミングされる市場データを前記市場データ源から受信する手順と、
受信した前記市場データを前記市場データに関連するタイムスタンプに従って構築する手順と、
前記複数の金融モデルのうちの識別された金融モデルを実行する命令を受信する手順と、
前記ストリーミングされた市場データの少なくとも一部を前記タイムスタンプおよび前記識別された金融モデルに基づく前記エンジンインスタンスに基づいて、前記識別された金融モデルで用いるために、前記グラフィカル処理ユニット上でクローン化する手順と、
予想される市場性能を示す予測データをリアルタイムに生成するために、前記識別された金融モデルとストリーミングされた前記市場データのうち前記クローン化した部分とに基づく前記エンジンインスタンスを実行する手順と、
予想される市場性能を示す前記予測データを出力する手順とを、
前記グラフィカル処理ユニットに実行させるためのコンピュータプログラムとを備える装置。
【請求項１３】
金融市場活動を予測するためにコンピュータの処理を実行するための方法において、
複数の金融モデルと各金融モデルに関連する市場データのタイプのリストとを受信するステップと、
受信した前記複数の金融モデルおよび各金融モデルに関連する市場データのタイプの前記リストに基づいて１つまたは複数のエンジンインスタンスを生成するステップと、
金融市場活動を示しストリーミングされる市場データをグラフィカル処理ユニット上で受信するステップと、
受信した前記市場データを前記市場データに関連するタイムスタンプに従って構築するステップと、
前記複数の金融モデルのうちの識別された金融モデルを実行する命令を、ホストシステムから受信するステップと、
前記ストリーミングされた市場データの少なくとも一部を前記タイムスタンプおよび前記識別される金融モデルに基づく前記エンジンインスタンスに基づいて、前記識別された
金融モデルで用いるために、前記グラフィカル処理ユニット上でクローン化するステップと、
予想される市場性能を示す予測データをリアルタイムに生成するために、前記識別された金融モデルとストリーミングされた前記市場データのうち前記クローン化した部分とに基づく前記エンジンインスタンスを実行するステップと、
予想される市場性能を示す前記予測データを出力するステップとを備える方法。
【請求項１４】
受信した前記市場データを前記市場データに関連するティッカーシンボルに従って構築するステップをさらに備える請求項１３に記載の方法。
【請求項１５】
前記選択されたデータに対して２つ以上の金融アルゴリズムを並列に実行するステップをさらに備える請求項１３に記載の方法。
【請求項１６】
選択された第１のデータを選択された第２のデータでオーバライトすることによって前記選択されたデータを更新するステップをさらに備える請求項１３に記載の方法。
【請求項１７】
予想される市場性能を示す前記予測データを前記ホストシステムに転送するステップをさらに備える請求項１３に記載の方法。
【請求項１８】
金融市場活動を示すストリーミングされるデータを受信する前に、前記グラフィカル処理ユニット上でメモリを割当てるステップをさらに備える請求項１３に記載の方法。
【請求項１９】
受信した前記市場データの処理に関する統計量を収集するステップをさらに備える請求項１３に記載の方法。
【請求項２０】
受信した前記市場データを格納するためのデータ構造を生成するステップをさらに備える請求項１３に記載の方法。
【請求項２１】
非同期時間に少なくとも２つのエンジンインスタンスを実行するステップをさらに備える請求項１３に記載の方法。
【請求項２２】
金融市場活動を予測するソフトウェアを符号化して記録したコンピュータ可読媒体において、前記ソフトウェアは、グラフィカル処理ユニットに、
複数の金融モデルと、各金融モデルに関連する市場データのタイプのリストとを受信する手順と、
受信した前記複数の金融モデルおよび各金融モデルに関連する市場データのタイプの前記リストに基づいて１つまたは複数のエンジンインスタンスを生成する手順と、
金融市場活動を示しストリーミングされる市場データを、ホストシステムから受信する手順と、
受信した前記市場データを前記市場データに関連するタイムスタンプに従って構築する手順と、
前記複数の金融モデルのうちの識別された金融モデルを実行する命令を前記ホストシステムから受信する手順と、
前記ストリーミングされた市場データの少なくとも一部を前記タイムスタンプおよび前記識別される金融モデルに基づく前記エンジンインスタンスに基づいて、前記識別された金融モデルで用いるために、グラフィカル処理ユニット上でクローン化する手順と、
予想される市場性能を示す予測データをリアルタイムに生成するために、前記識別された金融モデルとストリーミングされた前記市場データのうち前記クローン化した部分とに基づく前記エンジンインスタンスを実行する手順と、
予想される市場性能を示す前記予測データを前記ホストシステムに出力する手順とを実
行させる、コンピュータ可読媒体。
【請求項２３】
前記ソフトウェアは、
受信した前記市場データを前記市場データに関連するティッカーシンボルに従って構築する手順を、前記グラフィカル処理ユニットにさらに実行させる、請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
前記ソフトウェアは、
前記選択されたデータに対して２つ以上の金融アルゴリズムを並列に実行する手順を、前記グラフィカル処理ユニットにさらに実行させる、請求項２２に記載のコンピュータ可読媒体。
【請求項２５】
前記ソフトウェアは、
選択された第１のデータを選択された第２のデータでオーバライトすることによって前記選択されたデータを更新する手順を、
前記グラフィカル処理ユニットにさらに実行させる、請求項２２に記載のコンピュータ可読媒体。
【請求項２６】
前記ソフトウェアは、
予想される市場性能を示す前記予測データを前記ホストシステムに転送する手順を、
前記グラフィカル処理ユニットにさらに実行させる、請求項２２に記載のコンピュータ可読媒体。
【請求項２７】
前記ソフトウェアは、
金融市場活動を示すストリーミングされるデータを受信する前に、前記グラフィカル処理ユニット上でメモリを割当てる手順を、前記グラフィカル処理ユニットにさらに実行させる、請求項２２に記載のコンピュータ可読媒体。
【請求項２８】
前記ソフトウェアは、
受信した前記市場データの処理に関する統計量を収集する手順を、
前記グラフィカル処理ユニットにさらに実行させる、請求項２２に記載のコンピュータ可読媒体。
【請求項２９】
前記ソフトウェアは、
受信した前記市場データを格納するためのデータ構造を生成する手順を、
前記グラフィカル処理ユニットにさらに実行させる、請求項２２に記載のコンピュータ可読媒体。
【請求項３０】
前記ソフトウェアは、
非同期時間に少なくとも２つのエンジンインスタンスを実行する手順を、
前記グラフィカル処理ユニットにさらに実行させる、請求項２２に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、金融予測、特に、リアルタイム金融予測を出力するための、ホストシステムおよびコプロセッサハードウェアの使用に関する。
（関連出願に対する相互参照）
本出願は、参照により本明細書に組み込まれる２００８年１２月２９日に出願された米国特許出願番号第１２／３４４，９０１号の米国特許法１１９条（ｅ）の下の利益を主張する。
【背景技術】
【０００２】
アルゴリズム取引は、市場データを収集すること、金融市場活動の予測を生成するためにアルゴリズムをデータに適用すること、および、予測に基づいて取引を実行することを含む。アルゴリズム取引は、大量の市場データのリアルタイム処理および解析を必要とする。しかし、金融サービス業界は、大量の市場データを吸収すること、および、金融活動を予測するためにアルゴリズムを実行することに取り組んでいる。現在のところ、市場データの受信と金融市場のアルゴリズム予測の生成との間にかなりの時間遅延が存在する。結果として、アルゴリズムが予測を行うときまでに、市場が動き、予測を陳腐化させる。
【０００３】
多くのシステムで、ただ１つのプロセッサを有する単一機械が、市場データを収集し処理すると共に、処理済みデータに関してアルゴリズムを実行する。これらの単一機械システムは、実質的な時間遅延なしで大量のデータをリアルタイムに取込み出力するのに必要なメモリおよびプロセッサ速度に欠けるため、リアルタイム金融予測を実施できない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
単一機械システムの一例では、１つのコンピュータが、市場データを受信し、アルゴリズム計算を実施する。しかし、この単一コンピュータは、そのプロセッサの速度が制限されるため、市場データのリルタイムアルゴリズム解析を実施できない。すなわち、単一プロセッサが市場データの全てを処理し、予測を生成してしまうときまでに、市場は、既に動き、予測は古くなっている。
【０００５】
ある程度のリアルタイム解析および予測を実施できるシステムでさえも、極端に大きな量のデータについてそうする能力を喪失する。たとえば、システムは、１０ミリ秒で１０００メガバイト（「ｍｅｇｓ」）の市場データを処理できる可能性がある。しかし、このシステムは、１０ｍｓで８０００ｍｅｇｓの市場データを処理できない。
【０００６】
アルゴリズム取引における時間遅延を軽減する努力は、市場データを収集するサーバを配置すること、および、証券取引所などの、市場データの発信源の物理的に非常に近くで予測を生成することを含む。たとえば、サーバは、市場データの処理時間を減少させようと試みて証券取引所と反対の通りの向こう側に配置されてもよい。
【課題を解決するための手段】
【０００７】
一態様では、本発明は、金融活動を予測する装置を特徴とする。装置は、金融市場活動を示すストリーミングされる市場データを受信するホストシステムと、サーバとデータ通信状態にあるグラフィカル処理ユニットであって、ホストシステムから、ストリーミングされる市場データを受信するプロセッサメモリを含む、グラフィカル処理ユニットとを含む。装置はまた、ホストシステム上に存在するコンピュータプログラム製品であって、グラフィカル処理ユニットに１つまたは複数の金融モデルを送出するように、ホストシステ
ムにさせる命令を含む、コンピュータプログラム製品と、ホストシステムから受信される市場データに対して、ホストシステムから受信される金融モデルを実行するための、グラフィカル処理ユニット上に存在するコンピュータプログラム製品であって、金融モデルおよび各金融モデルに関連する市場データのタイプのリストを受信し、受信される金融モデルおよび各金融モデルに関連する市場データのタイプのリストに基づいて１つまたは複数のエンジンインスタンスを生成し、市場データに関連するタイムスタンプに従って受信される市場データを構築し、ホストシステムから、識別される金融モデルを実行する命令を受信し、タイムスタンプおよび識別される金融モデルに基づくエンジンインスタンスに基づいて構築された市場データの少なくとも一部をクローン化し、予想される市場性能を示す予測データであって、クローン化された市場データに少なくとも部分的に基づく、予測データを、リアルタイムに生成するために、識別される金融モデルに基づくエンジンインスタンスを実行し、予想される市場性能を示す予測データを出力するように、グラフィカル処理ユニットにさせる命令を含む、コンピュータプログラム製品とを含む。
【０００８】
一部の実践では、装置は、サーバとデータ通信状態にある２つ以上のグラフィカル処理ユニットを含む。
装置の他の実践は、市場データに関連するティッカーシンボルに従って受信される市場データを構築するように、グラフィカル処理ユニットにさせる命令を含む。
装置のなお他の実践は、選択されたデータに対して２つ以上の金融アルゴリズムを並列に実行すること、選択された第１のデータを選択された第２のデータでオーバライトすることによって選択されたデータを更新すること、予想される市場性能を示すデータをサーバに転送すること、および、金融市場活動を示すストリーミングされるデータを受信する前に、グラフィカル処理ユニット上でメモリを割当てることのうちの１つまたは複数を実施するように、グラフィカル処理ユニットにさせる命令を含む。
【０００９】
本発明のさらなる実践の中には、受信されるデータの処理に関する統計量を収集すること、受信されるデータを格納するデータ構造を生成すること、および、非同期時間に少なくとも２つのエンジンインスタンスを実行することのうちの１つまたは複数を実施するように、グラフィカル処理ユニットにさせる命令を含む実践が存在する。
【００１０】
別の態様では、本発明は、金融市場活動を予測する装置を特徴とし、装置は、金融市場活動を予測する装置であって、金融市場活動を示すストリーミングされる市場データを受信するホストシステムと、サーバとデータ通信状態にあるコプロセッサハードウェアであって、ホストシステムから、ストリーミングされる市場データを受信するプロセッサメモリを含む、コプロセッサハードウェアとを備える。装置はまた、ホストシステム上に存在するコンピュータプログラム製品であって、コプロセッサハードウェアに１つまたは複数の金融モデルを送出するように、ホストシステムにさせる命令を含む、コンピュータプログラム製品と、ホストシステムから受信される市場データに対して、ホストシステムから受信される金融モデルを実行するための、コプロセッサハードウェア上に存在するコンピュータプログラム製品であって、金融モデルおよび各金融モデルに関連する市場データのタイプのリストを受信し、受信される金融モデルおよび各金融モデルに関連する市場データのタイプのリストに基づいて１つまたは複数のエンジンインスタンスを生成し、市場データに関連するタイムスタンプに従って、受信される市場データを構築し、ホストシステムから、識別される金融モデルを実行する命令を受信し、タイムスタンプおよび識別される金融モデルに基づくエンジンインスタンスに基づいて、構築された市場データの少なくとも一部をクローン化し、予想される市場性能を示す予測データであって、クローン化された市場データに少なくとも部分的に基づく、予測データを、リアルタイムに生成するために、識別される金融モデルに基づくエンジンインスタンスを実行し、予想される市場性能を示す予測データを出力するように、コプロセッサハードウェアにさせる命令を含む、コンピュータプログラム製品とを備える。
【００１１】
なお別の態様では、本発明は、金融市場活動を予測する装置を特徴とし、装置は、市場データ源に対するインタフェースであるグラフィカル処理ユニットであって、ストリーミングされる市場データを受信するプロセッサメモリを含む、グラフィカル処理ユニットを備える。本発明はまた、市場データに対して金融モデルを実行するための、グラフィカル処理ユニット上に存在するコンピュータプログラム製品を含み、コンピュータプログラム製品は、市場データ源から市場データを受信し、ホストシステムから、金融モデルおよび各金融モデルに関連する市場データのタイプのリストを受信し、受信される金融モデルおよび各金融モデルに関連する市場データのタイプのリストに基づいて１つまたは複数のエンジンインスタンスを生成し、市場データに関連するタイムスタンプに従って、受信される市場データを構築し、識別される金融モデルを実行する命令を受信し、タイムスタンプおよび識別される金融モデルに基づくエンジンインスタンスに基づいて、構築された市場データの少なくとも一部をクローン化し、予想される市場性能を示す予測データであって、クローン化された市場データに少なくとも部分的に基づく、予測データを、リアルタイムに生成するために、識別される金融モデルに基づくエンジンインスタンスを実行し、予想される市場性能を示す予測データを出力するように、グラフィカル処理ユニットにさせる命令を含む。
【００１２】
別の態様では、本発明は、金融市場活動を予測するコンピュータ実施方法を特徴とする。方法は、グラフィカル処理ユニット上で、金融市場活動を示すストリーミングされる市場データを受信すること、金融モデルおよび各金融モデルに関連する市場データのタイプのリストを受信すること、受信される金融モデルおよび各金融モデルに関連する市場データのタイプのリストに基づいて１つまたは複数のエンジンインスタンスを生成すること、市場データに関連するタイムスタンプに従って、受信される市場データを構築すること、識別される金融モデルを実行する命令を、ホストシステムから受信すること、タイムスタンプおよび識別される金融モデルに基づくエンジンインスタンスに基づいて、構築された市場データの少なくとも一部をクローン化すること、予想される市場性能を示す予測データであって、クローン化された市場データに少なくとも部分的に基づく、予測データを、リアルタイムに生成するために、識別される金融モデルに基づくエンジンインスタンスを実行すること、および、予想される市場性能を示す予測データを出力することを含む。
【００１３】
一部の実践では、方法は、市場データに関連するティッカーシンボルに従って、受信される市場データを構築すること、選択されたデータに対して２つ以上の金融アルゴリズムを並列に実行すること、選択された第１のデータを選択された第２のデータでオーバライトすることによって選択されたデータを更新すること、および、予想される市場性能を示すデータをホストシステムに転送することのうちの１つまたは複数を含む。
【００１４】
予測方法の他の実践は、金融市場活動を示すストリーミングされるデータを受信する前に、グラフィカル処理ユニット上でメモリを割当てること、受信されるデータの処理に関する統計量を収集すること、受信されるデータを格納するデータ構造を生成すること、および、非同期時間に少なくとも２つのエンジンインスタンスを実行することのうちの１つまたは複数を含む。
【００１５】
他の態様では、本発明は、金融市場活動を予測するソフトウェアを符号化されているコンピュータ可読媒体を含む。ソフトウェアは、金融市場活動を示すストリーミングされる市場データを、ホストシステムから受信し、金融モデルおよび各金融モデルに関連する市場データのタイプのリストを受信し、受信される金融モデルおよび各金融モデルに関連する市場データのタイプのリストに基づいて１つまたは複数のエンジンインスタンスを生成し、市場データに関連するタイムスタンプに従って、受信される市場データを構築し、ホストシステムから、識別される金融モデルを実行する命令を受信し、タイムスタンプおよ
び識別される金融モデルに基づくエンジンインスタンスに基づいて、構築された市場データの少なくとも一部をクローン化し、予想される市場性能を示す予測データであって、クローン化された市場データに少なくとも部分的に基づく、予測データを、リアルタイムに生成するために、識別される金融モデルに基づくエンジンインスタンスを実行し、予想される市場性能を示す予測データを出力するように、グラフィカル処理ユニットにさせる命令を含む。
【００１６】
他の実施形態は、市場データに関連するティッカーシンボルに従って、受信される市場データを構築すること、選択されたデータに対して２つ以上の金融アルゴリズムを並列に実行すること、選択された第１のデータを選択された第２のデータでオーバライトすることによって選択されたデータを更新すること、および、予想される市場性能を示すデータをホストシステムに転送することのうちの１つまたは複数を実施するように、グラフィカル処理ユニットにさせる命令を符号化されている。
コンピュータ可読媒体のなお他の実施形態は、金融市場活動を示すストリーミングされるデータを受信する前に、グラフィカル処理ユニット上でメモリを割当てること、受信されるデータの処理に関する統計量を収集すること、受信されるデータを格納するデータ構造を生成すること、および、非同期時間に少なくとも２つのエンジンインスタンスを実行することのうちの１つまたは複数を実施するように、グラフィカル処理ユニットにさせる命令を符号化されている。
【００１７】
本発明の１つまたは複数の実施形態の詳細は、添付図面および以下の説明に述べられる。本発明の他の特徴、目的、および利点は、説明および図面から、また、特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１８】
【図１】取引予測器を示すブロック図。
【図２】取引予測器を示すブロック図。
【図３】データ構造のフローチャート。
【図３Ａ】データ構造のフローチャート。
【図４】ホストシステムからコプロセッサハードウェアまでのデータフローのフローチャート。
【図５】データクローン化中に実施されるプロセスのフローチャート。
【図６】実行し更新するエンジンインスタンスの図。
【発明を実施するための形態】
【００１９】
取引予測器は、金融市場で起ころうとしているイベントを予測し、したがって、市場状況に瞬時に資金供給する。図１を参照して、取引予測器１００は、ホストシステム１０２およびホストシステム１０２に結合されるコプロセッサハードウェア１０４を含む。市場データ１０６は、ホストシステム１０２を通して取引予測器１００にストリーミングされる。ホストシステム１０２は、市場データ１０６をコプロセッサハードウェア１０４に転送する。コプロセッサハードウェア１０４は、リアルタイムに市場データ１０６を処理し、金融予測１０８をホストシステム１０２に出力する取引アルゴリズムを起動する(fire)（すなわち、実行する）。
【００２０】
コプロセッサハードウェア１０４と通信状態にあるホストシステム１０２は、高スループットでかつ超低遅延の取引予測器１００を提供する。コプロセッサハードウェア１０４をホストシステム１０２と結合することは、取引予測器１００の計算速度を上げ、取引予測器１００が金融市場状況のリアルタイム予測を提供することを可能にする。
【００２１】
ハードウェアアクセレレータカードまたはグラフィックスカードを含む種々のタイプの
コプロセッサハードウェア１０４が、ホストシステム１０２に結合されてもよい。ハードウェアアクセレレータカードは、市販されており、専用クロックおよびプロセッサを含むことが多い。ＮｖｉｄｉａまたはＡＴＩ  Ｒａｄｅｏｎによって製造されるカードなどの市販のグラフィクスカードが使用されてもよい。例示的な実施形態では、取引予測器１００は、グラフィックスカードを含む。グラフィックスカードに含まれるいくつかのクラスのダイナミックランダムアクセスメモリ（ＤＲＡＭ）のために、グラフィックスカードは、大量のストリーミングされる金融データの入力および出力について最適化される。さらに、グラフィックスカードは、ホストシステム１０２に外的に接続され、密接に結合されない。この例では、ラック搭載式ホストシステム１０２の上部に載るグラフィックスカードは、外部配線によってホストシステム１０２に接続される。
【００２２】
処理されるデータ量に応じて、複数のコプロセッサ１０４が単一ホストシステム１０２に取付けられうる。グラフィックスカードがホストシステム１０２に外的に接続されるため、２つ以上のグラフィックスカードがホストシステム１０２に結合されうる。
（初期化プロセス）
パワーオンされると、取引予測器１００は、種々の初期化プロセスを実行する。例示的な実施形態では、初期化プロセスは、１日に1回、朝でかつ取引日の開始前に実行される
。図２を参照して、構成ディスク記憶部２８１は、整数−ティッカーシンボルマッピングプログラムなどの構成プログラムをホストシステム１０２にロードすることによって、ホストシステム１０２を「ウェークアップさせる(wake up)」。ホストシステム１０２は、
情報をコプロセッサハードウェア１０４にロードするエンジンアダプタ２０４を含む。コプロセッサハードウェア１０４は、エンジンアダプタ２０４から金融アルゴリズムなどの情報を受信するエンジンゲートウェイ２０６を含む。１つの特定の例では、エンジンゲートウェイ２０６は、エンジンアダプタ２０４から、コプロセッサハードウェア１０４が起動するためのアルゴリズムのセットを受信する。
【００２３】
エンジンアダプタ２０４は、構成パラメータをエンジンゲートウェイ２０６に提供して、リソースプール２１４およびシンボルハンドラ２１６、２１８、２２０を初期化する。エンジンアダプタ２０４は、初期化プロセス中に、リソースプール２１４をエンジンインスタンス３０４、３０６、３０８、３１０に関連付ける。図３を参照して、エンジンゲートウェイ２０６は、初期化中に、エンジンインスタンス３０２を生成し、メモリ３１２を割当て、データ構造３１４を生成する。
（エンジンインスタンスの生成）
初期化プロセスの１つのプロセスは、アルゴリズムをコプロセッサハードウェア１０４にロードすることを含む。取引予測器１００の利点は、そうする時間が来たときにアルゴリズムが即座に起動されうるように、アルゴリズムが、コプロセッサハードウェア１０４にプリロードされることである。これは、コプロセッサハードウェア１０４が予測１０８を生成するのにかかる総合時間（以降で「予測までの時間(time-to-forecast)」）を減少させる。
【００２４】
図２を参照して、ホストシステム１０２上のエンジンアダプタ２０４は、アルゴリズムがプリロードされうるように、コプロセッサハードウェア１０４上のエンジンゲートウェイ２０６にアルゴリズムを提供する。そうすることによって、ホストシステム１０２は、コプロセッサハードウェア１０４に、その日に起動されると予測されるアルゴリズムを提供する。アルゴリズムが、特定のティッカーシンボルについて起動されるため、コプロセッサハードウェア１０４にプリロードされるアルゴリズムは、関連するティッカーシンボルのリストを含む。
【００２５】
ティッカーシンボルは、有価証券を識別する。たとえば、バンクオブアメリア(Bank of
America)の有価証券は、「ＢＯＡ」ティッカーシンボルによって識別される。１つの特
定の例では、２つのアルゴリズム、アルゴリズムＡおよびアルゴリズムＢが、エンジンゲートウェイ２０６にロードされる。以下の表１に示すように、アルゴリズムＡは、ティッカーシンボルＸとティッカーシンボルＹの両方に関連する。アルゴリズムＢは、ティッカーシンボルＹとティッカーシンボルＺの両方に関連する。この例では、表１に示すマトリクスは、エンジンゲートウェイ２０６に提供される。
【００２６】
【表１】
0005755146.tif 000002
【００２７】
図３を参照して、受信されたアルゴリズムのセットおよび関連するティッカーシンボルに基づいて、エンジンゲートウェイ２０６は、エンジンインスタンス３０２を生成する。こうした各エンジンインスタンスは、起動されるアルゴリズムおよびアルゴリズムがそれについて起動されるべきであるティッカーシンボルを含むデータ構造である。アルゴリズムは、エンジンインスタンスを実行することによって起動される。エンジンゲートウェイ２０６によって生成されるエンジンインスタンスの数は、アルゴリズムの数および各アルゴリズムに関連するティッカーシンボルの数に依存する。表１の例では、起動される２つのアルゴリズムが存在し、各アルゴリズムは、２つのティッカーシンボルに関連する。結果として、４つのエンジンインスタンス３０４、３０６、３０８、および３１０が生成される。エンジンインスタンス３０４は、ティッカーシンボルＸについてアルゴリズムＡを起動する。エンジンインスタンス３０６は、ティッカーシンボルＹについてアルゴリズムＡを起動する。エンジンインスタンス３０８は、ティッカーシンボルＹについてアルゴリズムＢを起動する。エンジンインスタンス３１０は、ティッカーシンボルＺについてアルゴリズムＢを起動する。
【００２８】
エンジンゲートウェイ２０６は、多くのエンジンインスタンスを生成することが可能である。たとえば、百万のアルゴリズムが、コプロセッサハードウェア１０４にロードされ、エンジンインシタンスが、７つの異なるティッカーシンボルについて各アルゴリズムを起動させる場合、エンジンゲートウェイ２０６は、七百万のエンジンインスタンスを生成する。
【００２９】
（メモリ割当て）
図３を参照して、エンジンゲートウェイ２０６はまた、コプロセッサハードウェア１０４上で実行される種々のプロセス間でメモリを割当てる。これらのプロセスは、リソースプール２１４（図２）、ステータスゲートウェイ２３２、シンボルハンドラ２１６、２１８、２２０、およびエンジンインスタンス３０４、３０６、３０８、３１０を含む。プロセス速度を最適化し、予測までの時間を減少させるために、コプロセッサハードウェア１０４上のメモリは、ストリーミングされるデータ１０６の処理の前に、予め割当てられる。エンジンゲートウェイ２０６は、エンジンインスタンスを実行するのに必要とされるメモリ量に基づいてコプロセッサハードウェアのメモリ３１２を割当てる。エンジンアダプタ２０４は、メモリ割当てパラメータを、ホストシステム１０２構成ファイルからエンジンゲートウェイ２０６に提供する。
（データ構造の生成）
エンジンインスタンス３０４、３０６、３０８、３１０は、コプロセッサハードウェア１０４に最初に注入されるストリーミングされる未処理データ１０６に対して実行可能でない。したがって、コプロセッサハードウェア１０４は、エンジンインスタンス３０４、３０６、３０８、３１０の実行の前に、データ１０６をバッファリングし、構築する。取引予測器１００の１つの利点は、ストリーミングされるデータ１０６が、ホストシステム１０２上ではなく、コプロセッサハードウェア１０４上でバッファリングされ、構築されることである。これは、処理時間、したがって、予測までの時間を減少させる。
【００３０】
図３を参照して、エンジンゲートウェイ２０６は、受信されるデータ１０６を保持するデータ構造を予め定義する。すなわち、エンジンゲートウェイ２０６は、処理時間を減少させるために、アルゴリズムの起動の前にデータ構造３１４を生成する。
【００３１】
一例では、ストリーミングされる市場データ１０６は、そのティッカーシンボルおよびデータが最初に生成された時間に基づいて構築される。別の例では、ストリーミングされる市場データ１０６は、市場ティックハンドラ２８０によって割当てられた関連する一意の整数値に基づいて構築される。しかし、市場データ１０６が、その一意の整数値に基づいて構築されるときでも、各ティッカーシンボルが一意の整数値に関連するため、市場データ１０６は、依然としてそのティッカーシンボルに基づいて構築される。図２を参照して、データ１０６をこうして構築するために、エンジンゲートウェイ２０６は、３つのタイプの構造、シンボルハンドラ２１６、２１８、２２０、シンボルアレイ２２２、２２４、２２６、およびタイムバケット（図示せず）を生成する。
【００３２】
シンボルハンドラ２１６、２１８、２２０は、ティッカーシンボルに基づいて新しいデータ１０６を適切なシンボルアレイ２２２、２２４、２２６に挿入するフローコントロールである。シンボルアレイ２２２、２２４、２２６は、ティッカーシンボルについてのキューイングされたデータのアレイ１０６である。エンジンゲートウェイ２０６は、エンジンアダプタ２０４から、データ１０６がそれについて受信される全てのティッカーシンボルのリストを受信する（表１参照）。エンジンゲートウェイ２０６は、データ１０６がそれについて受信される各ティッカーシンボルについて、シンボルハンドラ２１６、２１８、２２０およびシンボルアレイ２２２、２２４、２２６を生成する。各シンボルは、一意のシンボルハンドラ２１６、２１８、２２０および一意のシンボルアレイ２２２、２２４、２２６が割当てられる。したがって、生成されるシンボルハンドラ２１６、２１８、２２０およびシンボルアレイ２２２、２２４、２２６の総数は、コプロセッサハードウェア１０４によって処理されるシンボルの総数に依存する。
【００３３】
１つの特定の例では、コプロセッサハードウェア１０４は、全部で８０００の異なるティッカーシンボルになる、ＮＡＳＤＡＱ証券取引所、ＮＹ証券取引所、店頭売買(over-the-counter)（「ＯＴＣ」）有価証券、債権、オプション、およびデリバティブの全てのシンボルを処理する。したがって、エンジンゲートウェイ２０６は、８０００の一意のシンボルハンドラおよび８０００のシンボルアレイを生成し、各シンボルハンドラおよびシンボルアレイは、ティッカーシンボルに対応する。
【００３４】
シンボルアレイ２２２、２２４、２２６内で、データは、「タイムバケット(time bucket)」に時間ソーティングされ、各「バケット(bucket)」は、指定された期間を示す。タ
イムバケットは、データが生成された時間に基づいてデータ１０６をソーティングするデータ構造である。エンジンインスタンス３０４、３０６、３０８、および３１０を生成し、ストリーミングされるデータ１０６を受信する前に、エンジンゲートウェイ２０６はまた、タイムバケットを予め作成する。各タイムバケットは、データ１０６が収集される期間を示す。タイムバケットは、１秒データ収集間隔または１５秒データ収集間隔を示しうる。
【００３５】
図３Ａを参照して、シンボルアレイＸ  ２１６は、タイムバケットのセット３５０に関連する。シンボルアレイＹ  ２１８はまた、タイムバケットのセット３６０に関連する。タイムバケットのセット３５０、３６０は、個々のタイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８を含む。タイムバケットの数は、起動すると、アルゴリズムによって必要とされるデータ量に依存する。この例では
、また、表１を参照して、エンジンインスタンスはティッカーシンボルＸについてアルゴリズムＡを起動する。アルゴリズムＡが、データの１５分相当分を必要とし、タイムバケットが、収集されるデータのそれぞれの１秒相当分について生成される場合、タイムバケットのセット３５０は、９００（１５分×６０秒＝９００）タイムバケット３５２、３５４、３５６、３５８、３５９を含む。
【００３６】
２つ以上のアルゴリズムがティッカーシンボルについて起動される場合、そのティッカーシンボルについて収集されるデータ量は、ほとんどのデータを必要とするアルゴリズムに依存する。たとえば、アルゴリズムＡおよびＢは共に、ティッカーシンボルＹについて起動される。アルゴリズムＢは、データの３時間相当分を必要とする。したがって、アルゴリズムＡがデータの１５分相当分を必要とするだけであっても、ティッカーシンボルＹデータの３時間相当分が収集される。タイムバケットが、ティッカーシンボルＹについて収集されるデータのそれぞれの１秒相当分について生成される場合、タイムバケットのセット３６０は、１０，８００（３時間×６０分×６０秒＝１０，８００）タイムバケット３６２、３６４、３６６、３６８を含む。
【００３７】
シンボルアレイ２２２、２２４、２２６およびバケットセット３５０、３６０を含むデータ構造は、コプロセッサハードウェア１０４上のランダムアクセスメモリ（「ＲＡＭ」）に存在する。データ１０６が、これらのデータ構造に、したがって、コプロセッサハードウェア１０４上のランダムアクセスメモリ（「ＲＡＭ」）に自動的に挿入されるため、データを格納する外部データベースが必要とされない。外部データベースのこの削除のために、取引予測器１００は、超低遅延速度で動作し、予測までの時間を減少させる。
（メモリ参照）
図２を参照する。エンジンゲートウェイ２０６は、エンジンインスタンス３０４，３０６，３０８，３１０を駆動する前に、リソースプール２１４およびエンジンインスタンス３０４，３０６，３０８，３１０の両方に参照２２８，２３０を生成する。エンジンインスタンス３０４，３０６，３０８，３１０を駆動している間には、エンジンインスタンス３０４，３０６，３０８，３１０は、シンボルアレイ２２２，２２４，２２６の一部または全部のクローンを要求する。ある特定の実施例において、エンジンインスタンス３０４はシンボルアレイＸ２２２のクローンを要求し、リソースプール２１４はシンボルアレイＸのクローン２５２を生成する。エンジンゲートウェイ２０６はエンジンインスタンス３０４にシンボルアレイＸ２２２のメモリ位置を与える。このことはエンジンインスタンス３０４にシンボルアレイＸ２２２のクローンの要求を可能とさせる。さらに、リソースプール２１４はエンジンインスタンス３０４への参照も有している。この参照は、リソースプール２１４がシンボルアレイＸ２２２の共有されたメモリクローン２５２をエンジンインスタンス３０４に転送することを可能とさせる。
（データのフロー）
初期化プロセスが終了すると、データ１０６は、取引予測器１００内にストリーミングされ、取引予測器１００は、その一部が図４に示される種々のステップ４００を実施する。これらのステップの中に、ホストシステムがストリーミングされるデータを受信するス
テップ（ステップ４０２）およびホストシステムがコプロセッサハードウェアにストリーミングされるデータを渡す別のステップ（ステップ４０４）が存在する。コプロセッサハードウェア１０４は、予め定義されたデータ構造内にデータを挿入するステップ（ステップ４０６）と、データをクローン化するステップ（ステップ４０８）と、エンジンインスタンスを生成するステップ（ステップ４１０）とを実施する。
（ホストシステムおよびコプロセッサハードウェア受信データ）
元の図２を参照して、ホストシステム１０２は、ストリーミングされる金融市場データ１０６を市場データプロバイダ２０２から受信する。市場データ１０６のタイプは、買い呼び値、売り呼び値、および売買高を含むが、それに限定されない。ホストシステム１０２は、その後、コプロセッサハードウェア１０４に注入するために市場データ１０６を準備する。ホストシステム１０２は、取引予測器１００全体を通して後で使用するために、それぞれの一意の市場データシンボルに一意の整数値を割当てる市場ティックハンドラ２８０を通して市場データを処理することによって準備する。市場データシンボルは、コプロセッサハードウェア１０４内のデータ構造が、効率的に生成され処理されるために、整数値にマッピングされる。市場ティックハンドラ２８０は、対応する市場データシンボルへの整数値のマッピングを維持する。一部の例では、このマッピングは、予測出力２９０が、コプロセッサハードウェア１０４から元のホストシステム１０２に中継されるときに、ホストシステム１０２が、市場データシンボルを市場データ１０６に再関連付けするように、ホストシステム１０２上でホストされる。市場ティックアダプタ２４０は、市場ティックハンドラ２８０から、整数割当てを有する市場データを受信し、市場データを、市場ストリームゲートウェイ２４２にアップロードするコマンドを発する。
【００３８】
ホストシステム１０２によって処理された後、データは、コプロセッサハードウェア１０４に注入される。取引予測器１００の利点のうちの１つの利点は、バッファリングおよびデータハンドリングなどのホストシステム１０２上で通常実行される機能の多くが、代わりに、コプロセッサハードウェア１０４上で実行されることである。
【００３９】
取引予測器１００の別の利点は、取引予測器１００が、大量の市場データをリアルタイムに処理し、したがって、市場が動く前に予測を生成することができることである。取引予測器１００の別の利点は、リアルタイム予測を生成するのに十分に迅速に大量の市場データを処理することができることである。
（データ構造への挿入）
コプロセッサハードウェア１０４に注入されると、市場ストリームゲートウェイ２４２は、データを受信し、データに対してタイムスタンプをアペンドし、リソースプール２１４上にそれを渡す。市場ストリームゲートウェイ２４２は、整数値に基づいて正しいシンボルハンドラ２１６、２１８、２２０に挿入するために、ホストシステム１０２からデータを受信し、リソースプール２１４内に市場データを割当てる。リソースプール２１４およびシンボルハンドラ２１６、２１８、２２０による整数値の使用は、市場データ１０６が効率的に処理されることを可能にすることによって、かなりの処理性能利益を提供する。コプロセッサハードウェア１０４内での市場データに対する参照は、整数値を使用する。一部の例では、市場データシンボルは、予測データがコプロセッサハードウェア１０４からホストシステム１０２に戻るときに、ホストシステム１０２によって後で使用するために、コプロセッサハードウェア１０４に渡される。他の例では、市場データシンボルは、先に論じたように、ホストシステム１０２上に存在する。
【００４０】
図４を参照して、リソースプール２１４（図２参照）は、データピースに関連するティッカーシンボルを確定し、正しいデータ構造にデータを挿入する（ステップ４０６）。これは、データピースを、データのティッカーシンボルに対応するシンボルハンドラ２１６、２１８、２２０に転送することを含む。一部の例では、予測データ１０６が、一意の整数値に関連するため、シンボルハンドラ２１６、２１８、２２０は、これらの一意の整数値に対応する。さらに、リソースプール２１４は、データピースに関連するタイムスタンプを調査し、データが、適切なシンボルアレイ２２２、２２４、２２６内に挿入されるべきであるタイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８（図３）を指定する。
【００４１】
タイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８は、連続して、新しいデータで更新され、古いデータが一掃される。タイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８の１つの利点は、最も古いデータが、最も古いデータを最初に探索する必要なしで、容易に上書きされることである。上記例では、アルゴリズムＡは、起動する前に、データの１５分相当分を必要とする。したがって、アルゴリズムＡについて使用されるだけであるティッカーシンボルデータは、１５分のデータ収集後に新しいデータで上書きされる。表１を参照して、ティッカーシンボルＸデータはアルゴリズムＡのみに用いられる。したがって、最も古いティッカーシンボルＸデータは、すなわち１５分より前に収集されたデータは、１５分のデータ収集後に上書きされ始める。しかし、ティッカーシンボルＹデータは、アルゴリズムＡとアルゴリズムＢの両方について収集される。先に論じたように、アルゴリズムＢは、エンジンインスタンスによって起動されるデータ収集の３時間相当分を必要とする。したがって、ティッカーシンボルＹデータは、１５分だけのデータ収集後ではなく、３時間のデータ収集後に、新しいティッカーシンボルＹで上書きされ始める。
【００４２】
タイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８の別の利点は、それらが、可変長データの分類を可能にすることである。データ１０６が、連続ストリームでホストシステム１０２に入ることに失敗するとき、タイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８での金融データの更新レートが一貫していない。タイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８などの時間ベース分類システムは、データが、データのタイムスタンプに応じて、また、データ長に無関係にバケットで分類されることを可能にする。
【００４３】
タイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８の別の利点は、指定された時間間隔にわたるデータが、エンジンインスタンス３０４、３０６、３０８、３１０によって要求されると、容易に識別されうることである。たとえば、午後３：００に、エンジンインスタンス３０４は、１５分のティッカーシンボルＸデータに対してアルゴリズムＡを実行するとき、午後２：４５と午後３：００との間に収集された全てのティッカーシンボルＸデータを要求する可能性がある。応答して、コプロセッサハードウェア１０４は、午後２：４５と午後３：００との間に収集されたデータを保持する全てのタイムバケット３５２、３５４、３５６、３５８、３５９に問い合わせるだけであり、それにより、大量のデータを走査する必要性が回避される。
（データのクローン化）
エンジンインスタンス３０４、３０６、３０８、３１０を実行する前に、アルゴリズムを起動するときに使用されるデータがクローン化される４０８（図４）。図５を参照して、コプロセッサハードウェア１０４は、エンジンインスタンスの実行を準備するためにデータをクローン化するとき４０８に、種々のステップを実施する。データクローン化（ステップ４０８）は、起動メッセージの受信によって開始される（ステップ５０２）。この起動メッセージは、ホストシステム１０２上に位置するマネジャー２５０（図２）が起動メッセージをエンジンアダプタ２０４に送出するときに起こり、エンジンアダプタ２０４が、その後、起動メッセージをエンジンゲートウェイ２０６に中継する。起動メッセージは、エンジンインスタンス３０４、３０６、３０８、３１０が実行されるときを指定し、エンジンインスタンス３０４、３０６、３０８、３１０の実行を開始する。
【００４４】
起動メッセージを受信すると、エンジンゲートウェイ２０６は、エンジンインスタンスを実行するのに必要とされるデータ量およびデータのティッカーシンボルを確定する（ステップ５０４）。データ量は、どれだけ多くのデータをアルゴリズムが必要とするかに依存する。たとえば、一部のアルゴリズムは、ティッカーシンボルデータの１５分相当分を必要とすることになり、一方、他のアルゴリズムは、ティッカーシンボルデータの３時間相当分を必要としてもよい。必要とされるティッカーシンボルデータを保持するメモリ部分に対する参照２２８（図２）を使用して、エンジンインスタンス３０４、３０６、３０８、３１０は、必要とされるデータがクローン化されることを要求する５０６。それは、必要とされるデータのタイプおよび量を指定する要求をリソースプール２１４に送出することによって行われる。
【００４５】
応答して、シンボルハンドラ２１６、２１８、２２０は、指定されたティッカーシンボルに関連しかつ要求される時間間隔内に含まれるタイムバケット３５２、３５４、３５６、３５８、３５９、および３６２、３６４、３６６、３６８内のデータをクローン化する。これは、シンボルアレイ２２２、２２４、２２６の全てまたは一部をクローン化することをもたらす。シンボルアレイ２２２、２２４、２２６のコンテンツは、コプロセッサハードウェア１０４に市場データ１０６が連続して流入するため、絶えず変化する。しかし、本質的にシンボルアレイ内のデータのスナップショットであるデータクローンは、静的データセットである。たとえば、アルゴリズムＡが、最後の１５分で収集されたティッカーシンボルＸデータに対して実行される場合、シンボルハンドラＸ  ２１６は、ティッカ
ーシンボルＸタイムバケットセット３５０から最後の１５分のデータをクローン化し、静的なティッカーシンボルＸデータセットを生成する。
【００４６】
データがクローン化された後、クローン化されたデータは、データを要求したエンジンインスタンス５１０に渡される。図２を参照して、各エンジンインスタンス３０４、３０６、３０８、３１０は、クローン化されたシンボルアレイ２５２、２５４、２５６、２５８に関連付けられる。これらのエンジンインスタンス３０４、３０６、３０８、３１０は、アルゴリズムの起動時にクローン化されたシンボルアレイ２５２、２５４、２５６、２５８を使用する。
【００４７】
コプロセッサハードウェア１０４上でティッカーシンボルデータをクローン化する利益は、コプロセッサハードウェア１０４が、オペレーティングシステムカーネルなしで、高速メモリバッファを含むことである。結果として得られる計算オーバヘッドの減少は、データをクローン化するのに必要とされる時間を減少させ、予測までの時間を減少させる。
【００４８】
１つの最適化技法は、全体のシンボルアレイ２２２、２２４、２２６を再クローン化する代わりに、クローン化されたシンボルアレイ２５２、２５４、２５６、２５８を更新するのに必要とされるデータだけをクローン化することを含む。たとえば、エンジンインスタンス３０４が、１５分のティッカーシンボルデータを要求するだけであるアルゴリズムＡを起動することを仮定する。エンジンインスタンス３０４が、アルゴリズムＡを午後３：００に起動し、アルゴリズムＡを午後３：０１に再び起動する場合、シンボルハンドラ２１６、２１８、２２０内の最後の１５分のデータは、再クローン化される必要がない。代わりに、クローン化されたシンボルアレイ２５２が、３：００：００と３：００：５９との間に収集された最近のデータで更新される必要があるだけである。
【００４９】
さらに、クローン化されたシンボルアレイ２５２、２５４、２５６、２５８は、種々のまた時には異なる時間で更新する。図６を参照して、エンジンインスタンスは、アルゴリズムＡを１５分ごとに起動し、アルゴリズムＢを１時間ごとに起動する。エンジンインスタンスが、起動する前に更新するため、アルゴリズムＡに関連するクローン化されたシンボルアレイは、３回６０２、６０４、６０６更新され、アルゴリズムＡは、４５分で３回６０８、６１０、６１２起動される。対照的に、アルゴリズムＢに関連するクローン化されたシンボルアレイは、１回だけ更新され６１４、アルゴリズムＢは、４５分で１回だけ起動される６１６。
（エンジンインスタンスの実行）
図４を参照して、データがクローン化され、クローン化されたシンボルアレイ２５２、２５４、２５６、２５８がエンジンインスタンス３０４、３０６、３０８、３１０に渡されると、エンジンインスタンス３０４、３０６、３０８、３１０は、適切なアルゴリズムを起動する。一部の例では、同じアルゴリズムが、異なるティッカーシンボルに適用される。他の例では、異なるアルゴリズムが、異なるティッカーシンボルに適用される。エンジンインスタンス３０４、３０６、３０８、３１０によって起動されるアルゴリズムのタイプは、取引活動の時間加重平均または容量加重平均などの標準的な業界アルゴリズム、および、独自アルゴリズムまたはカスタム開発アルゴリズムを含む。
【００５０】
コプロセッサハードウェア１０４が、多数のエンジンインスタンス３０４、３０６、３０８、３１０を同時に実行することが可能であるため、多数のアルゴリズムが、起動され、市場データ１０６に対して並列に実行される。一例では、８０００のエンジンインスタンスが生成される。コプロセッサハードウェア１０４は、これらの８０００のエンジンインスタンスを同時に実行する。これは、市場データ１０６に対する８０００のアルゴリズムの並列実行をもたらす。
（エンジンインスタンスからの出力）
一部の例では、エンジンインスタンス３０４、３０６、３０８、３１０からの予測１０８は、有価証券の平均価格などの単一計算である。他の例では、予測１０８は、多数の事前計算に依存する。図２を参照して、エンジンインスタンス３１０は、３つの計算２６６、２６８、２７０を生成し、第３の計算２７０は、予測１０８を示す。しかし、予測１０８は、計算２６６および計算２６８に依存する。
【００５１】
エンジンインスタンス３０４、３０６、３０８、３１０は、予測出力２９０を生成すると、予測出力２９０を、ホストシステム１０２上の予測アダプタ２７４に戻す。予測アダプタ２７４は、予測出力２９０を予測ハンドラ２８４に渡す。予測ハンドラ２８４は、下流の消費者のために予測出力２９０をフォーマットする。このステップで、予測ハンドラ２８４は、ティッカーシンボルを市場データに再割り当てする。予測出力２９０のフォーマットは、外部予測ティッカープラント２８６のためにカスタマイズされる。ティッカープラント２８６は、その後、予測データを予測消費者２８８に中継する。
【００５２】
コプロセッサハードウェア１０４およびホストシステム１０２は、予測１０８をホストシステム１０２に渡す予測ストリームゲートウェイ２７２を通してインタフェースする。予測アダプタ２７４は、コプロセッサハードウェア１０４が予測１０８を提供するときに予測１０８をバッファリングし格納することによって、コプロセッサハードウェア１０４からホストシステム１０２上に予測１０８を移動させる。予測アダプタ２７４はまた、ユーザインタフェース２６０に提示するために、バッファリングされた予測１０８をマネジャー２５０に転送し、ユーザインタフェース２６０にて、予測１０８が、観察可能フォーマットで提示される。
（ステータスゲートウェイ）
図２を参照して、ステータスゲートウェイ２３２は、リソースプール２１４から統計量を収集する。統計量は、コプロセッサハードウェア１０４が受信したティッカーシンボルデータの異なるタイプ、または、メモリに保持されるタイムバケットの数を含むが、それに限定されない。リソースプール２１４は、コプロセッサハードウェア１０４にストリーミングされるデータのタイプおよびサイズの運用在庫を維持する。エンジンインスタンス３０４、３０６、３０８、３１０は、ステータスゲートウェイ２３２に、所与の時間に実行されるエンジンインスタンス３０４、３０６、３０８、３１０の数、１日に生成される予測１０８の総数、およびコンピュータタイマ性能の実行速度などの予測１０８の生成に関する統計量を提供する。ステータスゲートウェイ２３２を通して、コプロセッサハードウェア１０４は、コプロセッサハードウェア１０４がタイムバケットを通して再走査する必要なく、データ１０６の処理に関する統計量をホストシステム１０２に提供して、処理されるデータの現在のタイプおよびサイズの更新が提供される。さらに、エンジンインスタンス３０４、３０６、３０８、３１０が実行されるとき、実行の前に、参照が、ステータスゲートウェイ２３２に送出される。この参照を受信すると、ステータスゲートウェイ２３２は、エンジンインスタンス３０４、３０６、３０８、３１０が起動された回数、および、エンジンインスタンス３０４、３０６、３０８、３１０が起動することをエンジンアダプタ２０４が要求した回数などの統計量をステータスアダプタ２６２に送出し始める。
【００５３】
ステータスゲートウェイ２３２は、ホストシステム１０２に統計量を出力する。ホストシステム１０２内のステータスアダプタ２６２は、未処理統計量を受信し、その統計量をステータスハンドラ２６４に送出する。ステータスハンドラ３６４は、マネジャー２５０によって消費されるために統計量をフォーマットする。統計量は、フォーマットされた後、マネジャー２５０に転送される。
【００５４】
本発明のいくつかの実施形態が述べられた。それでも、本発明の趣旨および範囲から逸脱することなく、種々の変更が行われてもよいことが理解されるであろう。１つの特定の
例では、コプロセッサハードウェア１０４は、市場データ源に対するインタフェースである。したがって、他の実施形態は、添付特許請求の範囲内にある。
【図１】
0005755146.tif 000003
【図２】
0005755146.tif 000004
【図３】
0005755146.tif 000005
【図３Ａ】
0005755146.tif 000006
【図４】
0005755146.tif 000007
【図５】
0005755146.tif 000008
【図６】
0005755146.tif 000009