(57)【要約】      （修正有）【課題】取引アルゴリズムの実行の前に取引アルゴリズムを承認するためのシステム、方法、コンピュータ可読記憶媒体を提供する。【解決手段】方法は、一意識別子に関連付けられる取引アルゴリズム定義を受信するステップと、取引アルゴリズムを表すプログラミングコードを実行するように動作可能なアルゴリズムサーバに一意識別子を送信するステップを含む。一意識別子は、プログラミングコードの実行が承認されたトレーダに関連付けられても良い。アルゴリズムサーバはプログラミングコードの実行前に一意識別子をチェックして、取引アルゴリズムが承認されていることを確保するようにしても良い。【選択図】図１
2020053063.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスを用いて、取引アルゴリズムに対応する取引アルゴリズム定義を受信するステップ、
コンピューティングデバイスを用いて、取引アルゴリズムを表すプログラミングコードを実行するように動作可能なアルゴリズムサーバ上にて実行される取引アルゴリズム定義を承認するユーザ入力を受信するステップ、
ユーザ入力の受信に応じて、コンピューティングデバイスを用いて、取引アルゴリズム定義に対応する一意識別子を送信するステップ、ここで、一意識別子は、取引アルゴリズムを表すプログラミングコードとプログラミングコードの実行を承認されたトレーダとに関連付けられる、
を含む方法。
【請求項２】
一意識別子を受信するステップ、
ユーザ入力の受信に応じて、一意識別子と、取引アルゴリズム定義、取引アルゴリズム若しくは取引アルゴリズムに関連付けられるプログラミングコードのうちの少なくとも１つとをアルゴリズムサーバに送信するステップ、
をさらに含む、請求項１に記載の方法。
【請求項３】
一意識別子をリスク管理デバイスによって受信するステップ、
ユーザ入力の受信に応じて、リスク管理デバイスからアルゴリズムサーバに、一意識別子と、取引アルゴリズム定義、取引アルゴリズム若しくは取引アルゴリズムに関連付けられるプログラミングコードのうちの少なくとも１つとを送信するステップ、
をさらに含む、請求項１に記載の方法。
【請求項４】
一意識別子は、リスク管理デバイス上で生成される証明であり、
一意識別子を送信するステップは、クライアントコンピューティングデバイスのユーザによってアクセスされるリスク管理デバイスから証明を送信するステップをさらに含む、請求項１に記載の方法。
【請求項５】
証明は、一意識別子、取引アルゴリズム定義、取引アルゴリズム又は取引アルゴリズムに対応するプログラミングコードのうちの少なくとも１つを用いて生成される、請求項４に記載の方法。
【請求項６】
ユーザ入力の受信に応じて、取引アルゴリズムを表すプログラミングコードおよびそのプログラミングコードの実行を承認されたトレーダに関連付けられるトレーダ識別子を送信するステップ、をさらに含む、請求項１に記載の方法。
【請求項７】
一意識別子と、取引アルゴリズム定義、取引アルゴリズム若しくは取引アルゴリズムに関連付けられるプログラミングコードのうちの少なくとも１つは、リスク管理デバイスから承認デバイスへ第１レベルの承認として送信され、承認デバイスは、アルゴリズムサーバに第２レベルの承認を提供する、請求項１に記載の方法。
【請求項８】
受信した取引アルゴリズム定義を記憶するステップ、をさらに含む、請求項１に記載の方法。
【請求項９】
取引アルゴリズムが実行のために承認されたことを示すものであって、取引アルゴリズム設計インタフェースのユーザによってアクセスされる通知を送信するステップ、をさらに含む、請求項１に記載の方法。
【請求項１０】
一意識別子は、ハッシュ値、トレーダ識別子又はグローバル一意識別子のうちの少なくとも１つである、請求項１に記載の方法。
【請求項１１】
命令を備えた有形コンピュータ可読記憶媒体であって、その命令は実行されたときにコンピューティングデバイスに少なくとも、
取引アルゴリズム設計インタフェースを用いて設計された取引アルゴリズムに対応する受信した取引アルゴリズム定義を受け付けるステップ、
アルゴリズムサーバ上にて実行される取引アルゴリズム定義を承認するユーザ入力の受信に応じて、取引アルゴリズム定義に対応する一意識別子を送信するステップ、ここで、一意識別子は、取引アルゴリズムを表すアルゴリズムサーバに記憶されたプログラミングコードと、プログラミングコードの実行が承認されたトレーダとに関連付けられる、
を行わせる、有形コンピュータ可読記憶媒体。
【請求項１２】
その命令は実行されたときにコンピューティングデバイスに少なくとも、
一意識別子を受け付けるステップ、
ユーザ入力の受信に応じて、アルゴリズムサーバに、取引アルゴリズム定義、取引アルゴリズム又は取引アルゴリズムに関連付けられるプログラミングコードのうちの少なくとも１つを送信するステップ、
を行わせる、請求項１１に記載の有形コンピュータ可読記憶媒体。
【請求項１３】
その命令は実行されたときにコンピューティングデバイスに少なくとも、
一意識別子を生成するステップ、
ユーザ入力の受信に応じて、アルゴリズムサーバに、一意識別子と、取引アルゴリズム定義、取引アルゴリズム若しくは取引アルゴリズムに関連付けられるプログラミングコードのうちの少なくとも１つとを送信するステップ、
を行わせる、請求項１１に記載の有形コンピュータ可読記憶媒体。
【請求項１４】
その命令は実行されたときにコンピューティングデバイスに少なくとも、
証明の中に符号化された一意識別子をクライアントコンピューティングデバイスに送信するステップ、を行わせる、請求項１１に記載の有形コンピュータ可読記憶媒体。
【請求項１５】
その命令は実行されたときにコンピューティングデバイスに少なくとも、
ユーザ入力の受信に応じて、取引アルゴリズムに関連するプログラミングコードと、プログラミングコードの実行が承認されたトレーダとに関連付けられるトレーダ識別子を送信するステップ、を行わせる、請求項１１に記載の有形コンピュータ可読記憶媒体。
【請求項１６】
その命令は実行されたときにコンピューティングデバイスに少なくとも、
取引アルゴリズムが実行のために承認されたことを示すものであって、クライアントコンピューティングデバイスのユーザによってアクセスされる通知を送信するステップ、
を行わせる、請求項１１に記載の有形コンピュータ可読記憶媒体。
【請求項１７】
一意識別子は、ハッシュ値、トレーダ識別子又はグローバル一意識別子のうちの少なくとも１つである、請求項１１に記載の有形コンピュータ可読記憶媒体。
【請求項１８】
命令を備え、その命令は実行されたときにコンピューティングデバイスに少なくとも、以下のステップを少なくとも行うように動作可能なユーザインタフェースを実装させる、有形コンピュータ可読記憶媒体であって、そのステップは、
クライアントコンピューティングデバイス上に設計された取引アルゴリズムに対応するとともに、リスクマネージャによる取引アルゴリズムのレビューを可能にする取引アルゴリズム定義を表示するステップ、
アルゴリズムサーバ上で実行される取引アルゴリズム定義を承認するとともに、取引アルゴリズム定義に対応する一意識別子がアルゴリズムサーバに送信されることを要求する、少なくとも１つのユーザ入力を受信するステップ、
一意識別子がアルゴリズムサーバに送信されたことを示すものであるとともにユーザによってアクセスされる通知をデバイスに送信するステップである、有形コンピュータ可読記憶媒体。
【請求項１９】
ユーザインタフェースは、取引アルゴリズム定義が受信されてリスクマネージャによってレビュー可能であることをリスクマネージャに通知するように動作可能である、請求項１８に記載の有形コンピュータ可読記憶媒体。
【請求項２０】
その命令は実行されたときにコンピューティングデバイスに、以下のステップを少なくとも行うように動作可能なエクスポートインタフェースを実装させる、請求項１８に記載の有形コンピュータ可読記憶媒体であって、
そのステップは、取引アルゴリズムを表すプログラミングコードを実行するように動作可能なアルゴリズムサーバに一意識別子を送信するステップである、有形コンピュータ可読記憶媒体。
【請求項２１】
ユーザインタフェースは、取引アルゴリズム定義に少なくとも部分的に基づいて取引アルゴリズムのグラフィカル描写を表示するように動作可能である、請求項１８に記載の有形コンピュータ可読記憶媒体。
【請求項２２】
ユーザインタフェースは、ユーザアカウントと、ユーザアカウントにアクセス可能な一式の取引アルゴリズムとを表示するように動作可能である、請求項１８に記載の有形コンピュータ可読記憶媒体。
【請求項２３】
受信された承認済の取引アルゴリズム、受信されたトレーダ識別子および承認済の取引アルゴリズムに対応する一意識別子を受け付けるステップ、
承認識別子の受信に応じて、承認識別子がトレーダ識別子又は一意識別子のうちの少なくとも１つに対応するかどうかを決定するステップ、
トレーダ識別子又は一意識別子のうちの少なくとも１つに対応する承認識別子に応じて、承認済の取引アルゴリズムを表すプログラミングコードを実行するステップ、
トレーダ識別子又は一意識別子のうちの少なくとも１つに対応しない承認識別子に応じて、プログラミングコードを拒否し、プログラミングコードが実行されないことを示す通知を送信するステップ、
を含む方法。
【請求項２４】
一意識別子を生成するステップをさらに含む、請求項２３に記載の方法。
【請求項２５】
プログラミングコードの実行により、取引所のデバイスとの１つ以上の市場取引が実行される、請求項２３に記載の方法。
【請求項２６】
命令を備えた有形コンピュータ可読記憶媒体であって、その命令は実行されたときにコンピューティングデバイスに少なくとも、
受信された承認済の取引アルゴリズムを受け付けるステップ、
承認済の取引アルゴリズム、トレーダ識別子および承認済の取引アルゴリズムに対応する一意識別子を記憶するステップ、
受信された承認識別子を受け付けるステップ、
承認識別子がトレーダ識別子又は一意識別子のうちの少なくとも１つに対応するかどうかを決定するステップ、
トレーダ識別子又は一意識別子のうちの少なくとも１つに対応する承認識別子に応じて、承認済の取引アルゴリズムを表すプログラミングコードを実行するステップ、
トレーダ識別子又は一意識別子のうちの少なくとも１つに対応しない承認識別子に応じて、プログラミングコードを拒否し、プログラミングコードが実行されないことを示す通知を送信するステップ、
を行わせる、有形コンピュータ可読記憶媒体。
【請求項２７】
その命令は実行されたときにコンピューティングデバイスに少なくとも、
一意識別子を生成するステップ、を行わせる、請求項２６に記載の有形コンピュータ可読記憶媒体。
【請求項２８】
その命令は実行されたときにコンピューティングデバイスに少なくとも、
プログラミングコードが承認された又は承認されなかったことを示す通知を送信するステップ、を行わせる、請求項２６に記載の有形コンピュータ可読記憶媒体。
【請求項２９】
その命令は実行されたときにコンピューティングデバイスに少なくとも、
取引所のデバイスとの１つ以上の市場取引を実行するステップ、を行わせる、請求項２６に記載の有形コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示例は、取引アルゴリズムに対応するプログラミングコードがライブ環境（live environment）にて実行される前における、第三者（本明細書では「リスクマネージャ」と称する）による取引アルゴリズムの承認に関する。
【背景技術】
【０００２】
電子取引システムは通常、電子取引所に接続するクライアントデバイスを備える。電子取引所はクライアントデバイスへ市場データを送信する。市場データには例えば、価格データ、市場深度データ、最新の取引数量データが含まれる。電子取引システムによっては、クライアントデバイスが電子取引所へ取引注文を送信するものもある。代替的に又は付加的に、サーバ側デバイスが電子取引所に取引注文を送信する。取引注文を受信すると、電子取引所は取引注文を取引所オーダーブック（exchange order book）に入力するとともに、取引注文の数量を１つ以上の反対（contra-side）の注文の数量とマッチングさせる。
【０００３】
電子取引所によれば、数多くの参加者が市場で所定の時間にて活動することができた。潜在的な市場参加者が増加するにつれて市場はとりわけ、より競争的で流動的になってきた。電子取引の競争的な環境においては、１秒あるいは１秒のうちのわずかな時間でも取引機会が中断されるため、自動的な電子取引として取引アルゴリズムが有効である。
【図面の簡単な説明】
【０００４】
以下の図面を参照しながらいくつかの例を説明する。
【図１】いくつかの例示的なシステム、装置および／又は方法が採用される電子取引システムの一例を示す図
【図２】取引アルゴリズムを承認する方法の一例を表すフロー図
【図３Ａ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｂ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｃ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｄ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｅ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｆ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｇ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｈ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｉ】取引アルゴリズムを承認する方法の例を表すフロー図
【図３Ｊ】取引アルゴリズムを承認する方法の例を表すフロー図
【図４】取引アルゴリズム設計アプリケーションの一例の一態様を示す図
【図５Ａ】取引アルゴリズム承認アプリケーションの一例の一態様を示す図
【図５Ｂ】取引アルゴリズム承認アプリケーションの一例の一態様を示す図
【図６】図４の取引アルゴリズム設計アプリケーションの例の一態様を示す図
【図７】図４の取引アルゴリズム設計アプリケーションの例の一態様を示す図
【図８】上述した例を実行するために用いられるコンピューティングデバイスの一例のブロック図
【発明を実施するための形態】
【０００５】
前述した概要および以下の詳細な説明は、図面とともに読むことで良く理解される。図面はいくつかの例を示すが、添付の図面に示す装置や手段の例に限定されない。
【０００６】
ユーザ（例えばトレーダ）は電子取引アプリケーションを用いることで取引アルゴリズムを設計することができる。取引アルゴリズムは通常、特定の市場状況が発生および／又は検知されたときに特定の取引アクションが生じるべきことを特定する。取引アクションの例としては、注文の提出、キャンセルおよび再価格付けがある。
【０００７】
ユーザは電子取引アプリケーションを用いて、取引アルゴリズムをサーバデバイスにアップロードすることができる。サーバデバイスは、取引アルゴリズムを自動的に実行することができる。取引アルゴリズムの設計および／又は円滑化を行うユーザには、対応するプログラミングコードが実行されるときに取引アルゴリズムによって生じうる潜在的なリスクの識別、重み付け又は評価に対する経験および／又は関心が十分にない。大量のお金および資源は、対応するファンドに関連する義務に関する負担に応じて、取引アルゴリズムによって実行される各取引に拘束されることとなる。
【０００８】
いくつかの例では、取引アルゴリズムはサーバデバイス上での実行前に承認される。取引アルゴリズムの承認には、取引アルゴリズムにおける固有の識別子の採用および／又は取引アルゴリズムの定義の採用が含まれても良い。いくつかの例における固有の識別子は、取引アルゴリズム定義が記憶、変更および／又はリスクマネージャに送信されるあらゆる時に生成される。固有の識別子の例には、ハッシュコード（hash codes）およびグローバル一意識別子（GUID）が含まれる。いくつかの例では、固有の識別子は、１又はそれ以上のタイミングにて変化する、および／又は１つ以上のイベント（例えば、取引アルゴリズムの定義が記憶されるとき）に応じて変化する。いくつかの例では、固有の識別子を変化させることで、リスクマネージャが取引アルゴリズムを承認した後にトレーダが取引アルゴリズムを変更しないようにしている。これにより、承認されていない取引アルゴリズムをトレーダが実行することが防止される。
【０００９】
いくつかの例では、人間による取引アルゴリズムの監視や、経験の多いトレーダによる経験の少ないトレーダの観察や、リスクマネージャによる取引アルゴリズムのポートフォリオの管理が提供される。
【００１０】
いくつかの例では、構成要素の中でも、ハードウェアにて実行されるソフトウェアが含まれる。このような例は単に例示的なものであり、これらの例に限定して解釈すべきではない。例えば、ハードウェアおよびソフトウェアの構成要素のうちのいくつか又はその全てを、ハードウェアのみで、ソフトウェアのみで、ファームウェアのみで、又はこれらのあらゆる組み合わせにおいて具現化可能である。したがって、ここに開示される例は他の方法でも実行可能である。
【００１１】
Ｉ．簡単な説明
ある例では、方法は、コンピューティングデバイスを用いて、取引アルゴリズム設計インタフェースを用いて設計された取引アルゴリズムに対応する取引アルゴリズム定義を受信するステップを含む。取引アルゴリズム定義は取引戦略を実行するために使用される。本例の方法は、コンピューティングデバイスを用いて、取引アルゴリズムを表すプログラミングコードを実行するように動作可能なアルゴリズムサーバ上にて実行される取引アルゴリズム定義を承認するユーザ入力を受信するステップを含む。本例の方法は、ユーザ入力の受信に応じて、コンピューティングデバイスを用いて、取引アルゴリズム定義に対応する一意識別子を送信するステップを含む。本例の一意識別子は、取引アルゴリズムを表すプログラミングコードとプログラミングコードの実行を承認されたトレーダとに関連付けられる、
を含む方法。
【００１２】
ある例では、有形コンピュータ可読記憶媒体は、実行されたときにコンピューティングデバイスに、取引アルゴリズム設計インタフェースを用いて設計された取引アルゴリズムに対応する受信した取引アルゴリズム定義を受け付けるステップを行わせる命令を備える。本例の命令は、実行されたときにコンピューティングデバイスに、アルゴリズムサーバ上にて実行される取引アルゴリズム定義を承認するユーザ入力の受信に応じて、取引アルゴリズム定義に対応する一意識別子を送信するステップを行わせる。本例の一意識別子は、取引アルゴリズムを表すアルゴリズムサーバに記憶されたプログラミングコードと、プログラミングコードの実行が承認されたトレーダとに関連付けられる。
【００１３】
ある例では、有形コンピュータ可読記憶媒体は命令を備え、その命令は実行されたときにコンピューティングデバイスに、取引アルゴリズム定義を表示するステップを少なくとも行うように動作可能なユーザインタフェースを実装させる。その取引アルゴリズム定義は、クライアントコンピューティングデバイス上に設計された取引アルゴリズムに対応するとともに、リスクマネージャによる取引アルゴリズムのレビューを可能にするものである。本例のユーザインタフェースは、アルゴリズムサーバ上で実行される取引アルゴリズム定義を承認するとともに、取引アルゴリズム定義に対応する一意識別子がアルゴリズムサーバに送信されることを要求する、少なくとも１つのユーザ入力を受信するステップを行うように動作可能である。本例のユーザインタフェースは、一意識別子がアルゴリズムサーバに送信されたことを示すものであるとともにユーザによってアクセスされる通知をデバイスに送信するステップを行うように動作可能である。
【００１４】
ある例では、方法は、受信された承認済の取引アルゴリズム、受信されたトレーダ識別子および承認済の取引アルゴリズムに対応する一意識別子を受け付けるステップを含む。本例の方法は、承認識別子の受信に応じて、承認識別子がトレーダ識別子又は一意識別子のうちの少なくとも１つに対応するかどうかを決定するステップを含む。本例の方法は、トレーダ識別子又は一意識別子のうちの少なくとも１つに対応する承認識別子に応じて、承認済の取引アルゴリズムを表すプログラミングコードを実行するステップを含む。本例の方法は、トレーダ識別子又は一意識別子のうちの少なくとも１つに対応しない承認識別子に応じて、プログラミングコードを拒否し、プログラミングコードが実行されないことを示す通知を送信するステップを含む。
【００１５】
ある例では、有形コンピュータ可読記憶媒体は命令を備え、その命令は実行されたときにコンピューティングデバイスに少なくとも、受信された承認済の取引アルゴリズムを受け付けるステップを行わせる。本例の命令は、実行されたときにコンピューティングデバイスに、承認済の取引アルゴリズム、トレーダ識別子および承認済の取引アルゴリズムに対応する一意識別子を記憶するステップを行わせる。本例の命令は、実行されたときにコンピューティングデバイスに、受信された承認識別子を受け付けるステップを行わせる。本例の命令は、実行されたときにコンピューティングデバイスに、承認識別子がトレーダ識別子又は一意識別子のうちの少なくとも１つに対応するかどうかを決定するステップを行わせる。本例の命令は、実行されたときにコンピューティングデバイスに、トレーダ識別子又は一意識別子のうちの少なくとも１つに対応する承認識別子に応じて、承認済の取引アルゴリズムを表すプログラミングコードを実行するステップを行わせる。本例の命令は、実行されたときにコンピューティングデバイスに、トレーダ識別子又は一意識別子のうちの少なくとも１つに対応しない承認識別子に応じて、プログラミングコードを拒否し、プログラミングコードが実行されないことを示す通知を送信するステップを行わせる。
【００１６】
ＩＩ．電子取引システム
図１は、開示される例のいくつかを採用可能な電子取引システム１００の一例を示す。図１の例の取引システム１００は、クライアントデバイス１１２と、リスク管理デバイス１１４と、サーバデバイス１２２（「サーバ側デバイス」又は「アルゴリズムサーバ」とも称する）と、ゲートウェイ１２４と、電子取引所１２６とを備える。クライアントデバイス１１２およびリスク管理デバイス１１４は互いに接続されるとともに、サーバデバイス１２２およびゲートウェイ１２４にも接続される。ゲートウェイ１２４は、取引所１２６に接続される。本明細書において、「接続」との用語には、直接的な接続と、１つ以上の中間コンポーネントを介した非直接的な接続とが含まれる。
【００１７】
Ａ．クライアントデバイス
クライアントデバイス１１２は、取引所１２６にある取引可能オブジェクトを買う又は売るための注文を送信するように動作可能である。ユーザ（例えばトレーダ）は、クライアントデバイス１１２を用いて注文を送信することができる。注文はゲートウェイ１２４を通じて取引所１２６に送信される。さらに、取引所１２６からゲートウェイ１２４を通じてクライアントデバイス１１２に市場データ（例えば最新の価格やインデックス値など）が送信される。ユーザはクライアントデバイス１１２を用いて、取引可能オブジェクトの注文を送信するか否かの基礎となる受信された市場データをモニタすることができる。
【００１８】
本明細書において、「取引可能オブジェクト」との用語は、ある量および／又はある価格で取引されるあらゆるものをいう。例えば、取引可能オブジェクトには、株、オプション、債券（bond）、先物、通貨、ワラント、ファンドデリバティブ（funds）、証券、商品、取引イベント、グッズ、およびこれらの組み合わせなどの、財政的製品（financial products）が含まれる。取引可能オブジェクトは、実際（real）であっても、合成（synthetic）であっても良い。実際の取引可能オブジェクトには、取引所によってリスト化された製品が含まれる。合成の取引可能オブジェクトには、ユーザによって定義されるが取引所によって定義されない製品が含まれる。合成の取引可能オブジェクトには、例えばクライアントデバイス１１２を利用するトレーダによって生成された合成スプレッドなどの、実際の製品（又は他の合成の製品）の組み合わせが含まれても良い。
【００１９】
図１の例のクライアントデバイス１１２は、プロセッサとメモリを有するコンピューティングデバイスであっても良い。クライアントデバイス１１２は、ハンドヘルドデバイス、ラップトップコンピュータ、デスクトップコンピュータ、シングルコアプロセッサ若しくはマルチコアプロセッサを有するワークステーション、複数のプロセッサを有するサーバ、および／又は一群のコンピュータなどの、１つ以上の電子コンピューティングプラットフォームが含まれても良い。クライアントデバイス１１２は、図１では単一のデバイスとして図示しているが、サーバデバイス１２２および／又はサーバデバイス１２２以外のサーバに接続される取引ターミナルを備えても良い。取引ターミナルは、ユーザに対して取引画面を提供するとともに、サーバに対して、取引画面を通じたユーザの入力（例えば注文を提出するためのコマンド）によるさらなる処理のためのコマンドを通信しても良い。
【００２０】
図１の例のクライアントデバイス１１２は通常、ユーザによって所有され、操作され、制御され、プログラムされ、設定され又は他の使用がされる。「ユーザ」との用語は、これらに限らないが、人（例えばトレーダ）や電子取引デバイス（例えば、プロセッサとメモリあるいはアルゴリズム取引システムが含まれる）をいう。１つ以上のユーザは例えば、クライアントデバイス１１２の所有中、操作中、制御中、プログラム中、設定中又は他の使用中であっても良い。
【００２１】
図１の例のクライアントデバイス１１２には、電子取引ワークステーション、ポータブル取引デバイス、「ブラックボックス」システムや「グレイボックス」システムなどのアルゴリズム取引システム、埋込式取引システムおよび／又は自動取引ツールが含まれても良い。例えば、クライアントデバイス１１２は、イリノイ州シカゴにあるＴｒａｄｉｎｇ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ｉｎｔｅｒｎａｔｉｏｎａｌ社が提供する電子取引プラットフォームであるＸ＿ＴＲＡＤＥＲ（登録商標）のコピーを稼働させるコンピューティングデバイスであっても良い。いくつかの例では、クライアントデバイス１１２は、Ｔｒａｄｉｎｇ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ｉｎｔｅｒｎａｔｉｏｎａｌ社が提供するＡｕｔｏｓｐｒｅａｄｅｒ（登録商標）やＡｕｔｏｔｒａｄｅｒ（商標）などの自動取引ツールを稼働させるコンピューティングデバイスであっても良い。
【００２２】
例の取引システム１００は、１つよりも多いクライアントデバイス１１２を備えても良い。例えば、クライアントデバイス１１２に類似する複数のクライアントデバイスがゲートウェイ１２４と接続されることで、取引所１２６に注文を送信するようにしても良い。例のクライアントデバイス１１２は、１つ以上のコンピューティングデバイス又は処理コンポーネントを備えても良い。言い換えれば、クライアントデバイス１１２の機能性を、１つのコンピューティングデバイス又はそれよりも多いコンピューティングデバイスによって発揮しても良い。例えば、あるコンピューティングデバイスが、クライアントデバイス１１２と関連して取引所１２６に送信される注文を生成する一方で、別のコンピューティングデバイスが、クライアントデバイス１１２と関連してトレーダに対するグラフィカルユーザインタフェースを提供しても良い。
【００２３】
１．アルゴリズム設計アプリケーション
図１の例を引き続き参照して、クライアントデバイス１１２は、取引アルゴリズム設計アプリケーション１１６を実行するように構成される。取引アルゴリズム設計アプリケーション１１６はメモリに記憶されても良い。プロセッサは、取引アルゴリズム設計アプリケーション１１６に関連する命令を読み取って実行しても良い。
【００２４】
いくつかの例では、取引アルゴリズム設計アプリケーション１１６は、ポータブル式コンピュータ可読記憶媒体（例えばコンパクトディスク）に記憶され、クライアントデバイス１１２は、ポータブル式記憶媒体からの取引アルゴリズム設計アプリケーション１１６を実行するように構成される。いくつかの例では、取引アルゴリズム設計アプリケーション１１６は、サーバデバイス１２２上に、又は異なるサーバデバイス上に存在するとともに、（例えばファイル又はアプリケーションデバイスからダウンロードされることにより）クライアントデバイス１１２に移動又はロードされる。これらの例は例示的なものであって、これらに制限されない。図１の例のクライアントデバイス１１２は、他の様々な方法により、取引アルゴリズム設計アプリケーション１１６を実行するように構成されても良い。
【００２５】
取引アルゴリズム設計アプリケーション１１６は、グラフィカルインタフェースを有するおよび／又はそれに関連するビジュアル設計ラボ（visual design lab）を提供しても良く、その一例としてイリノイ州シカゴにあるＴｒａｄｉｎｇ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ｉｎｔｅｒｎａｔｉｏｎａｌ社が提供するＡＤＬ（商標）がある（アルゴリズム設計ラボとも称する）。ＡＤＬの各種実施形態は、２０１０年１０月１５日に出願された米国特許出願第１２／９０５，７０９号に開示されており、参照することによりその内容が全体として本明細書に組み込まれる。
【００２６】
ビジュアル設計ラボには、特定の実施形態による取引インタフェースが含まれても良い。その取引インタフェースは、ＡＤＬと呼ばれるアルゴリズム取引アプリケーション用の取引インタフェースである。ＡＤＬによれば、トレーダは電子取引のためのアルゴリズムを設計することができる。しかしながら、ここに示される取引インタフェースの要素を他の取引インタフェースの中に組み込んでも良い。
【００２７】
取引インタフェースには、デザインキャンバスエリア（design canvas area）、ブロックリストエリア（block list area）、バリアブルエリア（variable area）、コントロールエリア（control area）が含まれても良い。特定の例においては、これらのエリアのうちの１つ以上が別のウィンドウ又はツールバーにある。例えば、ブロックリストエリアは、デザインキャンバスエリアとは別のウィンドウに存在する。デザインキャンバスエリアは、アルゴリズムを設計するための視覚的プログラミング環境を提供する。アルゴリズムの設計には、アルゴリズムの構築（building）、検査（testing）、シミュレーション（simulating）および／又は評価（evaluating）が含まれても良い。アルゴリズムにおけるユーザ定義の変数のデフォルト値は、バリアブルエリアを用いて特定しても良い。パラメータは、取引アルゴリズムへの入力であっても良い。パラメータは、可変値型（variable-value type）であっても良い。パラメータは例えば、取引アルゴリズムの実行前に又は実行中に変更しても良い。
【００２８】
例の取引アルゴリズム設計アプリケーション１１６によれば、ユーザは、例えば自動電子取引を促進するために用いられる取引アルゴリズムを、少なくとも部分的に設計することができる。取引アルゴリズムは、特定の市場状況が発生および／又は検知されたときに、特定の取引アクションが生じるべきことを特定することができる。例の取引アクションには、注文の提出、キャンセル、および再価格付けが含まれる。取引アルゴリズムが（例えば取引ツールを使用したユーザによって）クライアントデバイス１１２上にて起動されると、サーバデバイス１２２は、取引アルゴリズムを表すプログラミングコードの実行を開始する。サーバデバイス１２２は、取引所１２６から市場データを受信し、電子市場をモニタすることができる。電子市場の情報に基づいて、サーバデバイス１２２は、適切な条件が発生および／又は検出されると、取引アルゴリズムで特定された取引アクションを実行することができる。
【００２９】
取引アルゴリズムは、取引アルゴリズム定義によって特定される。取引アルゴリズム定義は、取引アルゴリズムの設計を定義するとともに、例えば後でおよび／又は１つ以上の異なるコンピューティングデバイス上で取引アルゴリズムを記憶および閲覧させることができる。加えて、取引アルゴリズム定義は、取引アルゴリズム設計アプリケーション１１６を用いて、取引アルゴリズムを（例えばグラフィカルに）表示可能にすることができる。例えば、取引アルゴリズム定義を提供する他のグラフィカル表示に関連するインタフェースを用いて、グラフィカル表示を選択、操作、および／又は配置することができる。取引アルゴリズム定義は、取引に使用されるべき取引アルゴリズムを記述するロジック式やパラメータを含む。ロジック式は、取引アルゴリズムパラメータ間の関係を特定するとともに、より多くのパラメータを生成しても良い。パラメータは例えば、取引アルゴリズムのロジック式への入力を含んでも良い。パラメータは変数であっても良い。
【００３０】
図１の例を続けて参照すると、例の取引アルゴリズム設計アプリケーション１１６は、少なくとも部分的に取引アルゴリズム定義を特定することができる。取引アルゴリズム設計アプリケーション１１６によれば、ユーザは予め定義されたロジック式によって使用されるパラメータを特定することができる。いくつかの例では、取引アルゴリズム設計アプリケーション１１６によれば、ユーザは、ロジック式のうちのいくつか又は全てを並びにパラメータのうちの一部又は全てを特定することができる。ユーザがロジック式を特定するための取引アルゴリズムは、ユーザ定義の取引アルゴリズムである。
【００３１】
取引アルゴリズム定義に基づいて、命令またはロジック（論理）が生成されても良い。命令またはロジックは、本明細書ではプログラミングコードと呼ばれる。プログラミングコードは例えば、ソースコード、中間言語コード、又は機械実行可能な命令であっても良い。
プログラミングコードの生成には例えば、生成されたソースコード又は中間言語コードのコンパイルが含まれても良い。プログラミングコードが生成されると、プログラミングコードは、定義された取引アルゴリズムに従ってシミュレーションおよび／又は取引に使用されても良い。
【００３２】
例の取引アルゴリズム設計アプリケーション１１６は、取引アルゴリズム、取引アルゴリズム定義、および／又は取引アルゴリズムに関連付けられたプログラミングコードを生成することができる。
【００３３】
２．取引アプリケーション
クライアントデバイス１１２は、１つ以上の取引アプリケーション１１８を実行するように構成されても良い。取引アプリケーション１１８は通常、電子取引を可能にし、支援し、および／又は促進する。例の取引アプリケーションが提供する取引ツールには、これらに限らないが、チャート、取引ラダー（trading ladder）、注文エントリツール、自動取引ツール、自動スプレッディングツール、リスク管理ツール、注文パラメータツール、注文エントリシステム、市場グリッド、約定ウィンドウ（fill window）、市場注文ウィンドウ、これらの組み合わせ、および／又は、取引、取引の準備若しくは取引の管理のために使用される他の電子ツールが含まれる。
【００３４】
取引アプリケーション１１８は、クライアントデバイス１１２に関連付けられた１つ以上の提示デバイス上の取引・チャートウィンドウに市場データを配置および表示することにより、市場データを処理しても良い。市場データは、取引所１２６から受信されても良く、および／又は、履歴データを提供するおよび／又は実世界の取引を生じさせずに取引所をシミュレートするシミュレーション環境から受信されても良い。この処理は、ユーザの好みに基づいても良い。取引アプリケーション１１８は、自動スプレッド取引ツールなどの自動取引ツールを含んでも良い。取引アプリケーションは、クライアントデバイス１１２のコンピューティングデバイスのうちの１つ又は複数に分散されても良い。いくつかの例では、取引アプリケーションの特定のコンポーネントは取引ワークステーション上で実行され、他のコンポーネントはワークステーションと接続するサーバ上で実行される。
【００３５】
取引アプリケーション１１８は、クライアントデバイス１１２のメモリに記憶されていても良い。取引アプリケーション１１８の特定のコンポーネントは、取引ワークステーション１１８上に記憶され、他のコンポーネントはワークステーションに接続するサーバ上に記憶しても良い。特定の例では、取引アプリケーション １１８の１つ以上のコンポーネントが、別のコンピュータ読み取り媒体からクライアントデバイス１１２のコンピュータ読み取り媒体にロードすることができる。いくつかの例では、取引アプリケーション１１８（又は取引アプリケーション１１８への更新）は、製造者、開発者、又は発行者（publisher）によって１つ以上のＣＤ又はＤＶＤ上に記憶されても良く、これにより、クライアントデバイス１１２上にアプリケーションをロードする責任のある者に提供される、又はクライアントデバイス１１２が取引アプリケーション１１８を取得するサーバに提供される。いくつかの例では、クライアントデバイス１１２は、（例えばインターネット又は内部ネットワークを介して）サーバから取引アプリケーション（又は取引アプリケーションの更新）を受信する。クライアントデバイス１１２は、クライアントデバイス１１２によって要求されたときに（例えば「プルディストリビューション（pull distribution）」を使用して）、および／又は、クライアントデバイス１１２によって要求されないときに（例えば「プッシュディストリビューション（push distribution）」を使用して）、取引アプリケーションを又はその更新を受信しても良い。
【００３６】
取引アプリケーション１１８は、取引注文を生成および／又は送信しても良い。取引注文は、例えば特定の価格および／又は特定の数量で取引可能オブジェクトを買う又は売る注文を含むメッセージである。いくつかの例では、取引アプリケーション１１８は、取引注文の１つ又は複数のパラメータを計算し、取引注文を自動的に送信する。いくつかの例では、取引アプリケーション１１８は、送信すべき取引注文を準備するが、実際にはユーザーからの確認がなければそれを送信しない。
【００３７】
クライアントデバイス１１２は、ユーザに取引アプリケーション１１８のテキストベースの又はグラフィカルのインタフェースを提示する表示デバイスを含んでも良い。例の表示デバイスには、コンピュータモニタ、ハンドヘルドデバイスディスプレイ、プロジェクタ、および／又はテレビが含まれる。ユーザインタフェースは、ディスプレイデバイス上に表示されても良い。ユーザインタフェースは、取引アプリケーションを使用して注文のパラメータを特定又はレビューするためにユーザによって使用されても良い。
【００３８】
クライアントデバイス１１２は、ユーザからの入力を受信するための１つ以上の入力デバイスを含んでも良い。入力デバイスの例には、キーボード、トラックボール、２つ又は３つのボタンマウス、および／又はタッチ画面が含まれる。クライアントデバイス１１２は、ユーザと対話するための他の装置を含んでも良い。例えば、情報は、スピーカを介して聴覚的にユーザに提供される、および／又はマイクロフォンを介して受信される。
【００３９】
取引アプリケーション１１８は、トレーダが１つ以上の市場と対話可能となるための１つ以上の取引画面を生成しても良い。取引画面によれば、トレーダは各種取引戦略を実装しながら、例えば、市場情報を入手および閲覧し、注文エントリパラメータを設定し、注文をエントリおよびキャンセルし、および／又は位置をモニタすることができる。例えば、取引アプリケーション１１８は、図１の取引所１２６から市場データ（ビッド価格、ビッド数量、アスク価格、アスク数量、過去の販売の価格と数量、および／又は他の市場関連情報など）を受信しても良く、受信された市場データは、クライアントデバイス１１２のユーザインタフェースとともに表示可能である。受信した情報に基づいて、取引画面は例えば、取引可能オブジェクトに関連する価格レベルの範囲およびその価格レベルに対応するビッドおよびアスクの数量を表示しても良い。情報は連続的に又は定期的に取引アプリケーション１１８に提供されても良く、これにより、取引アプリケーション１１８は現在の市場情報とともに取引画面を更新することができる。トレーダは取引画面を使用して、取引可能オブジェクトの買いおよび売りの注文を出したり、あるいは表示された情報に基づいて取引可能オブジェクトの他の取引を行うことができる。
【００４０】
Ｂ．リスク管理デバイス
取引アルゴリズムの承認には通常、ライブ環境での取引アルゴリズムの実行を設計および／又は促進するユーザ以外の者からの承認を要求することが含まれる。いくつかの例のシステムでは、このように指定された承認者はリスクマネージャと呼ばれる。例えば、リスクマネージャは、マネージャ、管理者、経験豊富なトレーダ、又は政府当局者であっても良い。いくつかの例では、リスクマネージャは、レビューするグループ又はチームを形成する、レビューを行う複数の個人および／又はデバイスを指す。
【００４１】
図１の例を続けて参照すると、システム１００は、リスク管理デバイス１１４を備えている。リスク管理デバイス１１４によれば、リスクマネージャは取引アルゴリズムをレビューおよび／又は承認することができる。リスク管理デバイス１１４は、人のリスク管理者とは独立して、取引アルゴリズムをレビューおよび／又は承認しても良い。例えば、リスク管理デバイス１１４は、リスクマネージャによる取引アルゴリズムのレビューおよび／又は承認を可能にする承認アプリケーション１１９を実行するように構成されたコンピューティングデバイスであっても良い。いくつかの例では、承認アプリケーション１１９は、リスクマネージャからの介入なしで取引アルゴリズムをレビューおよび／又は承認するように構成されている。例えば、承認アプリケーション１１９は、リスクマネージャからの入力なしで又は最小限の入力で、取引アルゴリズムを自動的にレビューおよび／又は承認しても良い。いくつかの例では、承認アプリケーション１１９は、取引アルゴリズムを分析するとともに、その分析を（例えばリスク管理デバイス１１４のユーザインタフェースを介して）リスクマネージャに提示するよう構成されても良く、そのリスクマネージャは、リスク管理デバイス１１４および／又は承認アプリケーション１１９のユーザインタフェースを使用して取引アルゴリズムを承認又は拒否することができる。これらの例は例示であって、上述した例のリスク管理デバイスは追加または代替の方法により実施されても良い。
【００４２】
リスク管理デバイス１１４は、クライアントデバイス１１２ 、サーバデバイス１２２およびゲートウェイ１２４と接続する。いくつかの例では、リスク管理デバイス１１４は、サーバデバイス１２２および／又はゲートウェイ１２４と接続する必要はなく、代わりに、クライアントデバイス１１２のみと接続しても良い。例のリスク管理デバイス１１４は、１つ以上の取引アプリケーション（例えば、Ｘ＿ＴＲＡＤＥＲ）および／又は取引アルゴリズム設計ツール（例えばＡＤＬ ）を実行するように構成されても良い。いくつかの例では、取引アプリケーションおよび／又は取引アルゴリズム設計ツールは承認アプリケーション１１９として機能するように構成されても良い。
【００４３】
図１の例のリスク管理デバイス１１４は、取引アルゴリズムの設計者および／又はユーザ（例えば、取引アルゴリズムへのアクセスが承認又は拒否されるトレーダ）に関する情報を受信するように構成されても良い。取引アルゴリズムの設計者および／又はユーザに関連する情報には例えば、トレーダの識別子および／又はトレーダの経験レベルが含まれても良い。リスク管理デバイス１１４は、取引アルゴリズムおよび／又は取引アルゴリズム定義に関する情報を受信するように構成されても良い。取引アルゴリズムおよび／又は取引アルゴリズム定義に関する情報には例えば、取引アルゴリズム、取引アルゴリズム定義、取引アルゴリズムおよび／又は取引アルゴリズム定義の一意識別子、並びに取引アルゴリズムに対応するプログラミングコードが含まれても良い。リスク管理デバイス１１４は、取引アルゴリズムに関する情報、取引アルゴリズム定義に関する情報、取引アルゴリズムの設計者および／又はユーザに関する情報、あるいはこれの任意の組み合わせに関連する情報をクライアントデバイス１１２および／又は別のデバイスから受け取っても良い。リスク管理デバイス１１４は、任意の適切な方法で情報を受信しても良い。いくつかの例では、トレーダは、トレーダおよび／又は取引アルゴリズムに関連する情報を含む例のリスク管理デバイス１１４に電子メールを送信し、リスクマネージャは、リスク管理デバイス１１４で稼働するソフトウェア（例えば承認アプリケーション１１９）又は別のデバイス上で稼働するソフトウェアを使用してその情報をダウンロードする。いくつかの例では、リスク管理デバイス１１４上のソフトウェア（例えば承認アプリケーション１１９）は、リスクマネージャからの介入なしで電子メールから情報をインポートする。いくつかの例では、トレーダはサーバ、共有のウェブサイト、又はセントラル・レポジトリに情報をアップロードし、リスクマネージャはリスク管理デバイス１１４又は任意の他の適切なデバイスに関連するソフトウェア（例えば承認アプリケーション１１９）を使用して、サーバ、共有のウェブサイト、又はレポジトリから情報を取得する。いくつかの例では、例のリスク管理デバイス１１４に関連するソフトウェア（例えば承認アプリケーション１１９）は、リスクマネージャからの介入なしで情報をインポートする。
【００４４】
リスク管理デバイス１１４は、情報を１つ又は複数のファイルとして受信しても良い。いくつかの例では、リスク管理デバイス１１４は、１つ又は複数のファイル（例えば「.algo」のファイル又は「.str」のファイル）を受信する。いくつかの例では、リスク管理デバイス１１４は、複数のファイルを含むコンテナファイルを受信する。いくつかの例では、第１のファイルは、取引アルゴリズムに関連する情報を含み、第２のファイルは、取引アルゴリズムの一意識別子を含む。第１のファイルは、第２のファイルと独立しても良い（例えば第２のファイルと異なっても良い）。いくつかの例において、情報の第１の項目は、情報の第２の項目に関連するファイルに埋め込まれている。例えば、リスク管理デバイス１１４は、以下でより詳細に開示されるように、レビューされるべき取引アルゴリズムの一意識別子が埋め込まれた取引アルゴリズムファイルを受信しても良い。
【００４５】
Ｃ．ゲートウェイ
図１に示す例では、クライアントデバイス１１２からの注文は、ゲートウェイ１２４を介して取引所１２６に送信される。クライアントデバイス１１２は、例えばローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、Ｔ１回線、Ｔ３回線、ＩＳＤＮ回線、ＰＯＰ、インターネット、又はこれらの組み合わせを用いてゲートウェイ１２６と接続しても良い。ゲートウェイ１２４は、クライアントデバイス１１２および取引所１２６と接続してこれらの間の通信を促進する。例えば、ゲートウェイ１２４はクライアントデバイス１１２からの注文を受信して、その注文を取引所１２６に送信しても良い。例えば、ゲートウェイ１２４は取引所１２６から市場データを受信して、その市場データをクライアントデバイス１１２に送信しても良い。
【００４６】
ゲートウェイ１２４は、クライアントデバイス１１２と取引所１２６との間で通信されるデータの処理を実行することができる。例えば、ゲートウェイ１２４は、クライアントデバイス１１２から受信した注文を取引所１２６によって許容されるデータ形式に処理することができる。ゲートウェイ１２４は、取引所１２６から受信した取引所特有の形式にある市場データをクライアントデバイス１１２に許容される形式に変換しても良い。ゲートウェイ１２４における処理には、クライアントデバイス１１２からの注文の追跡、取引所１２６から受信した約定確認に基づく注文ステータスの更新が含まれても良い。いくつかの例では、ゲートウェイ１２４は、取引所１２６からのデータを合体させ、合体させた市場データをクライアントデバイス１１２に提供する。いくつかの例では、ゲートウェイ１２４は、クライアントデバイス１１２と取引所１２６との間で通信されるデータの処理以外のサービスを提供する。例えば、ゲートウェイ１２４は、リスク処理を提供しても良い。
【００４７】
例の取引システム１００は、複数のゲートウェイ１２４を含んでも良い。例えば、ゲートウェイ１２４に類似する複数のゲートウェイ１２４を、クライアントデバイス１１２および／又は取引所１２６と接続させても良い。このような構成を用いることで、１つ以上のゲートウェイが故障した場合に、特にスケーラビリティ、負荷分散および冗長性を提供することができる。
【００４８】
ゲートウェイ１２４は、プロセッサとメモリを含むコンピューティングデバイスであっても良い。ゲートウェイ１２４には、例えばハンドヘルドデバイス、ラップトップコンピュータ、デスクトップコンピュータ、シングルコア若しくはマルチコアプロセッサのワークステーション、複数のプロセッサを持つサーバ、および／又は一群のコンピュータなどの、1つ以上の電子コンピューティングプラットフォームが含まれても良い。
【００４９】
ゲートウェイ１２４は、1つ又は複数のゲートウェイアプリケーションを有しても良い。ゲートウェイアプリケーションは例えば、注文処理や市場データ処理を扱うものでも良い。この処理は例えば、ユーザの嗜好に基づいても良い。
【００５０】
ゲートウェイ１２４は、例えばローカルエリアネットワーク、ワイドエリアネットワーク、仮想プライベートネットワーク、Ｔｌ回線、Ｔ３回線、 ＩＳＤＮ回線、ＰＯＰ、インターネット、又はこれらの組み合わせを介して、取引所１２６と接続することができる。
【００５１】
ゲートウェイ１２４は、例のクライアントデバイス１１２の一部であっても良い。例えば、ゲートウェイ１２４のコンポーネントは、クライアントデバイス１１２である同一のコンピューティングプラットフォームの一部であっても良い。いくつかの例では、ゲートウェイ１２４の機能の１つ以上の態様は、クライアントデバイス１１２の１つ以上のコンポーネントによって実行されても良い。いくつかの例では、例の取引システム１００は、ゲートウェイ１２４を有さなくても良い、および／又はゲートウェイ１２４が回避された例を含んでも良い。このような構成は、クライアントデバイス１１２が取引所１２６と接続するためにゲートウェイ１２４を利用する必要がないときに生じる可能性がある。クライアントデバイス１１２は例えば、取引所１２６と直接的に接続されても良い。ゲートウェイ１２４は、クライアントデバイス１１２又は取引所１２６と物理的に同じ位置に、又はクライアントデバイス１１２と取引所１２６の両方から物理的に離れた位置に配置されても良い。
【００５２】
Ｄ．サーバデバイス
図１の例を続けて参照すると、例のシステム１００はサーバデバイス１２２を有する。サーバデバイス１２２には、プロセッサとメモリを有するコンピューティングデバイスが含まれても良い。サーバデバイス１２２は、必ずしも必要ではないが、取引所１２６と併置される。例えば、サーバデバイス１２２は、物理的に取引所１２６に、取引所１２６の近くに又は取引所１２６内にあるサーバであっても良い。サーバデバイス１２２は例えば取引アルゴリズムに従って取引所１２６とともに取引注文を取り扱っても良い。注文の取り扱いには、注文の提出、注文の再引用、注文のキャンセル、ヘッジ注文の送信、未処理の注文の管理、又はこれらの任意の組み合わせが含まれても良い。未処理の注文とは、取引所のシステムに提出されているが約定されていない注文である。取引所１２６は、未処理の注文のうちの全て又は一部を反対側の注文とマッチングさせるよう試みても良い。未処理の注文の管理には例えば、クライアントデバイスへの戻り報告、市場アップデートの追跡、あるいは他の１つ以上の取引機能の実行が含まれても良い。サーバデバイスの例としては、Ｔｒａｄｉｎｇ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ｉｎｔｅｒｎａｔｉｏｎａｌ社が提供するＡｕｔｏｓｐｒｅａｄｅｒ（登録商標）戦略エンジン（ＡＳＥ）などのサーバベースのスプレッダを動作させるサーバであっても良い。ＡＳＥによれば、Ｔｒａｄｉｎｇ  Ｔｅｃｈｎｏｌｏｇｉｅｓ  Ｉｎｔｅｒｎａｔｉｏｎａｌ社が提供するＡｕｔｏｓｐｒｅａｄｅｒ（登録商標）などのクライアントベースのスプレッダの性能を高めることができる。
【００５３】
サーバデバイス１２２は特に、取引アルゴリズムに対応したプログラミングコードを実行するよう構成される。サーバデバイス１２２は、ライブ環境での取引アルゴリズムに対応するプログラミングコードを実行しても良い。ライブ環境は通常、シミュレーション環境以外の環境をいう。
【００５４】
サーバデバイス１２２は、取引アルゴリズム、取引アルゴリズムに対応するプログラミングコード、プログラミングコードおよび／又は取引アルゴリズムに対応する１つ以上の識別子、および／又はそれらの任意の組み合わせを受信するよう構成される。このような情報は、サーバデバイス１２２に記憶することができる。例えば、サーバデバイス１２２は、このような情報を記憶するための1つ又は複数のプロセッサおよび1つ又は複数のプロセッサ可読媒体を有しても良い。
【００５５】
Ｅ．取引所
例のシステム１００は、市場データを提供する取引所１２６を有する。市場データは例えば、クライアントデバイス１１２に提供されても良い。市場データは、ゲートウェイ１２４を介してクライアントデバイス１１２に提供しても良い。市場データには、特定の時間における最低の売り価格（「最良のアスク」ともいう）および最高の買い価格（「最良のビッド」ともいう）である内部市場を表すデータが含まれても良い。市場データには、市場深度が含まれても良い。市場深度は、内部市場で利用可能な数量のこと、あるいは内部市場から離れた他の価格で利用可能な数量のことであっても良い。市場データには例えば、最終取引価格（ＬＴＰ）、最終取引数量（ＬＴＱ）および注文約定情報などの情報が含まれても良い。
【００５６】
取引所１２６は、取引可能オブジェクトを売買する注文のマッチングを行う。取引可能オブジェクトは、取引のために取引所１２６によってリスト化されても良い。図１の例では、注文にはクライアントデバイス１１２から受信した注文が含まれる場合がある。注文は、ゲートウェイ１２４を介してクライアントデバイス１１２から受信されても良い。付加的に又は代替的に、注文は、取引所１２６と接続する他のデバイスから取引所１２６にて受信されても良い。例えば、取引所１２６は、マッチングされるべき注文を提供する複数のクライアントデバイス（クライアントデバイス１１２と同様であっても良い）と接続されても良い。
【００５７】
通常、取引所１２６は、プロセッサとメモリを有するコンピューティングデバイスを含むことができる。取引所１２６は、取引所エンティティによって所有、操作、制御および／又は使用されていても良い。例の取引所エンティティには、ＣＭＥグループ、ロンドン国際金融先物オプション取引所（ＬＩＦＦＥ）、インターコンチネンタル取引所（ＩＣＥ）、およびユーレックスが含まれる。取引所１２６は、例えば取引所１２６による取引のために提示される取引可能オブジェクトの売買を可能にするコンピュータ、サーバ、又は他のコンピューティングデバイスなどの電子マッチングシステムであっても良い。
【００５８】
例の取引システム１００は、複数の取引所１２６を含んでも良い。例えば、ゲートウェイ１２４は、取引所１２６と同様の複数の取引所と接続されても良い。このような構成によれば、クライアントデバイス１１２はゲートウェイ１２４を介して複数の取引所と取引することができる。
【００５９】
明確にするために、他のデバイスは、例の取引システム１００に関連して示されていない。しかしながら、図１の例のシステム１００は、ミドルウェア、ファイアウォール、ハブ、スイッチ、ルータ、取引所特有の通信機器、モデム、セキュリティマネージャ、暗号化装置等などの追加又は代替のデバイス又はコンポーネントを有しても良い。
【００６０】
ＩＩＩ．承認
いくつかの例では、取引アルゴリズムを承認するプロセスは、取引アルゴリズムおよび／又は取引アルゴリズム定義の一意識別子を用いる。一意識別子は、所定の取引アルゴリズムおよび／又は取引アルゴリズム定義に固有の識別子であっても良い。例えば、一意識別子は、所定の取引アルゴリズムおよび／又は取引アルゴリズム定義を、別の取引アルゴリズムおよび／又は取引アルゴリズム定義から区別するのに十分な情報を含んでも良い。一意識別子は、また又はその代わりに、取引アルゴリズムおよび／又は取引アルゴリズム定義の所定のバージョンに固有のものであっても良い。例えば、一意識別子は、取引アルゴリズムおよび／又は取引アルゴリズム定義のバージョンを、別の取引アルゴリズムおよび／又は取引アルゴリズム定義から区別するのに十分な情報を含んでも良い。
【００６１】
一意識別子の例としては、取引アルゴリズム、取引アルゴリズム定義および／又は取引アルゴリズムに対応するプログラミングコードに基づいて生成されたハッシュコードである。ハッシュコードは一般的にハッシュ関数に起因する。ハッシュ関数は一般的に、可変サイズのデータの量をハッシュコードに変換する、明確に定義されたプロシージャや数学的関数である。ハッシュ関数としては、ＭＤ５およびＳＨＡ−１が含まれるが、これらに限定されない。いくつかの例では、一意識別子は、ランダムの又は擬似ランダムの数字および／又は文字の列である。例の一意識別子には、汎用一意識別子（ＵＵＩＤ）とグローバル一意識別子（ＧＵＩＤ）が含まれる。例えば、ＧＵＩＤは、「.NET」フレームワークにおいて「myGuid=Guid.NewGuid();」によって生成される。他の機能、ライブラリ又はフレームワークも同様に、ＧＵＩＤを生成するために利用可能なメカニズムを提供しても良い。
【００６２】
一意識別子を１回以上および／又は１つ以上のイベントに応じて生成しても良い。例えば、取引アルゴリズム定義が記憶又は変更されるたびに一意識別子を生成しても良い。いくつかの例では、一意識別子は、取引アルゴリズム、取引アルゴリズム定義および／又は一意識別子がリスクマネージャに送信される直前に生成される。いくつかの例では、一意識別子は、取引アルゴリズム定義がリスクマネージャにアップロードされるときに生成される。
【００６３】
図１に示す例では、一意識別子は、クライアントデバイス１１２、リスク管理デバイス１１４ 、サーバデバイス１２２ 、および／又は任意の他の適切な装置によって生成されても良い。例えば、クライアントデバイス１１２のユーザが対応する取引アルゴリズム定義を修正したときに、クライアントデバイス１１２が一意識別子を生成しても良い。いくつかの例では、リスクマネージャが取引アルゴリズム定義を承認するときに、リスク管理デバイス１１４は一意識別子を生成する。いくつかの例では、サーバデバイス１２２は、承認された取引アルゴリズム、承認された取引アルゴリズム定義、および／又は承認された取引アルゴリズムに対応するプログラミングコードを受信したときに、一意識別子を生成する。いくつかの例では、政府の監査人が取引アルゴリズム定義をレビューおよび承認した後、（例えばコンピューティングデバイス上のコンピュータプログラムを使用して）一意識別子の生成を促進する。
【００６４】
一意識別子は、任意の適切なソフトウェア、ハードウェア、又はソフトウェアおよびハードウェアベースの構成によって生成されても良い。例えば、一意識別子は、例の取引アルゴリズム設計アプリケーション１１６（例えばＡＤＬ）、承認アプリケーション、取引ツール、又は他の任意の適切なソフトウェアおよび／又はハードウェアベースの構成によって生成されても良い。
【００６５】
一意識別子は、１回若しくは複数回および／又は１つ又は複数のイベントに応じて変更しても良い。例えば、取引アルゴリズム定義に関連付けられた一意識別子は、取引アルゴリズム定義が記憶、変更、アップロード、修正、承認されるたびに変更しても良い。一意識別子の変更によれば、例えば、取引アルゴリズムがリスクマネージャによって承認された後にトレーダが取引アルゴリズムを変更することを防止することができる。
【００６６】
いくつかの例では、一意識別子は、パラメータの変化に応じて変更されない。上述したように、パラメータには例えば、取引アルゴリズムのロジック式への入力が含まれても良い。例えば、取引アルゴリズムには、「市場が９４．５に達したときに１０の契約を買う」という条件文が含まれても良い。「１０」は、取引アルゴリズムパラメータであっても良い。「１０」が変更されて、取引アルゴリズムのロジックが同じままである場合、一意識別子は変更されなくても良い。
【００６７】
いくつかの例では、パラメータの１つ、いくつか又は全てが変更されるときに一意識別子は変更されても良いが、その変更は、一意識別子のうちの全て又は一部が以前に生成された一意識別子と未だにマッチング（matching）するようにしても行われても良い。例えば、最初に作成された取引アルゴリズムが、「９８７６５」の一意識別子に関連付けられても良い。後でより詳細に説明するように、一意識別子は承認されてサーバデバイスに記憶されても良い。取引アルゴリズムの開始前であって取引アルゴリズムが承認された後において、１つ以上の取引アルゴリズムパラメータは変更されるが、取引アルゴリズムのロジックは同じままである。この例では、取引アルゴリズムと新しいパラメータを記憶することにより、一意識別子が「９８７６５−Ｖ」に変化する。この例では、サーバデバイスが新たな一意識別子をサーバデバイスに記憶された一意識別子と比較するときに、一意識別子における差を考慮に入れても良い。この例では、一意識別子の最初の５文字がマッチングする。したがって、サーバデバイスは取引アルゴリズムを実行することができる。
【００６８】
取引アルゴリズムに関連付けられている一意識別子を変化させることなく取引アルゴリズムパラメータが変更可能であることにより、トレーダに対して柔軟性を提供することができる。例えば、取引アルゴリズムには、「市場が９４．５に到達したときに１０の契約を買う」という条件文が含まれても良い。ユーザは、一意識別子を変化させることなく「１０」を「１５」又は「５」に変更することができる。これにより、トレーダは取引アルゴリズムを再度承認させる必要なく、契約の数を変更することができる。
【００６９】
どのパラメータを変更可能とするかおよび／又はすでに承認されたパラメータからパラメータをどのくらい変更可能とするかについて制限を設けることができる。パラメータがどのくらい変更可能であるかの範囲又はどのパラメータが変更可能であるかの範囲は、例えばリスクマネージャが設定することができる。例えば、取引される契約数を、定義された範囲内又は許容値内で変更する（例えば、＋／−10 ）。トレーダは、この許容値内で契約数を変更することができる。この許容値外では、トレーダは取引アルゴリズムの変数を変更することができない。
【００７０】
一意識別子の上記および下記の議論は、単一のファイル内の識別子又は単一のファイルに基づく単一の識別子のことをいう。しかしながら、一意識別子は集合体であっても良く、又は複数のファイルおよび／又は複数の一意識別子に基づくものであっても良い。
【００７１】
ＩＶ．例の承認技術
図２及び図３Ａ−３Ｈは、実行可能に実装される例の機械可読命令を表すフロー図であるが、図1に示される例のシステムをおよび／又はそのシステムのうちの１つ又は複数の部分を実装することに限定されるものではない。図２及び図３Ａ−３Ｈの例のプロセスはプロセッサ、コントローラおよび／又は任意の適切なコンピューティングデバイスを用いて実行されても良い。例えば、図２及び図３Ａ−３Ｈの例のプロセスは、フラッシュメモリ、読み出し専用メモリ（ＲＯＭ）および／又はランダムアクセスメモリ（ＲＡＭ）などの有形のコンピュータ可読媒体上に記憶されたコード化された命令（例えばコンピュータ可読命令）を用いて実装されても良い。各種実施形態では、このような有形のコンピュータ可読媒体は非一過性（non-transitory）である。
【００７２】
図２及び図３Ａ−３Ｈの例のプロセスの一部又は全ては、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルロジックデバイス（ＦＰＬＤ）、ディスクリートロジック、ハードウェア、ファームウェアなどの任意の組合せを用いて実装されても良い。また、図２及び図３Ａ−３Ｈの例のプロセスの一部又は全ては、例えばファームウェア、ソフトウェア、ディスクリートロジックおよび／又はハードウェアの任意の組み合わせのように、前述の技術の任意の組み合わせとして実装されても良い。さらに、図２及び図３Ａ−３Ｈの例のプロセスは、図２及び図３Ａ−３Ｈのフロー図を参照しながら開示されているが、図２及び図３Ａ−３Ｈのプロセスを実装する他の方法が用いられても良い。例えば、ブロックの実行の注文が変更されても良く、および／又は、開示されたブロックの一部が変更、削除、再分割又は組み合わされても良い。また、図２及び図３Ａ−３Ｈの例のプロセスのいずれか又は全てを、例えば別個の処理スレッド、プロセッサ、デバイス、ディスクリートロジック、回路などによって順次および／又は並列に実行しても良い。
【００７３】
図２は、取引アルゴリズムを承認するための例の方法を示すフロー図である。ブロック２０１では、取引アルゴリズムが設計される。図１に関連して上述したように、クライアントデバイス１１２のユーザは例えば、取引アルゴリズム設計アプリケーション１１６を使用して、取引アルゴリズムおよび／又はアルゴリズム取引に対応する取引アルゴリズム定義を設計しても良い。
【００７４】
ブロック２０２において、取引アルゴリズムが、取引アルゴリズムを示すプログラミングコードを実行するように動作可能なリモートアルゴリズムサーバ（例えば図１に示すサーバデバイス１２２）上で承認される。アルゴリズムサーバは、リモートで又は直接的にリスク管理デバイス１１４に接続されても良い。いくつかの例では、承認には、（例えばリスク管理デバイス１１４上で動作するプログラムのグラフィカルユーザインタフェースを介した）ユーザによる入力の受信が含まれても良い。
【００７５】
図１に関連して上述したように、リスクマネージャはリスク管理デバイス１１４を使用して取引アルゴリズム定義を評価および／又は承認することができる。リスク管理デバイス１１４は、クライアントデバイス１１２に対するリモートデバイスであっても良い。いくつかの例では、リスクマネージャは取引アルゴリズム定義を評価することで、取引アルゴリズムの可能性又は実際のリスクを決定することができる。例えば、リスクマネージャは、取引アルゴリズム定義内の「市場が９４．５に到達したときに１０の契約を買う」という条件文を評価することで、条件文が許容リスクレベルを超えたかどうかを決定することができる。いくつかの例では、リスクマネージャは取引アルゴリズム定義を評価することで、取引アルゴリズムのロジックを評価することができる。例えば、リスクマネージャは、「市場が９４．５に到達したときに１０の契約を買う」という条件文を評価することで、条件文が、それ自体で、別の条件文とともに、所望の取引所若しくは市場にて、又はこれらの任意の組み合わせにおいて適切に機能するかどうかを決定することができる。いくつかの例では、リスクマネージャはスプレッドにおける取引可能オブジェクトをレビューすることで、例えば取引可能オブジェクトの価格変動が関連しているかどうかを決定することができる。いくつかの例では、リスクマネージャは取引アルゴリズム定義をレビューすることで、ロジックおよび取引アルゴリズムのリスクレベルを評価することができる。いくつかの例では、取引アルゴリズム定義のロジックおよびリスクレベルを決定するための基準がリスク管理デバイス１１４に記憶されることで、例えばリスクマネージャによる取引アルゴリズム定義のレビューを支援する。いくつかの例では、リスクマネージャは、取引アルゴリズム、取引アルゴリズム定義、又はクライアントデバイス１１２および／又は別のデバイスをレビューする。
【００７６】
リスクマネージャはリスク管理デバイス１１４を使用して、サーバデバイス１２２への承認の送信を容易にすることができる。いくつかの例では、承認はサーバデバイス１２２に直接送信される。例えば、リスクマネージャはリスク管理デバイス１１４の認証インタフェース（authentication interface）を使用して、取引アルゴリズム定義の一意識別子をサーバデバイス１２２に直接送信しても良い。一意識別子は、取引アルゴリズムを表すプログラミングコード、プログラミングコードの実行を承認された１つ以上のトレーダ、取引アルゴリズムのバージョン、又はそれらの任意の組み合わせと関連付けられても良い。いくつかの例では、承認が１つ又は複数の他のデバイスによってサーバデバイス１２２に送信される。例えば、リスクマネージャはリスク管理デバイス１１４の認証インタフェースを使用して、取引アルゴリズム定義のための認証の証明（certificate）をクライアントデバイスに送信しても良く、これにより証明をサーバデバイス１２２に送信する。いくつかの例では、リスクマネージャはリスク管理デバイス１１４の認証インタフェースを使用して、さらなる認証のために、取引アルゴリズム定義を第３者デバイス（例えば、取引アルゴリズムを評価する権限を与えられた政府関係者のコンピューティングデバイス）に送信しても良い。
【００７７】
ブロック２０３において、取引実行コマンドは、サーバデバイス１２２により受信される。取引実行コマンドは、認証に用いるための１つ又は複数の識別子を含む。例えば、取引実行コマンドは、プログラミングコード、一意識別子、トレーダ識別子、証明、又はこれらの任意の組み合わせが含まれても良い。
【００７８】
ブロック２０４と決定ブロック２０５では、取引実行コマンドが検証される。取引実行コマンド内の１つ以上の識別子が有効であるかどうかが決定される（決定ブロック２０５）。取引実行コマンド内の１つ以上の識別子が有効であれば、プログラミングコードが実行され（ブロック２０６）、プログラミングコードが実行されたことをユーザに通知するる（ブロック２０７）。しかしながら、取引実行コマンド内の１つ以上の識別子が有効でない場合、本方法はプログラミングコードの実行を迂回（バイパス）して、プログラミングコードが実行されなかったことをユーザに通知する（ブロック２０７）。
【００７９】
例えば、ユーザ（例えばトレーダ）はクライアントデバイス１１２を使用して、取引アルゴリズムと一意識別子を含む取引実行コマンドをサーバデバイス１２２に送信することができる。コマンドを受信するとサーバデバイス１２２はその一意識別子を、（例えばリスクマネージャによって）承認されサーバデバイス１２２に記憶された一意識別子と比較しても良い。一意識別子が少なくとも実質的にマッチングしている場合、サーバデバイス１２２は取引アルゴリズムに対応するプログラミングコードを実行して、（例えば電子メールを送信することにより）そのようにユーザに通知しても良い。それ以外の場合には、サーバデバイス１２２はプログラミングコードを実行せず、プログラミングコードが実行されなかったことをユーザに知らせても良い。
【００８０】
図３Ａ−３Ｈは、取引アルゴリズムを承認するための例の方法を示すフロー図である。なお、図３Ａ−３Ｈでは、取引所１２６、サーバデバイス１２２、クライアントデバイス１１２およびリスクマネージャ１１４は垂直の線として示されている。説明を明瞭かつ簡単にするためにゲートウェイ１２４は図示されていない。しかしながら、ゲートウェイは取引所１２６、サーバデバイス１２２、クライアントデバイス１１２およびリスクマネージャ１１４と連動して動作しても良い。
【００８１】
図示される例では、取引所１２６、サーバデバイス１２２、クライアントデバイス１１２およびリスクマネージャ１１４のそれぞれは、１つ以上のプロセスを実行することができる。なお、図３Ａ−３Ｈでは、プロセスは、その特定の実施例において、それぞれのプロセスを実行するそれぞれのデバイスに沿って整列したブロックとして示されている。矢印は、あるデバイスから別のデバイスに伝えられる情報を示している。例えば、図３Ａにおいて、矢印３１６ａは、クライアントデバイス１１２からリスク管理デバイス１１４への少なくとも取引アルゴリズムおよび一意識別子の送信を表す。ロジックのプロセスも矢印で示される。例えば、図３（ａ）において、決定ブロック３３８ａから生じる「ｙｅｓ」の矢印は、決定ブロック３３８ａからブロック３４０ａへ移行サーバデバイス１２２が移行することを示す。開示される情報フローおよび／又はロジックのプロセスの注文を変更しても良く、および／又は、開示された情報フローおよび／又はロジックのプロセスの一部を変更、削除、再分割又は組み合わせても良い。
【００８２】
Ａ．実施例１
図３Ａを参照すると、ブロック３１０ａにおいて、取引アルゴリズムはクライアントデバイス１１２上に設計されている。上述したように、クライアントデバイス１１２は、ユーザによる取引アルゴリズムおよび／又は取引アルゴリズム定義の設計を可能にするＡＤＬなどの取引アルゴリズム設計ツールを含んでも良い。
【００８３】
ブロック３１２ａにおいて、一意識別子はクライアントデバイス１１２上で生成される。上述したように、一意識別子は、取引アルゴリズムおよび取引アルゴリズム定義の１つ又は複数に対応する。図示の例では、一意識別子は（例えば取引アルゴリズム定義を記憶又は変更する）１つ又は複数のイベントに応じて生成される。
【００８４】
ブロック３１４ａにおいて、クライアントデバイス１１２は、少なくとも一意識別子と取引アルゴリズム定義をリスク管理デバイス１１４に送信する（矢印３１６ａ）。いくつかの例では、クライアントデバイス１１２もまたリスク管理デバイス１１４に取引アルゴリズムを送信する。
【００８５】
ブロック３１８ａにおいて、取引アルゴリズム定義はリスク管理デバイス１１４で承認される。上述したように、取引アルゴリズム定義は、リスク管理デバイス１１４上で単独で動作するソフトウェアあるいは、そのようなソフトウェアとリスクマネージャからのユーザによる入力の組み合わせによって動作するソフトウェアによって承認されても良い。例えば、ブロック３１８ａの一部として、リスク管理デバイス１１４は、グラフ形式又は他の形式でリスクマネージャに取引アルゴリズム定義を提示することで、リスクマネージャが取引アルゴリズム定義を分析できるようにしても良い。加えて又はその代わりに、リスク管理デバイス１１４が取引アルゴリズム定義の分析を行うとともに、その分析をリスクマネージャに提示しても良い。
【００８６】
ブロック３２０ａにおいて、リスク管理デバイス１１４は、サーバデバイス１２２に承認を伝える（矢印３２２ａ）。図示の例では、承認には、一意識別子と、取引アルゴリズムかそれを表すログラミングコードのいずれかとが含まれる。ブロック３１４ａにおいて、クライアントデバイス１１２がリスク管理デバイス１１４に取引アルゴリズムを送信した場合、リスク管理デバイス１１４は、その取引アルゴリズムおよびそれを表すプログラミングコードをサーバデバイス１２２に送信しても良い。しかしながら、ブロック３１４ａにおいて、クライアントデバイス１１２がリスク管理デバイス１１４に取引アルゴリズムを送信しない場合、リスク管理デバイス１１４は（例えばＡＤＬを使用して）クライアントデバイス１１２から受信した取引アルゴリズム定義から取引アルゴリズムを導出するとともに、その取引アルゴリズムおよびそれを表すプログラミングコードをサーバデバイス１２２に送信しても良い。
【００８７】
図示された例のブロック３２４ａでは、サーバデバイス１２２は、受信された一意識別子と、取引アルゴリズム若しくは取引アルゴリズムを表すプログラミングコードとを記憶する。この例では、サーバデバイス１２２は、記憶された一意識別子と少なくとも実質的にマッチングする一意識別子を有する（続いて受信される）任意の取引アルゴリズムに対応する任意のプログラミングコードを実行するように構成される。
【００８８】
図示の例のブロック３２６ａにおいて、サーバデバイス１２２はクライアントデバイス１１２および／又はリスク管理デバイス１１４のユーザに対して、サーバデバイス１２２が一意識別子と取引アルゴリズムを受信して記憶したことを通知する（矢印３２８ａ）。また、図示の例のブロック３２６ａにおいて、サーバデバイス１２２はクライアントデバイス１１２および／又はリスク管理デバイス１１４のユーザに対して、サーバデバイス１２２が取引アルゴリズムに対応するプログラミングコードを実行する準備ができていることを通知する（矢印３３０ａ）。
【００８９】
ブロック３３２ａにおいて、クライアントデバイス１１２のユーザは、取引アルゴリズムを起動することができる。取引アルゴリズムを起動することには、取引アルゴリズムを実行するためのサーバデバイスに取引アルゴリズムに関連する情報を送信することが含まれても良い。取引アルゴリズムを起動するときに、クライアントデバイス１１２は、サーバデバイス１２２に少なくとも一意識別子を送信する（矢印３３４ａ）。いくつかの例では、クライアントデバイス１１２は、サーバデバイス１２２にさらに取引アルゴリズムに送信する。例えば、取引アルゴリズムに関連付けられた一意識別子は、その取引アルゴリズムを含むファイルに埋め込まれても良く、クライアントデバイス１１２は、そのファイルをサーバデバイス１２２に送信しても良い。
【００９０】
ブロック３３６ａにおいて、サーバデバイス１２２は、（ブロック３３２ａにて）クライアントデバイス１１２から受信した一意識別子を、（ブロック３２４ａにて）サーバデバイス１２２によって記憶された一意識別子と比較します。ブロック３３８ａにおいて、サーバデバイス１２２は、一意識別子が少なくとも実質的にマッチングするかどうかを決定するために一意識別子を比較する。いくつかの例では、サーバデバイス１２２は、一意識別子が正確にマッチングするか否かを判定する（一意識別子がビット単位（bid-for-bid）で同一であるかどうか、など）。いくつかの例では、サーバデバイス１２２は、一意識別子が実質的にマッチングするか否かを判定する（１つの一意識別子の一部が他の一意識別子の一部とマッチングするかどうか、など）。一意識別子が少なくとも実質的にマッチングする場合、ブロック３４０ａにおいて、サーバデバイス１２２は取引アルゴリズムに対応するプログラミングコードを実行する。矢印３４２ａは、サーバデバイス１２２と取引所１２６との間で交換される情報（例えば取引情報）を表す。しかしながら、一意識別子が少なくとも実質的にマッチングしない場合には、ブロック３４４ａにおいて、サーバデバイス１２２は取引アルゴリズムに対応するプログラミングコードを実行しない。さらに、サーバデバイス１２２は、サーバデバイス１２２がプログラミングコードを実行していないことをクライアントデバイス１１２ （矢印３４６ａ）およびリスクマネージャ（矢印３４８ａ）のユーザの１つまたは複数に通知する。
【００９１】
Ｂ．実施例２
図３Ｂは、取引アルゴリズムを承認する方法の一例を示す。図３Ｂにおいて、一意識別子は、クライアントデバイス１１２ではなくむしろリスク管理デバイス１１４によって生成される。
【００９２】
図３Ｂのブロック３１０ｂにおいて、取引アルゴリズムがクライアントデバイス１１２上に設計されている。ブロック３１４ｂにおいて、クライアントデバイス１１２は、少なくとも取引アルゴリズム定義をリスク管理デバイス１１４に送信する（矢印３１６ｂ）。いくつかの例では、クライアントデバイス１１２はさらに、リスク管理デバイス１１４にも取引アルゴリズムを送信する。ブロック３１８ｂにおいて、取引アルゴリズム定義は、図３Ａに関連して上述した方法と同様の方法によりリスク管理デバイス１１４にて承認される。
【００９３】
ブロック３１９ｂにおいて、一意識別子は、リスク管理デバイス１１２上で生成される。一意識別子は例えば、リスクマネージャが取引アルゴリズム定義をレビューおよび／又は承認した後に生成されても良い。リスクマネージャは例えば、リスク管理デバイス１１２のユーザインタフェースに文字と数字の組み合わせを入力することにより、一意識別子を生成し、後で記憶することができる。いくつかの例では、リスクマネージャは、リスク管理デバイス１１４を使用して一意識別子の生成を促進して、文字と数字の擬似乱数を組み合わせた一意識別子を記憶しても良い。
【００９４】
ブロック３２０ｂにおいて、リスク管理デバイス１１４からサーバデバイス１２２に承認が送信される（矢印３２２ｂ）。上述したように、承認には、一意識別子と、取引アルゴリズム若しくは取引アルゴリズムを表すプログラミングコードのいずれかとが含まれる。図３Ｂに示される例では、リスクマネージャがリスク管理デバイス１１４からクライアントデバイス１１２に一意識別子を送信することで、取引アルゴリズムのユーザ（例えばトレーダ）によるサーバデバイス１２２上での取引アルゴリズムの実行を促進することができる（矢印３２３ｂ）。
【００９５】
図示される例のブロック３２４ｂにおいて、サーバデバイス１２２は、受信した一意識別子と、取引アルゴリズム若しくは取引アルゴリズムを表現するプログラミングコードとを記憶する。この例では、サーバデバイス１２２は、記憶された一意識別子と少なくとも実質的にマッチングする一意識別子を有して続いて受信される取引アルゴリズムに対応する任意のプログラミングを実行するように構成されている。
【００９６】
図示される例のブロック３２６ｂにおいて、サーバデバイス１２２は、サーバデバイス１２２が一意識別子および取引アルゴリズムを受信して記憶したことをクライアントデバイス１１２および／又はリスク管理デバイス１１４のユーザに通知する（矢印３２８ｂ）。また、図示される例のブロック３２６ｂにおいて、サーバデバイス１２２は、サーバデバイス１２２が取引アルゴリズムに対応するプログラミングコードを実行する準備ができていることをクライアントデバイス１１２および／又はリスク管理デバイス１１４のユーザに通知する（矢印３３０ｂ）。
【００９７】
ブロック３３２ｂにおいて、クライアントデバイス１１２のユーザは取引アルゴリズムを起動しても良い。取引アルゴリズムを起動することには、取引アルゴリズムに関連する情報を取引アルゴリズムを実行するためのサーバデバイスに送信すること、あるいは取引アルゴリズムを実行することが含まれても良い。取引アルゴリズムを起動すると、クライアントデバイス１１２は、サーバデバイス１２２に少なくとも一意識別子を送信する（矢印３３４ｂ）。いくつかの例では、クライアントデバイス１１２はさらに、サーバデバイス１２２に取引アルゴリズムを送信する。例えば、取引アルゴリズムに関連付けられた一意識別子がその取引アルゴリズムを含むファイルに埋め込まれており、クライアントデバイス１１２がサーバデバイス１２２にそのファイルを送信しても良い。
【００９８】
ブロック３３６ｂにおいて、サーバデバイス１２２は、（ブロック３３２ｂにて）クライアントデバイス１１２から受信した一意識別子を、（ブロック３２４ｂにて）サーバデバイス１２２によって記憶された一意識別子と比較する。ブロック３３８ｂにおいて、サーバデバイス１２２は、一意識別子が少なくとも実質的にマッチングするかどうかを決定するために一意識別子を比較する。一意識別子が少なくとも実質的にマッチングする場合、ブロック３４０ｂにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行する。矢印３４２ｂは、サーバデバイス１２２と取引所１２６との間で交換される情報（例えば取引情報）を表す。しかしながら、一意識別子が少なくとも実質的にマッチングしない場合には、ブロック３４４ｂにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行しない。さらに、サーバデバイス１２２は、サーバデバイス１２２がプログラミングコードを実行していないことをクライアントデバイス１１２（矢印３４６ｂ）およびリスクマネージャ（矢印３４８ｂ）のユーザの１つまたは複数に通知する。
【００９９】
Ｃ．実施例３
図３Ｃは、取引アルゴリズムを承認する方法の一例を示す。図３Ｃに示される例の方法では、一意識別子は、クライアントデバイス１１２又はリスク管理デバイス１１４ではなくむしろサーバデバイス１２２によって生成される。
【０１００】
図３Ｃのブロック３１０Ｃにおいて、取引アルゴリズムはクライアントデバイス１１２上に設計されている。ブロック３１４ｃにおいて、クライアントデバイス１１２は、少なくとも取引アルゴリズム定義をリスク管理デバイス１１４に送信する（矢印３１６ｃ）。いくつかの例では、クライアントデバイス１１２はさらに、リスク管理デバイス１１４に取引アルゴリズムを送信する。ブロック３１８ｃにおいて、取引アルゴリズム定義がリスク管理デバイス１１４にて承認される。
【０１０１】
ブロック３２０ｃにおいて、リスク管理デバイス１１４からサーバデバイス１２２に承認が送信される（矢印３２２ｃ）。図示の例では、承認には、少なくとも取引アルゴリズムおよび／又は取引アルゴリズムを表すプログラミングコードが含まれる。
【０１０２】
ブロック３２４ｃにおいて、一意識別子はサーバデバイス１２２で生成され、サーバデバイス１２２に記憶される。サーバデバイス１２２は例えば、取引アルゴリズムおよび／又は取引アルゴリズムに対応するプログラミングコードのハッシュ値を決定することにより、一意識別子を生成しても良く、ハッシュ値は一意識別子としてサーバデバイス１２２に記憶しても良い。サーバデバイス１２２は、付加的な又は代替的な方法で一意識別子を生成および記憶しても良い。
【０１０３】
ブロック３２６ｃにおいて、サーバデバイス１２２は、矢印３２８ｃで表されるように、クライアントデバイス１１２のユーザ（例えばトレーダ）に（例えば電子メールを送信することによって）通知を送信する。通知には少なくとも、サーバデバイス１２２によって生成された一意識別子が含まれる。一意識別子によりユーザは取引アルゴリズムの実行を促進することができる。
【０１０４】
ブロック３３２ｃにおいて、クライアントデバイス１１２のユーザはクライアントデバイス１１２を使用して、取引アルゴリズムを起動する。取引アルゴリズムを起動することには、サーバデバイスに取引アルゴリズムに関連する情報を送信すること、あるいは取引アルゴリズムを実行することが含まれても良い。取引アルゴリズムを起動すると、クライアントデバイス１１２はサーバデバイス１２２に少なくとも一意識別子を送信する（矢印３３４ｃ）。いくつかの例では、クライアントデバイス１１２はさらに、サーバデバイス１２２に取引アルゴリズムを送信する。例えば、取引アルゴリズムに関連付けられた一意識別子は取引アルゴリズムを含むファイルに埋め込まれても良く、クライアントデバイス１１２はサーバデバイス１２２にそのファイルを送信しても良い。
【０１０５】
ブロック３３６ｃにおいて、サーバデバイス１２２は、（ブロック３３２ｃにて）クライアントデバイス１１２から受信した一意識別子を、（ブロック３２４ｃにて）サーバデバイス１２２によって記憶された一意識別子と比較する。ブロック３３８ｃにおいて、サーバデバイス１２２は、一意識別子が少なくとも実質的にマッチングするかどうかを決定するために一意識別子を比較する。一意識別子が少なくとも実質的にマッチングする場合、ブロック３４０ｃにおいて、サーバデバイス１２２は取引アルゴリズムに対応するプログラミングコードを実行する。矢印３４２ｃは、サーバデバイス１２２と取引所１２６との間で交換される情報（例えば取引情報）を表す。しかしながら、一意識別子が少なくとも実質的にマッチングしない場合には、ブロック３４４ｃにおいて、サーバデバイス１２２は取引アルゴリズムに対応するプログラミングコードを実行しない。さらに、サーバデバイス１２２は、サーバデバイス１２２がプログラミングコードを実行していないことをクライアントデバイス１１２（矢印３４６ｃ）およびリスクマネージャ（矢印３４８ｃ）のユーザの１つ又は複数に通知する。
【０１０６】
Ｄ．実施例４
図３Ｄは、取引アルゴリズムを承認する方法の一例を示す。図３Ｄに示される方法は、証明（certificate）の使用を含む。図示の例では、証明は、リスクマネージャ以外のユーザーによって変更することができないとともに、リスクマネージャがその証明に関連する取引アルゴリズムを承認したことを示すのに十分な情報を含む。このように、証明はリスクマネージャ又は別のユーザ（例えば、取引アルゴリズムの実行を承認されたトレーダ）によってサーバデバイス１２２に送信されても良い。
【０１０７】
ブロック３１０ｄにおいて、取引アルゴリズムは、クライアントデバイス１１２上で設計される。ブロック３１４ｄにおいて、クライアントデバイス１１２は少なくとも取引アルゴリズム定義をリスク管理デバイス１１４に送信する。矢印３１６ｄは、クライアントデバイス１１２からリスク管理デバイス１１４に少なくとも取引アルゴリズム定義を送信することを表す。クライアントデバイス１１２も、必ずしも必要ではないが、取引アルゴリズムおよび／又は取引アルゴリズム定義の一意識別子および／又は取引アルゴリズム定義をリスク管理デバイス１１４に送信しても良い。ブロック３１８ｄにおいて、取引アルゴリズム定義がリスク管理デバイス１１４にて承認される。
【０１０８】
ブロック３１９ｄにおいて、証明はリスク管理デバイス１１４で生成される。図示の例では、証明には少なくとも証明情報と一意識別子が含まれる。情報は、リスク管理、取引アルゴリズムを認定したことを示す情報である。例えば、証明情報は、リスクマネージャによる取引アルゴリズム定義のレビューおよび／又は承認を識別する一意リスクマネージャ識別子のハッシュ値であっても良い。一意リスクマネージャ識別子のハッシュ値は、サーバデバイス１２２に記憶しても良い。このような記憶場所によれば、リスクマネージャ以外のユーザは、一意リスクマネージャ識別子そのものではなく、一意リスクマネージャ識別子のハッシュ値を見ることができる。また、サーバデバイス１２２はハッシュ値をサーバデバイス１２２に記憶されたハッシュ値と比較することで、検証することができる。証明情報は付加的又は代替的な形態であっても良い。
【０１０９】
ブロック３２０ｄにおいて、リスク管理デバイス１１４は、クライアントデバイス１１２に証明を送信する（矢印２２２）。ブロック３２３ｄにおいて、クライアントデバイス１１２はその証明に沿って、少なくとも取引アルゴリズムおよび／又は取引アルゴリズムに関連したプログラミングコードをサーバデバイス１２２にアップロードする（矢印３２４ｄ）。ブロック３２５ｄにおいて、サーバデバイス１２２は、その証明から証明情報と一意識別子を抽出して記憶する。ブロック３２７ｄにおいて、サーバデバイス１２２は、証明情報が証明者に対応することを確実にするために証明情報を承認する。例えば、サーバデバイス１２２は、受信した証明情報をサーバデバイス１２２に記憶された証明情報と比較して、それに基づいて、抽出された証明情が証明者に対応するかどうかを決定しても良い。
【０１１０】
決定ブロック３２９ｄにおいて、サーバデバイス１２２は、証明情報が正当な証明者に対応するかどうかを決定する。証明が正当な承認者に対応していない場合には、サーバデバイス１２２は、取引アルゴリズムと一意識別子を拒否し（ブロック３３１ｄ）、その拒否をクライアントデバイス１１２に通知する（ブロック３３３ｄおよび矢印３３５ｄ）。しかしながら、その証明情報が正当な承認者に対応する場合には、ブロック３３７ｄにおいて、サーバデバイス１２２は取引アルゴリズムおよび対応する一意識別子を記憶する。ブロック３３９ｄにおいて、サーバデバイス１２２は、一意識別子を有するコマンドの実行を待機する。図３Ｄには示していないが、サーバデバイス１２２は、いずれかの受信された実行コマンド内の一意識別子を、ブロック３２４ｄにてサーバデバイス１２２に記憶された一意識別子と比較するように構成されている。少なくとも部分的にその比較に基づいて、サーバデバイス１２２は取引アルゴリズムに対応するプログラミングコードを実行又は拒否する。
【０１１１】
Ｅ．実施例５
図３Ｅは、取引アルゴリズムを承認する方法の一例を示す。図３Ｅに示される例の方法では、クライアントデバイス１１２は、取引アルゴリズムおよび／又は取引アルゴリズムに対応するプログラミングコードをサーバデバイス１２２に送信する（ブロック３１５ｅ）。したがって、図３Ｅのブロック３２０ｅにおいて、サーバデバイス１２２は既に取引アルゴリズムおよび／又は取引アルゴリズムに対応するプログラミングコードを有するので、リスク管理デバイス１１４は一意識別子を送信する必要があるのみである。矢印３２２ｅは、リスク管理デバイス１１４からサーバデバイス１２２への少なくとも一意識別子の送信を表す。
【０１１２】
図示の例のブロック３２４ｅにおいて、サーバデバイス１２２は、受信した一意識別子を記憶する。ブロック３２６ｅにおいて、サーバデバイス１２２は、サーバデバイス１２２が一意識別子および取引アルゴリズムを受信して記憶したことをクライアントデバイス１１２および／又はリスク管理デバイス１１４のユーザに通知する（矢印３２８ｅおよび３３０ｅ）。
【０１１３】
ブロック３３２ｅにおいて、クライアントデバイス１１２のユーザは取引アルゴリズムを起動する。取引アルゴリズムの起動には、取引アルゴリズムに関連する情報をサーバデバイスに送信すること、又は取引アルゴリズムを実行することが含まれても良い。取引アルゴリズムを起動すると、クライアントデバイス１１２は、サーバデバイス１２２に少なくとも一意識別子を送信する（矢印３３４ｅ）。ブロック３３６ｅにおいて、サーバデバイス１２２は、（ブロック３３２ｅにて）クライアントデバイス１１２から受信した一意識別子を、（ブロック３２４ｅにて）サーバデバイス１２２によって記憶された一意識別子と比較する。ブロック３３８ｅにおいて、サーバデバイス１２２は、一意識別子が少なくとも実質的にマッチングするかどうかを決定するために一意識別子を比較する。一意識別子が少なくとも実質的にマッチングする場合、ブロック３４０ｅにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行する。矢印３４２ｅは、サーバデバイス１２２と取引所１２６との間で交換される情報（例えば取引情報）を表す。しかしながら、一意識別子が少なくとも実質的にマッチングしない場合には、ブロック３４４ｅにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行しない。さらに、サーバデバイス１２２は、サーバデバイス１２２がプログラミングコードを実行していないことをクライアントデバイス１１２（矢印３４６ｅ）とリスクマネージャ（矢印３４８ｅ）のユーザの１つ又は複数に通知する。
【０１１４】
Ｆ．実施例６
図３Ｆは、取引アルゴリズムを承認する方法の一例を示す。図３Ｆの方法は、トレーダ識別子の使用を含む。トレーダ識別子は、一意識別子の形態であっても良い。トレーダ識別子は例えば、特定のユーザ（例えばトレーダ）、特定のユーザによって使用されるソフトウェア、特定のユーザによって操作されるワークステーション、ユーザに関連する経験レベル、ユーザに関連する取引部門、又はこれらの組み合わせを識別しても良い。トレーダ識別子は、クライアントデバイス１１２のユーザに知られても良い。いくつかの例では、トレーダ識別子は、クライアントデバイス１１２に記憶され、クライアントデバイス１１２によって生成されたユーザインタフェースに表示される。
【０１１５】
取引アルゴリズムがクライアントデバイス１１２上に設計された後（ブロック３１０ｆ）、クライアントデバイス１１２は、リスク管理デバイス１１４に少なくともトレーダ識別子および取引アルゴリズム定義を送信する（ブロック３１４ｆと矢印３１６ｆ）。いくつかの例では、クライアントデバイス１１２はさらに、リスク管理デバイス１１４に取引アルゴリズムを送信する。
【０１１６】
ブロック３１８ｆにおいて、取引アルゴリズム定義は、リスク管理デバイス１１４で承認されている。ブロック３２０ｆにおいて、リスク管理デバイス１１４からサーバデバイス１２２に承認が送信される。承認には、取引アルゴリズムや取引アルゴリズムを表すプログラミングコードとともにトレーダ識別子が含まれる（矢印３２２ｆ）。
【０１１７】
ブロック３２４ｆにおいて、サーバデバイス１２２は、受信したトレーダ識別子を記憶する。いくつかの例では、サーバデバイス１２２は、取引アルゴリズム又は取引アルゴリズムを表すプログラミングコードを記憶する。ブロック３２６ｆにおいて、サーバデバイス１２２は、サーバデバイス１２２がトレーダ識別子および取引アルゴリズムを受信して記憶したことをクライアントデバイス１１２および／又はリスク管理デバイス１１４のユーザに通知する（矢印３２８ｆ、３３０ｆ）。
【０１１８】
ブロック３３２ｆにおいて、クライアントデバイス１１２のユーザはクライアントデバイス１１２を使用して、取引アルゴリズムを起動する。取引アルゴリズムの起動には、サーバデバイスに取引アルゴリズムに関連する情報を送信すること、又は取引アルゴリズムを実行することが含まれても良い。取引アルゴリズムを起動すると、クライアントデバイス１１２は、サーバデバイス１２２に少なくとも取引アルゴリズムとトレーダ識別子を送信する（矢印３３４ｆ）。ブロック３３６ｆにおいて、サーバデバイス１２２は、（ブロック３３２ｆにて）クライアントデバイス１１２から受信したトレーダ識別子を、（ブロック３２４ｆにて）サーバデバイス１２２によって記憶されたトレーダ識別子と比較する。ブロック３３８ｆにおいて、サーバデバイス１２２は、トレーダ識別子が少なくとも実質的にマッチングするかどうかを決定するためにトレーダ識別子を比較する。トレーダ識別子が少なくとも実質的にマッチングする場合、ブロック３４０ｆにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行する。矢印３４２ｆは、サーバデバイス１２２と取引所１２６との間で交換される情報（例えば取引情報）を表す。しかしながら、一意識別子が少なくとも実質的にマッチングしない場合には、ブロック３４４ｆにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行しない。さらに、サーバデバイス１２２は、サーバデバイス１２２がプログラミングコードを実行していないことをクライアントデバイス１１２（矢印３４６ｆ）およびリスクマネージャ（矢印３４８ｆ）のユーザの１つまたは複数に通知する。
【０１１９】
一意識別子は、トレーダ識別子と組み合わせて使用することができる。例えば、図３Ａ、３Ｂを参照して上述したように、一意識別子は、生成されてクライアントデバイス１１２のユーザに送られても良い。次にユーザは、クライアントデバイス１１２に指示して、サーバデバイス１２２に取引アルゴリズム、トレーダ識別子および一意識別子を送信しても良い。サーバデバイス１２２は、サーバデバイス１２２に記憶されている一意識別子およびトレーダ識別子のそれぞれを、受信した一意識別子およびトレーダ識別子と比較することができる。トレーダ識別子と一意識別子が少なくとも実質的にマッチングする場合、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行することができる。
【０１２０】
Ｇ．実施例７
図３Ｇは、取引アルゴリズムを承認する方法の一例を示す。図３Ｇに開示される方法は、第２の承認者（authorizer）と、第２の承認レベルを含む。図３Ｇに示すように、例の方法は、リスク管理デバイス１１４と同様の構成を有する可能性がある第３者デバイス１４０を含む。第３者デバイス１４０は例えば、取引アルゴリズムをレビューおよび／又は承認する政府の役人のコンピューティングデバイスであっても良い。いくつかの例では、第３者デバイス１４０は、取引アルゴリズムの実行の促進を許可されたユーザ組織の外部で働く取引アルゴリズムの監査人（auditor）のコンピューティングデバイスである。いくつかの例では、取引アルゴリズムの監査人は、特定の取引グループやポートフォリオのコンテキスト内で取引アルゴリズムをレビューするだけでなく、広い又は異なるコンテキスト内（例えば取引市場や取引市場のセグメント）にて取引アルゴリズムをレビューする。いくつかの例では、第３者デバイス１４０は、取引アルゴリズムの実行の促進を許可されたユーザの監督者のコンピューティングデバイスである。
【０１２１】
図３Ｇに示すように、取引アルゴリズムが設計され（ブロック３１０ｇ）、一意識別子が生成され（ブロック３１２ｇ）、取引アルゴリズム定義および一意識別子がリスク管理デバイス１１４に送信される（ブロック３１４ｇと矢印３１６ｇ）。リスク管理デバイス１１４を使用して、取引アルゴリズムが承認され（ブロック３１８ｇ）、取引アルゴリズムおよび一意識別子が第３者デバイス１４０に送信される（ブロック３２０ｇ）。第３者デバイスを使用して、取引アルゴリズムが承認され（ブロック３１９ｇ）、取引アルゴリズムおよび一意識別子がサーバデバイス１２２に送信される（ブロック３２１ｇと矢印３２２ｇ）。一意識別子は、サーバデバイス１２２に記憶される（ブロック３２４ｇ）。ブロック３３９ｇにおいて、サーバデバイス１２２は、一意識別子を持つ実行コマンドを待機する。図３Ｇには示していないが、サーバデバイス１２２は、ブロック３２４ｇにおいてサーバデバイス１２２に記憶された一意識別子と、受信した実行コマンド内の一意識別子を比較するように構成されている。その比較に少なくとも部分的に基づいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行又は拒否する。
【０１２２】
Ｈ．実施例８
図３Ｈは、取引アルゴリズムを承認する方法の一例を示す。図３Ｈに開示される例の方法では、クライアントデバイス１１２において、取引アルゴリズムが設計され（ブロック３１０ｈ）、一意識別子が生成され（ブロック３１２ｈ）、取引アルゴリズム定義および一意識別子がリスク管理デバイスに送信される（ブロック３１４ｈ、矢印３１６ｈ）。リスク管理デバイス１１４において、取引アルゴリズムが承認され（ブロック３１８ｈ）、その承認はサーバデバイス１２２に送信される（ブロック３２０ｈ、矢印３２２ｈ）。
【０１２３】
ブロック３２４ｈにおいて、サーバデバイス１２２は、受信した一意識別子を記憶する。ブロック３２６ｈにおいて、サーバデバイス１２２は、サーバデバイス１２２が一意識別子および取引アルゴリズムを受信して記憶したことをクライアントデバイス１１２および／又はリスク管理デバイス１１４のユーザに通知する（矢印３２８h、３３０ｈ）。
【０１２４】
ブロック３３２ｈにおいて、クライアントデバイス１１２のユーザは、取引アルゴリズムを起動する。取引アルゴリズムの起動には、サーバデバイスに取引アルゴリズムに関連する情報を送信すること、又は取引アルゴリズムを実行することが含まれても良い。取引アルゴリズムを起動すると、クライアントデバイス１１２は、サーバデバイス１２２に一意識別子と取引アルゴリズムを送信する（矢印３３４ｈ）。ブロック３３６ｈにおいて、サーバデバイス１２２は、（ブロック３３２ｈにて）クライアントデバイス１１２から受信した一意識別子を、（ブロック３２４ｈにて）サーバデバイス１２２によって記憶された一意識別子と比較する。ブロック３３８ｈにおいて、サーバデバイス１２２は、一意識別子が少なくとも実質的にマッチングするかどうかを決定するために一意識別子を比較する。一意識別子が少なくとも実質的にマッチングする場合、ブロック３４０ｈにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行する。矢印３４２ｈは、サーバデバイス１２２と取引所１２６との間で交換される情報（例えば取引情報）を表す。しかしながら、一意識別子が少なくとも実質的にマッチングしない場合には、ブロック３４４ｈにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行しない。さらに、サーバデバイス１２２は、サーバデバイス１２２がプログラミングコードを実行していないことをクライアントデバイス１１２（矢印３４６ｈ）およびリスクマネージャ（矢印３４８ｈ）のユーザの１つまたは複数に通知する。
【０１２５】
Ｉ．実施例９
図３Ｉは、取引アルゴリズムを承認する方法の一例を示す。図３Ｉに開示される例の方法では、クライアントデバイス１１２において、取引アルゴリズムが設計され（ブロック３１０ｉ）、取引アルゴリズム定義がリスク管理デバイスに送信される（ブロック３１４ｉ、矢印３１６ｉ）。リスク管理デバイス１１４において、取引アルゴリズムが承認される（ブロック３１８ｉ）。承認には、一意識別子の生成が含まれても良い。例えば、リスク管理デバイス１１４は、取引アルゴリズムのハッシュを生成しても良い。承認は、サーバデバイス１２２に送信される（ブロック３２０ｉ、矢印３２２ｉ）。例えば、取引アルゴリズムに関連付けられたハッシュがサーバデバイス１２２に送信される。
【０１２６】
ブロック３２４ｉにおいて、サーバデバイス１２２は一意識別子を受信する。一意識別子は、承認された一意識別子のリスト内に記憶されても良い。リストは、トレーダー特有のものであっても良く、又は承認された一意識別子の一般的なリスト（例えば、トレーダー特有でない）であっても良い。例えば、サーバデバイス１２２はハッシュを記憶することができる。ブロック３２６ｉにおいて、サーバデバイス１２２は、サーバデバイス１２２が一意識別子を受信して記憶したことをクライアントデバイス１１２および／又はリスク管理デバイス１１４のユーザに通知する（矢印３２８ｉ、３３０ｉ）。なお、通知は任意であっても良い。例えば、ユーザは、通知を受信するかどうかを選択することができる。リスク管理デバイス１１４への通知は、一意識別子がサーバデバイス１２２に記憶されたことの確認であっても良い。
【０１２７】
ブロック３３２ｉにおいて、クライアントデバイス１１２のユーザは、取引アルゴリズムを起動する。取引アルゴリズムの起動には、サーバデバイスに取引アルゴリズムに関連する情報を送信することが含まれても良い。取引アルゴリズムを起動すると、クライアントデバイス１１２は、サーバデバイス１２２に取引アルゴリズムを送信する（矢印３３４ｉ）。ブロック３３６ｉにおいて、サーバデバイス１２２は、受信した取引アルゴリズムに基づいて一意識別子を生成する。例えば、取引アルゴリズムを使用して、サーバデバイス１２２は、取引アルゴリズムのハッシュを生成することができる。ハッシュは、取引アルゴリズム、取引アルゴリズム定義又はプログラミングコードに基づいて生成しても良い。同一のハッシュ関数が、一意識別子を生成する際にリスク管理デバイス１１４に使用されても良い。また、ブロック３３６ｉにおいて、サーバデバイス１２２は、生成された一意識別子をチェックすることができる。一意識別子をチェックすることには、一意識別子を記憶することが含まれても良い。
【０１２８】
ブロック３３８ｉにおいて、サーバデバイス１２２は、一意識別子が少なくとも実質的にマッチングするかどうかを決定するために一意識別子を比較する。チェックすることには、ブロック３３６ｉで生成された一意識別子をサーバデバイス１２２に記憶されている承認済の（例えば許可された）一意識別子のリストと比較することが含まれても良い。例えば、サーバデバイス１２２は、クライアントデバイス１１２から送信されたプログラミングコードに基づいてサーバデバイス１２２によって生成されたハッシュをリスク管理デバイス１１４から送信された承認済のハッシュコードのリストと比較することができる。一意識別子が少なくとも実質的にマッチングする場合、ブロック３４０ｉにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行する。矢印３４２ｉは、サーバデバイス１２２と取引所１２６との間で交換される情報（例えば取引情報）を表す。しかしながら、一意識別子が少なくとも実質的にマッチングしない場合には、ブロック３４４ｉにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行しない。さらに、サーバデバイス１２２は、サーバデバイス１２２がプログラミングコードを実行していないことをクライアントデバイス１１２（矢印３４６ｉ）およびリスクマネージャ（矢印３４８ｉ）のユーザの１つ又は複数に通知する。
【０１２９】
Ｊ．実施例９
図３Ｊは、取引アルゴリズムを承認する方法の一例を示す。図３Ｊに示される例の方法では、リスク管理デバイス１１４は直接サーバデバイス１２２に一意識別子を送信しない。
【０１３０】
図３Ｊに開示される例の方法では、クライアントデバイス１１２において、取引アルゴリズムが設計され（ブロック３１０ｊ）、取引アルゴリズム定義がリスク管理デバイスに送信される（ブロック３１４ｊ、矢印３１６ｊ）。リスク管理デバイス１１４において、取引アルゴリズムが承認される（ブロック３１８ｊ）。承認には、一意識別子の生成が含まれても良い。例えば、リスク管理デバイス１１４は、デジタル署名又は暗号化キーを含む又は関連付けられている一意識別子を生成することができる。デジタル署名は、デジタルメッセージ又は文書の真正性を証明するための数学的スキーム（mathematical scheme）である。有効なデジタル署名は、メッセージが既知の送信者によって作成され、それが転送中に変更されなかったことを受信者に信じさせる理由を提供する。デジタル署名は、ソフトウェア配布や金融取引のため、あるいは偽造や改ざんを検出することが重要な他の場合のために使用される。デジタル署名は、取引アルゴリズムまたは取引アルゴリズム定義に直接適用することができる。暗号化キーは、受信者を検出するために使用することができる。暗号化キーは、取引アルゴリズム又は取引アルゴリズム定義に適用することができる。承認はクライアントデバイス１２２に送信される（ブロック３２０ｊ、矢印３２２ｊ）。一意識別子は、単独で送信されることに加えて、取引アルゴリズム又は取引アルゴリズム定義に含まれて送信されても良い。例えば、リスク管理デバイス１１４は、デジタル署名又は暗号化キーを含む取引アルゴリズムを送信しても良い。
【０１３１】
ブロック３３２ｊにおいて、クライアントデバイス１１２のユーザは、取引アルゴリズムを起動する。取引アルゴリズムの起動には、サーバデバイスに取引アルゴリズムに関連する情報を送信することが含まれても良い。取引アルゴリズムを起動すると、クライアントデバイス１１２は、サーバデバイス１２２に取引アルゴリズムおよび一意識別子を送信する（矢印３３４ｊ）。
【０１３２】
ブロック３３８ｊにおいて、サーバデバイス１２２は、取引アルゴリズムがリスクマネージャによって承認されたかどうかを決定する。取引アルゴリズムが承認されたかどうかの決定には、一意識別子のチェックが含まれても良い。例えば、デジタル署名は、リスクマネージャが取引アルゴリズムに署名したかどうかを決定するために検査されても良い。別の例では、サーバデバイスは、取引アルゴリズムに適切なキーが関連付けられることを確保しても良い。一意識別子が承認された場合、ブロック３４０ｊにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行する。矢印３４２ｊは、サーバデバイス１２２と取引所１２６との間で交換される情報（例えば取引情報）を表す。しかしながら、一意識別子が承認されない場合には、ブロック３４４ｉにおいて、サーバデバイス１２２は、取引アルゴリズムに対応するプログラミングコードを実行しない。さらに、サーバデバイス１２２は、サーバデバイス１２２がプログラミングコードを実行していないことをクライアントデバイス１１２（矢印３４６ｊ）とリスクマネージャ（矢印３４８ｊ）のユーザの１つ又は複数に通知する。
【０１３３】
Ｖ．例の取引アルゴリズム設計・認証ツール
図４は、図１の例の取引アルゴリズム設計アプリケーション１１６に関連して生成される、例のユーザインタフェース４００に関連するスクリーンショットである。図４に示す取引アルゴリズム設計インタフェース４００は、ＡＤＬなどのビジュアルデザインインタフェースの一例です。
【０１３４】
例の取引アルゴリズム設計インタフェース４００は、ツール部４０２と、取引アルゴリズム定義部４１０と、シミュレーション制御部４２０とを備える。ユーザ（例えばトレーダ）は取引アルゴリズム設計インタフェース４００を使用して、取引アルゴリズムを設計することができる。
【０１３５】
図４に示すように、ツール部４０２は、例えば加算ブロック４０４、減算ブロック４０６、大なりブロック４０８などの複数のブロックを含む。ツール部４０２の各ブロックは、１つ以上のアルゴリズム機能に対応する。例えば、加算ブロック４０４は、２つの入力を受信し、それらを加算して出力を生成することができる。ユーザは、ツール部４０２内のブロックを選択し、そのブロックを取引アルゴリズム定義部４１０にドラッグすることで、そのブロックの機能を取引アルゴリズムに追加することができる。例えば、図４に示す取引アルゴリズム設計ソフトウェア４００のユーザは、取引アルゴリズム定義部４０４にナンバーブロック（number block）およびレガーブロック（legger block）という２つのインストルメントブロックを追加している。ユーザは、あるブロックのポートを選択してから、別のブロックのポートを選択することで、取引アルゴリズム定義部４１０に追加されたブロック同士の関係を定義することができる。例えば、ユーザは、インストルメントブロック４１２のうちの１つの出力をレガーブロック４１４の入力に連結している。
【０１３６】
ツール部４０２からのブロックのうちの１つ又は複数を可変ブロックとして指定しても良い。例えば、取引アルゴリズム定義部４１０内のナンバーブロック４１８は、取引アルゴリズム定義部４１０の右側にある変数列４２２に示すように、可変ブロックとして指定されている。また、ツール部４０２からのブロックのうち特定のブロックにデフォルト値が指定されていても良い。例えば、取引アルゴリズム定義部４１０の右側のデフォルト値列４２４に示されるように、ナンバーブロック４１８に５のデフォルト値が与えられている。言い換えれば、図示の取引アルゴリズム定義に対応する取引アルゴリズムが実行されるときに、取引アルゴリズムが、５のデフォルト値を有する「Ｎｕｍｂ０」と呼ばれる変数を有する。
【０１３７】
図４の例の取引アルゴリズム設計インタフェース４００を用いて、ユーザは、取引アルゴリズムおよび／又は取引アルゴリズム定義を設計し、名前を付け、コンピューティングデバイス（例えばクライアントデバイス１１２）に記憶することができる。上述したように、いくつかの例では、取引アルゴリズム定義を記憶することにより、クライアントデバイス１１２に一意識別子の生成を促すことができる。
【０１３８】
図５Ａ―５Ｂは、リスク管理デバイス１１４で実行されている認証アプリケーションに関連付けられる例の取引アルゴリズム認証インタフェース５００のスクリーンショットである。例の認証インタフェース５００により、リスクマネージャは１つ以上の取引アルゴリズムをレビューおよび／又は認証することができる。例の認証インタフェース５００は、ユーザリスト部５０２と、ユーザ詳細部５０４とを有する。図５Ａの例のユーザリスト部５０２は、1つ又はそれ以上の対応する選択可能なアイコンを通じて１人以上のユーザ（例えばトレーダ）を識別する。図５Ａで強調して示されるように、リスクマネージャは例のインタフェース５００上でユーザ「ジョン」を選択している。
【０１３９】
例のユーザ詳細部５０４は、ユーザリスト部５０２で選択したユーザ（例えばジョン）に関する情報と、選択したユーザに関連する１つ以上のオプションに関する情報とを含む。例えば、インポートボタン５０６を使用して、リスクマネージャは、選択したユーザに関連付けられた取引アルゴリズム定義のリストを開くことができる。図５Ｂは、リスクマネージャがインポートボタン５０６を使用して取引アルゴリズム定義をインポートした後の図５Ａの認証インタフェース５００を示す。図５Ｂの利用可能な取引アルゴリズムボックス５０８に示すように、リスクマネージャは、「ＺＭＺＳＳ」と呼ばれる取引アルゴリズム定義のバージョン７をインポートしている。利用可能な取引アルゴリズムボックス５０８に示されるこの取引アルゴリズム定義のＧＵＩＤ（５ｄａ８ｄ−ｆｃｅｄ−４ｃ２３）は、取引アルゴリズムの一意識別子として機能する。しかしながら、一意識別子は、いくつかの実施例に示される必要はない。リスクマネージャが取引アルゴリズム定義ＺＭＺＳＳを承認した後に、対応する一意識別子を、トレーダアカウント「ジョン」に関連付けられる承認済みの一意識別子のリストにアップロードすることができる。図５Ｂに示すように、１つのみの取引アルゴリズム定義が示されている。しかしながら、利用可能な取引アルゴリズムボックス５０８は、複数の取引アルゴリズム定義を含んでも良い。その場合、リスクマネージャは、「全てのアルゴリズムを許可する」というダイアログ５１０および／又は「選択されたもののみを許可する」というダイアログ５１２を使用して、１つ又は複数の所望の取引アルゴリズムを承認することができる。リスクマネージャは記憶ボタン５１４により、所望の構成を記憶することができる。
【０１４０】
図６は、取引アルゴリズムに対応するプログラミングコードの実行を促進するためにユーザ（例えばトレーダ）が使用する例の取引アルゴリズム起動インタフェース６００のスクリーンショットを示す。起動インタフェース６００は、（図４に部分的に示すように）設計インタフェース４００の異なるモジュールであっても良い。あるいは、起動インタフェース６００は、図４の例の設計インタフェース４００から独立していても良い。
【０１４１】
図６に示すように、ユーザは、アカウント「ｊｏｈｎ１２３４」が実行の承認を受けている取引アルゴリズム定義「ＺＭＺＳＳ」をロードしている。起動ボタン６０２を用いて、ユーザは、取引アルゴリズム定義に対応したプログラミングコードの実行を試みることができる。取引アルゴリズム定義のグラフィカル表示がボックス６０４に示されている。ユーザはボックス６０４を選択することで、取引アルゴリズム定義のグラフィカル表示の拡大および／又は取引アルゴリズム定義の編集を行うことができる。しかしながら、上述したように、ユーザが取引アルゴリズム定義を編集した場合、ユーザは、リスクマネージャおよび／又は第３者が変更された取引アルゴリズム定義を承認するまでそれを実行することができない。
【０１４２】
ユーザが起動ボタン６０２を選択すると、プログラミングコードおよび一意識別子（例えば図５Ｂに示すＧＵＩＤ）がサーバデバイス１２２に送信される。しかしながら、上述したように、他の様々な情報の組み合わせをサーバデバイス１２２に送信しても良い。例えば、プログラミングコードが（例えばリスク管理デバイス１１４によって）既にサーバデバイス１２２に送信されている場合、クライアントデバイス１２２はサーバデバイス１２２に一意識別子を送信することのみ必要である。サーバデバイス１２２が、サーバデバイス１２２に送信された一意識別子と、サーバデバイス１２２に記憶された一意識別子との間に少なくとも部分的なマッチングがあると判断した場合、取引アルゴリズムが確認されて、サーバデバイス１２２はプログラミングコードを実行可能となる。図６に示すように、ステータス列６０６において、取引アルゴリズムが実行中であることにより、サーバデバイス１２２が取引アルゴリズムを確認するとともに取引アルゴリズムに対応したプログラミングコードが実行されていることが示される。
【０１４３】
図７は、ユーザ（例えばトレーダ）が１つ以上の取引アルゴリズムの動作状態を決定するために使用することができるクライアントデバイス１１２のアプリケーションウィンドウ７００のスクリーンショットを示す。アプリケーションウィンドウ７００は例えば、（図１の例に示されている）取引アルゴリズム設計アプリケーション１１６又は取引アプリケーション１１８の一部であっても良い。図示されるように、アプリケーションウィンドウ７００は、行７０４と行７０６にそれぞれある２つの取引アルゴリズムをリスト化したテーブル７０２を含む。列７０４における取引アルゴリズム「Ｏｉｌ＿Ｓｈａｒｅ」は、実行を試みているユーザがその取引アルゴリズムを実行する権限を持っていないため、サーバデバイス（例えばサーバデバイス１２２）によって拒否されている。しかしながら、行７０６における取引アルゴリズム「ＺＭＺＳＳ」は、上述したようにサーバデバイス（例えばサーバデバイス１２２）によって確認されているので、行７０６におけるその取引アルゴリズムの状態が「確認」と表示される。
【０１４４】
ＶＩ．例のコンピューティングデバイス
コンピューティングデバイスは、プロセッサおよびメモリを含んでも良い。プロセッサは、汎用プロセッサ、デジタル信号プロセッサ、特定用途向け集積回路、フィールド・プログラマブル・ゲート・アレイ、アナログ回路、デジタル回路、これらの組み合わせ、又は他の現在知られている若しくは後に開発されるプロセッサであっても良い。プロセッサは、ネットワークや分散処理に関連するような単一のデバイス又はデバイスの組み合わせであっても良い。マルチプロセッシング、マルチタスキング、パラレルプロセッシングなど、任意の様々な処理戦略を使用しても良い。処理は、リモートとは対照的なローカルであっても良い。しかしながら、処理はリモートで実行しても良い。処理は、１つのプロセッサから別のプロセッサへ移動されても良い。プロセッサは有形媒体に符号化されたロジックに応答するものであっても良く、その有形媒体は非一時的であっても良い。ロジックは、ソフトウェア、ハードウェア、集積回路、ファームウェア、マイクロコード等の一部として記憶されても良い。
【０１４５】
メモリは、コンピュータ可読記憶媒体であっても良い。コンピュータ可読記憶媒体には、これらに限定されないが、ランダムアクセスメモリ、リードオンリメモリ、プログラマブルリードオンリメモリ、電気的プログラマブルリードオンリメモリ、電気的消去可能リードオンリメモリ、フラッシュメモリ、磁気テープ若しくはディスク並びに光媒体などを含む揮発性および不揮発性の様々なタイプの記憶媒体が含まれても良い。メモリは、単一のデバイス又はデバイスの組み合わせであっても良い。メモリは、プロセッサの近傍にあっても、プロセッサとともにプログラムされても、プロセッサとネットワーク化されてもおよび／又はプロセッサから遠くにあっても良い。
【０１４６】
プロセッサは、メモリのような１つ以上の有形媒体内に符号化されたロジックを実行するように動作可能である。実行のための１つ以上の有形媒体内に符号化されたロジックは、プロセッサによって実行可能でありコンピュータ可読記憶媒体、メモリ又はこれらの組み合わせの上に提供される命令であっても良い。これらの媒体のうちの１つ以上が、このような実行可能な命令を備える、含むおよび／又は記憶していても良い。プロセッサは、ロジックがプログラムされるとともにそのロジックを実行するものであっても良い。図に示された又は本明細書に記載された機能、動作又はタスクは、コンピュータ可読記憶媒体内に又はその上に記憶された１つ以上のロジック又は命令のセットに応答して実行されても良い。機能、動作又はタスクは、命令セット、記憶媒体、プロセッサ又は処理戦略の特定のタイプとは独立するものであり、ソフトウェア、ハードウェア、集積回路、ファームウェア、マイクロコードなどによって実行されても、単独で動作しても、又はこれらの組み合わせであっても良い。
【０１４７】
図８は、開示された例を実現するために使用される例のコンピューティングデバイス８００のブロック図である。コンピューティングデバイス８００は付加的な、異なる又はより少ない数のコンポーネントを含んでも良い。
【０１４８】
コンピューティングデバイス８００は、相互接続バス８０４に連結されたプロセッサ８０２を含む。プロセッサ８０２は、任意の適切なプロセッサ、処理ユニット又はマイクロプロセッサであっても良い。コンピューティングデバイス８００は、マルチプロセッサシステムであっても良く、これにより、相互接続バス８０４に通信可能に連結された１つ以上の付加的なプロセッサを含んでも良い。
【０１４９】
図８のプロセッサ８０２は、メモリコントローラ８０８および入／出力（Ｉ／Ｏ）コントローラ８１０を含むチップセット８０６に連結されている。周知のように、チップセットは通常、Ｉ／Ｏおよびメモリ管理機能を提供するとともに、チップセット８０６に連結された１つ以上のプロセッサによってアクセス可能な又は使用される、汎用および／又は特殊用途のレジスタやタイマなどを提供する。メモリコントローラ８０８は、プロセッサ８０２（又は複数のプロセッサがある場合は複数のプロセッサ）によるシステムメモリ８１２および大容量記憶メモリ８１４へのアクセスを可能にする機能を実行する。
【０１５０】
プロセッサ８０２は、システムメモリ８１２、大容量記憶メモリ８１４、および／又はネットワークデバイス８２０などの１つ又は複数の有形媒体内に符号化されたロジックを実行するように動作可能である。本明細書で使用されるように、１つ以上の有体媒体内に符号化されたロジックは、プロセッサ８０２および／又は異なるプロセッサによって実行可能な命令を含む。ロジックは、ソフトウェア、ハードウェア、集積回路、ファームウェア、および／又はマイクロコードの一部として記憶されても良い。ロジックは、インターネットに接続された通信ネットワークを介して外部の通信デバイスから受信されても良い。プロセッサ８０２は、開示された機能、動作又はタスクを実行するためにロジックを実行することができる。
【０１５１】
システムメモリ８１２には例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリ、リードオンリメモリ（ＲＯＭ）などの揮発性および／又は不揮発性メモリの任意の所望のタイプが含まれても良い。大容量記憶メモリ８１４には、ハードディスクドライブ、光学ドライブ、テープ記憶デバイスを含む大容量記憶デバイスの任意の所望のタイプが含まれても良い。システムメモリ８１２および大容量記憶メモリ８１４は単一のメモリモジュールであっても良い。
【０１５２】
Ｉ／Ｏコントローラ８１０は、プロセッサ８０２によるＩ／Ｏバス８２２を介した周辺の入／出力（Ｉ／Ｏ）デバイス８１６、８１８およびネットワークインタフェース８２０との通信を可能にする機能を実行する。Ｉ／Ｏデバイス８１６、８１８は例えば、キーボード、ビデオディスプレイ若しくはビデオモニタ、又はマウスなどの任意の所望のタイプのＩ／Ｏデバイスであっても良い。ネットワークインタフェース８２０は例えば、コンピューティングデバイス８００による別のコンピューティングデバイスとの通信を可能にする、イーサネット（登録商標）デバイス、非同期転送モード（ＡＴＭ）デバイス、８０２．１１デバイス、ＤＳＬモデム、ケーブルモデム、セルラーモデムなどであっても良い。
【０１５３】
メモリコントローラ８０８およびＩ／Ｏコントローラ８１０は、図８においてチップセット８０６内の別々のブロックとして示されているが、これらのブロックにより実行される機能は、単一の半導体回路内に統合されても、２つ以上の別個の集積回路を用いて実装されても良い。コンピューティングデバイス８００のコンポーネントのうちの１つ又は複数がシステム・オン・チップ（例えばモバイルプラットフォーム内でのシステム・オン・チップ）として実装されても良い。
【０１５４】
例を開示したが、様々な変更が可能であり、均等物によって置換されても良い。さらに、特定の状況又は材料を適用するように多くの修正を行っても良い。したがって、開示された技術は、開示された特定の例に限定されるものではなく、添付の特許請求の範囲内に入る全ての例を含んでいる。
【図１】
2020053063.tif 000003
【図２】
2020053063.tif 000004
【図３Ａ】
2020053063.tif 000005
【図３Ｂ】
2020053063.tif 000006
【図３Ｃ】
2020053063.tif 000007
【図３Ｄ】
2020053063.tif 000008
【図３Ｅ】
2020053063.tif 000009
【図３Ｆ】
2020053063.tif 000010
【図３Ｇ】
2020053063.tif 000011
【図３Ｈ】
2020053063.tif 000012
【図３Ｉ】
2020053063.tif 000013
【図３Ｊ】
2020053063.tif 000014
【図４】
2020053063.tif 000015
【図５Ａ】
2020053063.tif 000016
【図５Ｂ】
2020053063.tif 000017
【図６】
2020053063.tif 000018
【図７】
2020053063.tif 000019
【図８】
2020053063.tif 000020
【手続補正書】
【提出日】令和1年12月12日(2019.12.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティングデバイスおよびリモートアルゴリズムサーバにより実行される方法であって、
コンピューティングデバイスからリモートアルゴリズムサーバに対して、取引アルゴリズムに関するプログラミングコードを送信するステップ、ここで、プログラミングコードは、複数のパラメータと、複数のパラメータのうちの少なくとも１つのパラメータに関するパラメータ範囲と、取引アルゴリズムに関する一意識別子とを含み、一意識別子は、取引アルゴリズムを表すとともに取引アルゴリズムの変更に応じて修正可能である、
コンピューティングデバイスからリモートアルゴリズムサーバに対して、少なくとも１つのパラメータの変更を含む修正済プログラミングコードを送信するステップ、
修正済プログラミングコードに含まれるパラメータの変更がパラメータ範囲内であり、且つ一意識別子が修正されていないことをリモートアルゴリズムサーバで決定することに応じて、リモートアルゴリズムサーバを介して、当該変更を含む修正済プログラミングコードを実行するステップ、
修正済プログラミングコードに含まれるパラメータの変更がパラメータ範囲内になく、且つ一意識別子が修正されていないことをリモートアルゴリズムサーバで決定することに応じて、リモートアルゴリズムサーバを介して、修正済プログラミングコードが実行されないように制御するステップ、
を含む、方法。
【請求項２】
さらに、
コンピューティングデバイスを介して、一意識別子を受信するステップ、
ユーザ入力の受信に応じて、コンピューティングデバイスを介して、リモートアルゴリズムサーバに対して当該一意識別子およびプログラミングコードを送信するステップ、
を含む、請求項１に記載の方法。
【請求項３】
さらに、
リスク管理デバイスによって一意識別子を生成するステップ、
ユーザ入力の受信に応じて、リスク管理デバイスからリモートアルゴリズムサーバに対して、一意識別子およびプログラミングコードを送信するステップ、
を含む、請求項１又は２に記載の方法
【請求項４】
さらに、
ユーザ入力の受信に応じて、コンピューティングデバイスを介して、プログラミングコードに関連付けるべきトレーダ識別子を送信するステップ、
を含む、請求項１から３のいずれか１つに記載の方法。
【請求項５】
さらに、
コンピューティングデバイスを介して、受信した取引アルゴリズムを記憶するステップを含む、請求項１から４のいずれか１つに記載の方法。
【請求項６】
さらに、
コンピューティングデバイスの取引アルゴリズム設計インターフェース上で、取引アルゴリズムが実行のために承認されたことを示す通知を表示する、請求項１から５のいずれか１つに記載の方法。
【請求項７】
請求項１から６のいずれか１つに記載の方法をコンピューティングデバイスおよびリモートアルゴリズムサーバに実行させるための命令を有するコンピュータ読み取り可能な記録媒体。
【請求項８】
請求項１から６のいずれか１つに記載の方法をコンピューティングデバイスおよびリモートアルゴリズムサーバに実行させるためのコンピュータプログラム。
【請求項９】
請求項１から６のいずれかに記載の方法を実行するように構成されたコンピューティングデバイスおよびリモートアルゴリズムサーバを備えるシステム。
【外国語明細書】
2020053063.tif 000021
2020053063.tif 000022
2020053063.tif 000023
2020053063.tif 000024
2020053063.tif 000025
2020053063.tif 000026
2020053063.tif 000027
2020053063.tif 000028
2020053063.tif 000029
2020053063.tif 000030
2020053063.tif 000031
2020053063.tif 000032
2020053063.tif 000033
2020053063.tif 000034
2020053063.tif 000035
2020053063.tif 000036
2020053063.tif 000037
2020053063.tif 000038
2020053063.tif 000039
2020053063.tif 000040
2020053063.tif 000041
2020053063.tif 000042
2020053063.tif 000043
2020053063.tif 000044
2020053063.tif 000045
2020053063.tif 000046
2020053063.tif 000047
2020053063.tif 000048
2020053063.tif 000049
2020053063.tif 000050
2020053063.tif 000051
2020053063.tif 000052
2020053063.tif 000053
2020053063.tif 000054
2020053063.tif 000055
2020053063.tif 000056
2020053063.tif 000057
2020053063.tif 000058
2020053063.tif 000059
2020053063.tif 000060
2020053063.tif 000061
2020053063.tif 000062
2020053063.tif 000063
2020053063.tif 000064
2020053063.tif 000065
2020053063.tif 000066
2020053063.tif 000067
2020053063.tif 000068
2020053063.tif 000069
2020053063.tif 000070
2020053063.tif 000071
2020053063.tif 000072
2020053063.tif 000073
2020053063.tif 000074
2020053063.tif 000075
2020053063.tif 000076
2020053063.tif 000077
2020053063.tif 000078
2020053063.tif 000079
2020053063.tif 000080
2020053063.tif 000081
2020053063.tif 000082
2020053063.tif 000083
2020053063.tif 000084
2020053063.tif 000085
2020053063.tif 000086
2020053063.tif 000087
2020053063.tif 000088
2020053063.tif 000089
2020053063.tif 000090