(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022166268
(43)【公開日】2022-11-01
(54)【発明の名称】調整済みメッセージング
(51)【国際特許分類】
G06Q 20/30 20120101AFI20221025BHJP
【FI】
G06Q20/30
【審査請求】有
【請求項の数】16
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022132230
(22)【出願日】2022-08-23
(62)【分割の表示】P 2021077637の分割
【原出願日】2014-07-14
(31)【優先権主張番号】61/845,613
(32)【優先日】2013-07-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】14/329,602
(32)【優先日】2014-07-11
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/022,736
(32)【優先日】2014-07-10
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502317459
【氏名又は名称】トレーディング テクノロジーズ インターナショナル インコーポレイテッド
(74)【代理人】
【識別番号】100132241
【弁理士】
【氏名又は名称】岡部 博史
(72)【発明者】
【氏名】ビーバン・ジェイコブ・ブルックフィールド
(57)【要約】 (修正有)
【課題】受信者のプリファレンスに基づいてカスタマイズされた情報更新を効率的に提供するシステム及び方法を提供する。
【解決手段】電子取引システム1800は、取引デバイス1810と、ゲートウェイ1820と、取引所1830と、を備える。取引デバイス1810は、ゲートウェイ1820と通信する。ゲートウェイ1820は、取引所1830と通信する。また、付加的な機能や性能を提供する付加的なコンポーネント、サブシステム及びエレメントと通信してもよい。取引所1830は、市場データを提供する。動作中において、取引デバイス1810は、取引所1830からゲートウェイ1820を介して市場データを受信する。ユーザは、取引デバイス1810を使用して、この市場データのモニタを行うか及び/又は1つ又は複数の取引可能オブジェクトを買う又は売るための注文メッセージを取引所1830に送信する意思決定を行う。
【選択図】
図18
【特許請求の範囲】
【請求項1】
コンピューティングデバイスによって、第1の時刻におけるデータソースの状態を表す第1のスナップショットメッセージを生成するステップ、
コンピューティングデバイスによって、第1のスナップショットメッセージを第1の受信部に送信するステップ、
コンピューティングデバイスによって、第1の時刻におけるデータソースの状態と第2の時刻におけるデータソースの状態の差を表す第1のデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第1のデルタスナップメッセージを第1の受信部に送信するステップ、
を含む、方法。
【請求項2】
さらに、
コンピューティングデバイスによって、第1の時刻におけるデータソースの状態と第3の時刻におけるデータソースの状態の差を表す第2のデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第2のデルタスナップメッセージを第1の受信部に送信するステップ、
を含む、請求項1に記載の方法。
【請求項3】
第1のデルタスナップは、1つ又は複数のアクションを含み、第2の時刻におけるデータソースの状態が反映されるように、第1のスナップショットメッセージの修正を第1の受信部に命じる、請求項1に記載の方法。
【請求項4】
第1のスナップショットメッセージは、複数のデータレベルで構成され、データレベルのそれぞれは、データソースから提供されるデータの詳細レベルを特定するものである、請求項1に記載の方法。
【請求項5】
複数のデータレベルは、重要度の高い順に配置される、請求項4に記載の方法。
【請求項6】
第1のデルタスナップは、複数のデータレベルで構成されるとともに、データレベルのそれぞれに対する1つ又は複数のアクションを含み、当該アクションは、第2の時刻におけるデータソースの状態が反映されるように、それぞれのデータレベルの修正を第1の受信部に命じるものである、請求項4に記載の方法。
【請求項7】
さらに、
第1の受信部に第1のデルタスナップメッセージを送信する前に、コンピューティングデバイスによって、第2の時刻と第3の時刻の差が、第1の受信部によって特定される更新インターバルよりも大きいかどうかを決定するステップ、
第1の時刻と第2の時刻の差が更新レートよりも大きい場合に、コンピューティングデバイスによって、第1のデルタスナップメッセージを第1の受信部に送信するステップ、
を含む、請求項1に記載の方法。
【請求項8】
データソースは、取引可能オブジェクトに関する市場であり、第1の受信部は、第1の電子取引デバイスである、請求項1に記載の方法。
【請求項9】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第1の時刻におけるデータソースの状態を表す第1のスナップショットメッセージを生成するステップ、
第1のスナップショットメッセージを第1の受信部に送信するステップ、
第1の時刻におけるデータソースの状態と第2の時刻におけるデータソースの状態の差を表す第1のデルタスナップメッセージを生成するステップ、
第1のデルタスナップメッセージを第1の受信部に送信するステップ、
コンピュータ読み取り可能媒体。
【請求項10】
命令はさらに、
第1の時刻におけるデータソースの状態と第3の時刻におけるデータソースの状態の差を表す第2のデルタスナップメッセージを生成するステップ、
第2のデルタスナップメッセージを第1の受信部に送信するステップ、
を機械に実行させる、請求項9に記載のコンピュータ読み取り可能媒体。
【請求項11】
第1のデルタスナップは、1つ又は複数のアクションを含み、第2の時刻におけるデータソースの状態が反映されるように、第1のスナップショットメッセージの修正を第1の受信部に命じる、請求項9に記載のコンピュータ読み取り可能媒体。
【請求項12】
第1のスナップショットメッセージは、複数のデータレベルで構成され、データレベルのそれぞれは、データソースからのデータの詳細レベルを特定するものである、請求項9に記載のコンピュータ読み取り可能媒体。
【請求項13】
複数のデータレベルは、重要度の高い順に配置される、請求項12に記載のコンピュータ読み取り可能媒体。
【請求項14】
第1のデルタスナップは、複数のデータレベルで構成され、第1のデルタスナップは、データレベルのそれぞれに対する1つ又は複数のアクションを含み、当該アクションは、第2の時刻におけるデータソースの状態が反映されるように、それぞれのデータレベルの修正を第1の受信部に命じるものである、請求項12に記載のコンピュータ読み取り可能媒体。
【請求項15】
命令はさらに、
第1の受信部に第1のデルタスナップメッセージが送信される前に、第2の時刻と第3の時刻の差が、第1の受信部によって特定される更新インターバルよりも大きいかどうかを決定するステップ、
第1の時刻と第2の時刻の差が更新レートよりも大きい場合に、第1のデルタスナップメッセージを第1の受信部に送信するステップ、
を機械に実行させる、請求項9に記載のコンピュータ読み取り可能媒体。
【請求項16】
データソースは、取引可能オブジェクトに関する市場であり、第1の受信部は、第1の取引デバイスである、請求項9に記載のコンピュータ読み取り可能媒体。
【請求項17】
データフォーマット部と、メッセージ送信部と、を備えるシステムであって、
データフォーマット部は、
第1の時刻におけるデータソースの状態を表す第1のスナップショットメッセージを生成するステップ、
第1の時刻におけるデータソースの状態と第2の時刻におけるデータソースの状態の差を表す第1のデルタスナップメッセージを生成するステップ、を実行し、
メッセージ送信部は、
第1のスナップショットメッセージを第1の受信部に送信するステップ、
第1のデルタスナップメッセージを第1の受信部に送信するステップ、を実行する、
システム。
【請求項18】
データフォーマット部はさらに、第1の時刻におけるデータソースの状態と第3の時刻におけるデータソースの状態の差を表す第2のデルタスナップメッセージを生成するステップを実行し、
メッセージ送信部は、第2のデルタスナップメッセージを第1の受信部に送信するステップをさらに実行する、
請求項17に記載のシステム。
【請求項19】
第1のデルタスナップは、1つ又は複数のアクションを含み、第2の時刻におけるデータソースの状態が反映されるように、第1のスナップショットメッセージの修正を第1の受信部に命じる、請求項17に記載のシステム。
【請求項20】
第1のスナップショットメッセージは、複数のデータレベルで構成され、データレベルのそれぞれは、データソースからのデータの詳細レベルを特定するものである、請求項17に記載のシステム。
【請求項21】
複数のデータレベルは、重要度の高い順に配置される、請求項20に記載のシステム。
【請求項22】
第1のデルタスナップは、複数のデータレベルで構成され、第1のデルタスナップは、データレベルのそれぞれに対する1つ又は複数のアクションを含み、当該アクションは、第2の時刻におけるデータソースの状態が反映されるように、それぞれのデータレベルの修正を第1の受信部に命じるものである、請求項20に記載のシステム。
【請求項23】
メッセージ送信部はさらに、
第1の受信部に第1のデルタスナップメッセージを送信する前に、第2の時刻と第3の時刻の差が、第1の受信部によって特定される更新インターバルよりも大きいかどうかを決定するステップ、
第1の時刻と第2の時刻の差が更新レートよりも大きい場合に、第1のデルタスナップメッセージを第1の受信部に送信するステップ、
を実行する、請求項17に記載のシステム。
【請求項24】
データソースは、取引可能オブジェクトに関する市場であり、第1の受信部は、第1の取引デバイスである、請求項17に記載のシステム。
【請求項25】
コンピューティングデバイスによって、第1の時刻におけるデータソースの状態を表す第1のスナップショットメッセージを生成するステップ、
コンピューティングデバイスによって、第1のスナップショットメッセージを第1の受信部に送信するステップ、
コンピューティングデバイスによって、第1のスナップショットメッセージを第2の受信部に送信するステップ、
コンピューティングデバイスによって、第1の時刻におけるデータソースの状態と第2の時刻におけるデータソースの状態の差を表す第1のデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第1のデルタスナップメッセージを第1の受信部に送信するステップ、
コンピューティングデバイスによって、第1の時刻におけるデータソースの状態と第3の時刻におけるデータソースの状態の差を表す第2のデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第2のデルタスナップメッセージを第1の受信部に送信するステップ、
コンピューティングデバイスによって、第2のデルタスナップメッセージを第2の受信部に送信するステップ、
を含む、方法。
【請求項26】
第1のスナップショットメッセージを第1の受信部に送信するステップはさらに、第1の受信部によって特定される第1のプリファレンスに基づいて第1のスナップショットメッセージを調整するステップを含み、
第1のデルタスナップメッセージを第1の受信部に送信するステップはさらに、第1のプリファレンスに基づいて第1のデルタスナップメッセージを調整するステップを含む、
請求項25に記載の方法。
【請求項27】
第1のスナップショットメッセージを生成するステップはさらに、第1の時刻におけるデータソースの状態を複数の第1のデータレベルで構成するステップを含み、
それぞれのデータレベルは、データソースからのデータの詳細レベルを特定するものである、請求項25に記載の方法。
【請求項28】
第1のデルタスナップメッセージを生成するステップはさらに、
第2の時刻におけるデータソースの状態を複数の第2のデータレベルで構成するステップ、
第1のデータレベルと第2のデータレベルの差を決定するステップ、
第1のデルタスナップメッセージに含める1つ又は複数のアクションを生成するステップ、ここで、当該アクションは、第1のデータレベルと第2のデータレベルの差に基づく、
を含む、請求項27に記載の方法。
【請求項29】
アクションは、第2の時刻におけるデータソースの状態が反映されるように、1つ又は複数の第1のデータレベルの修正を第1の受信部に命じるものである、請求項28に記載の方法。
【請求項30】
アクションは、追加アクション、一番上に追加アクション、相対追加アクション、値修正アクション、全修正アクション、削除アクション、変更無しアクションを含むグループから選択される、請求項28に記載の方法。
【請求項31】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第1の時刻におけるデータソースの状態を表す第1のスナップショットメッセージを生成するステップ、
第1のスナップショットメッセージを第1の受信部に送信するステップ、
第1のスナップショットメッセージを第2の受信部に送信するステップ、
第1の時刻におけるデータソースの状態と第2の時刻におけるデータソースの状態の差を表す第1のデルタスナップメッセージを生成するステップ、
第1のデルタスナップメッセージを第1の受信部に送信するステップ、
第1の時刻におけるデータソースの状態と第3の時刻におけるデータソースの状態の差を表す第2のデルタスナップメッセージを生成するステップ、
第2のデルタスナップメッセージを第1の受信部に送信するステップ、
第2のデルタスナップメッセージを第2の受信部に送信するステップ、
コンピュータ読み取り可能媒体。
【請求項32】
命令はさらに、
第1の受信部によって特定される第1のプリファレンスに基づいて第1のスナップショットメッセージを調整するステップ、
第1のプリファレンスに基づいて第1のデルタスナップメッセージを調整するステップ、
を機械に実行させる、請求項31に記載のコンピュータ読み取り可能媒体。
【請求項33】
第1のスナップショットメッセージを生成するために、命令はさらに、
第1の時刻におけるデータソースの状態を複数の第1のデータレベルで構成するステップを含み、
それぞれのデータレベルは、データソースからのデータの詳細レベルを特定するものである、請求項31に記載のコンピュータ読み取り可能媒体。
【請求項34】
命令はさらに、
第2の時刻におけるデータソースの状態を複数の第2のデータレベルで構成するステップ、
第1のデータレベルと第2のデータレベルの差を決定するステップ、
第1のデルタスナップメッセージに含める1つ又は複数のアクションを生成するステップ、ここで、当該アクションは、第1のデータレベルと第2のデータレベルの差に基づく、
を含む、請求項33に記載のコンピュータ読み取り可能媒体。
【請求項35】
アクションは、第2の時刻におけるデータソースの状態が反映されるように、1つ又は複数の第1のデータレベルの修正を第1の受信部に命じるものである、請求項34に記載のコンピュータ読み取り可能媒体。
【請求項36】
アクションは、追加アクション、一番上に追加アクション、相対追加アクション、値修正アクション、全修正アクション、削除アクション、変更無しアクションを含むグループから選択される、請求項34に記載のコンピュータ読み取り可能媒体。
【請求項37】
コンピューティングデバイスによって、第1のバッファ内にスナップショットメッセージを生成するステップ、
コンピューティングデバイスによって、第1のバッファからの第1のスナップショットメッセージを第1の受信部に送信するステップ、
コンピューティングデバイスによって、第1のバッファからの第2のスナップショットメッセージを第2の受信部に送信するステップ、
コンピューティングデバイスによって、第2のバッファ内にデルタスナップメッセージを生成するステップ、
コンピューティングデバイスによって、第2のバッファからの第1のデルタスナップメッセージを第1の受信部に送信するステップ、
コンピューティングデバイスによって、第2のバッファからの第2のデルタスナップメッセージを第2の受信部に送信するステップ、
を含む、方法。
【請求項38】
スナップショットメッセージを生成するステップはさらに、
スナップショットメッセージを第1のデータレベルと第2のデータレベルで構成するステップ、
を含む、請求項37に記載の方法。
【請求項39】
第1のデータレベルは、第2のデータレベルによって表されるデータよりも高い頻度でリクエストされたデータソースからのデータを表す、請求項38に記載の方法。
【請求項40】
第1のスナップショットメッセージは第1のデータレベルを含み、第2のスナップショットメッセージは第1および第2のデータレベルを含む、請求項38に記載の方法。
【請求項41】
第2のデルタスナップメッセージは、第2のバッファ内におけるデルタスナップメッセージの第1の部分であり、第2のデルタスナップメッセージは、第2のバッファ内におけるデルタスナップメッセージの第2の部分である、
請求項37に記載の方法。
【請求項42】
さらに、第1のバッファ内におけるスナップショットメッセージの後に第1の分割可能テーブルを生成するステップを含む、ここで、第1の分割可能テーブルは、スナップショットメッセージにおける第1の分割可能位置および第2の分割可能位置を示すものである、
請求項37に記載の方法。
【請求項43】
第1のスナップショットメッセージは、第1の分割可能位置までのスナップショットメッセージを含み、第2のスナップショットメッセージは、第2の分割可能位置までのスナップショットメッセージを含む、
請求項42に記載の方法。
【請求項44】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第1のバッファ内にスナップショットメッセージを生成するステップ、
第1のバッファからの第1のスナップショットメッセージを第1の受信部に送信するステップ、
第1のバッファからの第2のスナップショットメッセージを第2の受信部に送信するステップ、
第2のバッファ内にデルタスナップメッセージを生成するステップ、
第2のバッファからの第1のデルタスナップメッセージを第1の受信部に送信するステップ、
第2のバッファからの第2のデルタスナップメッセージを第2の受信部に送信するステップ、
コンピュータ読み取り可能媒体。
【請求項45】
スナップショットメッセージを生成するために、命令はさらに、
スナップショットメッセージを第1のデータレベルと第2のデータレベルで構成するステップ、
を機械に実行させる、請求項44に記載のコンピュータ読み取り可能媒体。
【請求項46】
第1のデータレベルは、第2のデータレベルによって表されるデータよりも高い頻度でリクエストされたデータソースからのデータを表す、請求項45に記載のコンピュータ読み取り可能媒体。
【請求項47】
第1のスナップショットメッセージは第1のデータレベルを含み、第2のスナップショットメッセージは第1および第2のデータレベルを含む、請求項45に記載のコンピュータ読み取り可能媒体。
【請求項48】
第2のデルタスナップメッセージは、第2のバッファ内におけるデルタスナップメッセージの第1の部分であり、第2のデルタスナップメッセージは、第2のバッファ内におけるデルタスナップメッセージの第2の部分である、
請求項44に記載のコンピュータ読み取り可能媒体。
【請求項49】
さらに、第1のバッファ内におけるスナップショットメッセージの後に第1の分割可能テーブルを生成するステップ、ここで、第1の分割可能テーブルは、スナップショットメッセージにおける第1の分割可能位置および第2の分割可能位置を示すものである、
を機械に実行させる、請求項44に記載のコンピュータ読み取り可能媒体。
【請求項50】
第1のスナップショットメッセージは、第1の分割可能位置までのスナップショットメッセージを含み、第2のスナップショットメッセージは、第2の分割可能位置までのスナップショットメッセージを含む、
請求項49に記載の方法。
【請求項51】
コンピューティングデバイスによって、第1の時刻に取得されたデータの第1のセットを表す第1のスナップショットを生成するステップ、
コンピューティングデバイスによって、第1のスナップショットの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
コンピューティングデバイスによって、データの第1のセットと第2のセットの差を表す第1のデルタスナップを生成するステップ、ここで、当該第2のセットは、第1の時刻の後の第2の時刻に生成されたデータを表す、
コンピューティングデバイスによって、第1のデルタスナップの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
を含む、方法。
【請求項52】
コンピューティングデバイスによって、データの第1のセットと第3のセットの差を表す第2のデルタスナップを生成するステップ、ここで、データの第3のセットは、第1の時刻および第2の時刻の後の第3の時刻に生成されたデータを表す、
コンピューティングデバイスによって、第2のデルタスナップの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
請求項51に記載の方法。
【請求項53】
データの第1のセットは、電子取引所から第1の時刻に受信した第1の市場更新を表し、データの第2のセットは、電子取引所から第2の時刻に受信した第2の市場更新を表し、第1および第2の市場更新は、ある取引可能オブジェクトに関するものである、
請求項51に記載の方法。
【請求項54】
コンピューティングデバイスによって、第1のスナップショットの第2のバージョンを第2の加入デバイスに送信するステップ、ここで、当該第2のバージョンは、第2の加入デバイスの第2のプリファレンスに基づいて調整される、
コンピューティングデバイスによって、第1のデルタスナップの第2のバージョンを第2の加入デバイスに送信するステップ、ここで、当該第2のバージョンは、第2の加入デバイスの第2のプリファレンスに基づいて調整される、
請求項51に記載の方法。
【請求項55】
データの第1のセットを表す第1のスナップショットを生成するステップは、データの第1のセットを第1のスナップショットの分割可能部分を表す複数のデータレベルに分割するステップを含む、
請求項51に記載の方法。
【請求項56】
複数のデータレベルは、重要度レベルで並べられる、
請求項55に記載の方法。
【請求項57】
第1の加入デバイスの第1のプリファレンスによって定義される第1のスナップショットにおけるデータの第1のセットの1つ又は複数のセグメントを送信することによって、第1のスナップショットが調整される、
請求項55に記載の方法。
【請求項58】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第1の時刻に取得されたデータの第1のセットを表す第1のスナップショットを生成するステップ、
第1のスナップショットの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
データの第1のセットと第2のセットの差を表す第1のデルタスナップを生成するステップ、ここで、当該第2のセットは、第1の時刻の後の第2の時刻に生成されたデータを表す、
第1のデルタスナップの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
コンピュータ読み取り可能媒体。
【請求項59】
命令はさらに、
データの第1のセットと第3のセットの差を表す第2のデルタスナップを生成するステップ、ここで、データの第3のセットは、第1の時刻および第2の時刻の後の第3の時刻に生成されたデータを表す、
第2のデルタスナップの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
を機械に実行させる、請求項58に記載のコンピュータ読み取り可能媒体。
【請求項60】
データの第1のセットは、電子取引所から第1の時刻に受信した第1の市場更新を表し、データの第2のセットは、電子取引所から第2の時刻に受信した第2の市場更新を表し、第1および第2の市場更新は、ある取引可能オブジェクトに関するものである、
請求項58に記載のコンピュータ読み取り可能媒体。
【請求項61】
第1のスナップショットの第2のバージョンを第2の加入デバイスに送信するステップ、ここで、当該第2のバージョンは、第2の加入デバイスの第2のプリファレンスに基づいて調整される、
第1のデルタスナップの第2のバージョンを第2の加入デバイスに送信するステップ、ここで、当該第2のバージョンは、第2の加入デバイスの第2のプリファレンスに基づいて調整される、
請求項58に記載のコンピュータ読み取り可能媒体。
【請求項62】
データの第1のセットを表す第1のスナップショットを生成するために、命令はさらに、
データの第1のセットを第1のスナップショットの分割可能部分を表す複数のデータレベルに分割するステップ、
を機械に実行させる、請求項58に記載のコンピュータ読み取り可能媒体。
【請求項63】
複数のデータレベルは、重要度レベルで並べられる、
請求項62に記載のコンピュータ読み取り可能媒体。
【請求項64】
第1の加入デバイスの第1のプリファレンスによって定義される第1のスナップショットにおけるデータの第1のセットの1つ又は複数のセグメントを送信することによって、第1のスナップショットが調整される、
請求項62に記載のコンピュータ読み取り可能媒体。
【請求項65】
コンピューティングデバイスによって、第1の時刻におけるデータセットの第1の状態を表す第1のスナップショットを生成するステップ、
第1のスナップショットを第1の加入デバイスおよび第2の加入デバイスに送信するステップ、
複数のデルタスナップを生成するステップ、ここで、デルタスナップのそれぞれは、第1の時刻におけるデータセットの第1の状態と、第1の時刻の次の時間におけるデータセットの次の状態との差を表す、
複数のデルタスナップにおける第1の部分を、第1の合成レートに対応する第1の加入デバイスに送信するステップ、
複数のデルタスナップにおける第2の部分を、第2の合成レートに対応する第2の加入デバイスに送信するステップ、
を含む、方法。
【請求項66】
第1の合成レートは、第2の合成レートと異なる、
請求項65に記載の方法。
【請求項67】
さらに、
複数のデルタスナップにおける第1の部分を第1の加入デバイスに送信する前に、当該第1の部分を第1の加入デバイスによって定義される第1のプリファレンスに基づいて調整するステップ、
複数のデルタスナップにおける第2の部分を第2の加入デバイスに送信する前に、当該第2の部分を第2の加入デバイスによって定義される第2のプリファレンスに基づいて調整するステップ、
を含む、請求項65に記載の方法。
【請求項68】
第1のプリファレンスは、第2のプリファレンスと異なる、
請求項67に記載の方法。
【請求項69】
複数のデルタスナップにおける第1の部分を調整するステップはさらに、第1の加入デバイスの第1のプリファレンスに基づいて第1の部分の切り捨てを行うステップを含み、
複数のデルタスナップにおける第2の部分を調整するステップはさらに、第2の加入デバイスの第2のプリファレンスに基づいて第2の部分の切り捨てを行うステップを含む、
請求項67に記載の方法。
【請求項70】
さらに、
第3の加入デバイスとの接続が検知されたときに、第1のスナップショットの第3の部分を第3の加入デバイスに送信するステップ、
複数のデルタスナップのうちの直近の1つにおける第3の部分を第3の加入デバイスに送信するステップ、
を含む、請求項65に記載の方法。
【請求項71】
実行可能な命令を有するコンピュータ読み取り可能媒体であって、
命令は少なくとも以下のステップを機械に実行させる、
第1の時刻に取得されたデータの第1のセットを表す第1のスナップショットを生成するステップ、
第1のスナップショットの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
データの第1のセットと第2のセットの差を表す第1のデルタスナップを生成するステップ、ここで、当該第2のセットは、第1の時刻の後の第2の時刻に生成されたデータを表す、
第1のデルタスナップの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
コンピュータ読み取り可能媒体。
【請求項72】
データの第1のセットと第3のセットの差を表す第2のデルタスナップを生成するステップ、ここで、データの第3のセットは、第1の時刻および第2の時刻の後の第3の時刻に生成されたデータを表す、
第2のデルタスナップの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
請求項71に記載のコンピュータ読み取り可能媒体。
【請求項73】
データの第1のセットは、電子取引所から第1の時刻に受信した第1の市場更新を表し、データの第2のセットは、電子取引所から第2の時刻に受信した第2の市場更新を表し、第1および第2の市場更新は、ある取引可能オブジェクトに関するものである、
請求項71に記載のコンピュータ読み取り可能媒体。
【請求項74】
第1のスナップショットの第2のバージョンを第2の加入デバイスに送信するステップ、ここで、当該第2のバージョンは、第2の加入デバイスの第2のプリファレンスに基づいて調整される、
第1のデルタスナップの第2のバージョンを第2の加入デバイスに送信するステップ、ここで、当該第2のバージョンは、第2の加入デバイスの第2のプリファレンスに基づいて調整される、
請求項71に記載のコンピュータ読み取り可能媒体。
【請求項75】
データの第1のセットを表す第1のスナップショットを生成するステップは、データの第1のセットを、第1のセットの分割可能部分を表す複数のデータレベルに分割するステップを含む、
請求項71に記載のコンピュータ読み取り可能媒体。
【請求項76】
第1の加入デバイスの第1のプリファレンスによって定義される第1のスナップショットにおけるデータの第1のセットの1つ又は複数のセグメントを送信することによって、第1のスナップショットが調整される、
請求項75に記載のコンピュータ読み取り可能媒体。
【請求項77】
命令はさらに、
データの第1のセットと第3のセットの差を表す第2のデルタスナップを生成するステップ、ここで、第3のセットは、第1の時刻および第2の時刻の後の第3の時刻に生成されたデータを表す、
第3の時刻と第2の時刻の差が第1の加入デバイスの第1の合成レートを満たすかどうかを決定するステップ、
第3の時刻と第2の時刻の差が第1の合成レートを満たす場合、第2のデルタスナップの第1のバージョンを第1の加入デバイスに送信するステップ、ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される、
を機械に実行させる、請求項71に記載のコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【関連出願の参照】
【0001】
本願は、2014年7月11日に出願された「調整済みメッセ-ジング」と題する米国特許出願第14/329602号、2013年7月12日に出願された「電子取引環境における複数のデバイス間で市場データを動的に配信するシステムおよび方法」と題する米国仮特許出願第61/845613号、および、2014年7月10日に出願された「電子取引環境における複数のデバイス間で市場データを動的に配信するシステムおよび方法」と題する米国仮特許出願第62/022736号に基づく優先権を主張するものである。これらの米国出願のそれぞれの内容全体が参照により全ての目的のために本明細書に組み込まれる。
【技術分野】
【0002】
本開示は、調整済みメッセージングに関する。
【背景技術】
【0003】
電子デバイスは、例えばデバイスの状態に関する最新情報を提供するために、データメッセージを交換する。システムによっては、複数の受信者は、データソースからの更新を受信することを希望する。これらの更新を特定の種類のネットワークにて提供するために、ブロードキャスト又はマルチキャストメッセージングなどの技術がデータソースによって使用される。その他のシステムでは、例えばネットワークの制約、通信プリファレンス(例えば、配信の信頼度、順番)および/又はセキュリティ要件などにより、受信者は、ポイント・ツー・ポイント接続を使用してデータソースと通信する。
【0004】
一部の受信者は、同じデータソースから異なる速度で更新を受信することを希望する。受信者への望まれないメッセージの送信を最小限に抑えながら、異なる速度で更新を提供することにより、ブロードキャスト又はマルチキャストメッセージング技術の有用性が制限され、また、異なる更新レートのプリファレンスを有する受信者の数が増加するため、ポイント・ツー・ポイント接続がより効果的になる。しかしながら、ポイント・ツー・ポイント接続では、受信者ごとにメッセージを生成する必要がある。さらに、一部の受信者は、データの異なるレベル又は階層をそれらの更新にて受信することを希望する。データの異なるレベル又は階層に基づいてメッセージをカスタマイズする場合、それぞれのレベル又は階層ごとに異なるメッセージを生成する必要がある。異なるプリファレンスを持つ受信者の数が成長するにつれて、異なる更新レート並びに異なるレベル又は階層を収容することが、特にデータを受信する際のレイテンシーの増加が許容できない時間制約の強い情報について面倒なものとなる。
【0005】
以下の図面を参照しながら実施形態が開示される。
【図面の簡単な説明】
【0006】
【
図1】ある実施形態を実施可能な例示的なコンピューティングデバイスのブロック図
【
図2】調整済みメッセージを1つ又は複数の受信デバイスに送信するための例示的なシステムのブロック図
【
図3】スナップショットおよびデルタスナップを1つ又は複数の受信デバイスに送信するために使用される例示的なサブスクリプション制御モジュールのブロック図
【
図4】スナップショット技術を使用する例を示すデータフロー図
【
図5】デルタ技術を使用する例を示すデータフロー図
【
図6】デルタスナップ技術を使用する例を示すデータフロー図
【
図8A】スナップショットおよびデルタスナップに基づく調整済みメッセージの例を示すブロック図
【
図8B】スナップショットおよびデルタスナップに基づく調整済みメッセージの例を示すブロック図
【
図9】調整済みデルタスナップ技術を使用する例を示すデータフロー図
【
図10】バッファ内の調整可能メッセージの例を示す図
【
図11】受信デバイスとサブスクリプション制御モジュールの間の接続を示すデータフロー図
【
図12】
図2、
図3のサブスクリプション制御モジュールを実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【
図13】
図3のデータフォーマット部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【
図14】
図3のデータフォーマット部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【
図15】
図3のメッセージ送信部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【
図16】
図3のメッセージ送信部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【
図17】
図3のメッセージ送信部を実装するために実行可能な機械読み取り可能命令を表す方法のフロー図
【
図18】実施形態を採用可能な電子取引システムのブロック図
【
図19】実施形態を採用可能な電子取引システムのブロック図
【
図20A】市場深度における多くの数のデータレベルで市場データを提供するために、スナップショットおよびデルタスナップのための調整可能メッセージの例を示す図
【
図20B】市場深度における多くの数のデータレベルで市場データを提供するために、スナップショットおよびデルタスナップのための調整可能メッセージの例を示す図
【発明を実施するための形態】
【0007】
ある実施形態は、例を示すものとして提供される図面と併せて読むことでより良く理解される。しかしながら、実施形態は、添付の図面に示した配置や手段に限定されないものと理解すべきである。
【0008】
開示される実施形態は一般的に、ネットワーク通信用のメッセージを調整するための技術に関する。より具体的には、開示の実施形態は、受信者のプリファレンス(preference)に基づいてカスタマイズされた情報更新を効率的に提供するシステムおよび方法に関する。受信者は例えば、システムが更新を生成する頻度よりも低い頻度で更新を受信することを希望する、および/又は、更新内に異なるデータレベルを受信することを希望する。実施形態によっては、更新メッセージが提供されるレートの調整をより効率的に行うことを可能にするデルタスナップ技術が提供される。実施形態によっては、更新メッセージの内容の調整をより効率的に行うことを可能にする分割技術が提供される。実施形態によっては、更新メッセージのレートおよびコンテンツの調整をより効率的に行うことを可能にする分割技術と組み合わせてデルタスナップ技術が提供される。
【0009】
データメッセージは、様々な状況で受信者に情報を提供する。一部の受信者は、他の受信者とは異なるレートで更新情報を受信することを希望する。第1の受信者は例えば、1ミリ秒ごとに1回を上限とするレートのような第1のレート(更新が生成されるレートであってもよい)。第2の受信者は、帯域幅の制約のため、1秒ごとに2回のような低いレートでの更新の送信を希望する。第3の受信者は、帯域幅の制約のため、古いデータを受信したり接続リセットによる大きなギャップを経験することのない、どのようなレートでも可能な更新を確実に受信することを望む。さらに、システムによっては、データソースは、更新内にデータの異なるレベル又は階層を提供する。例えば、それぞれの連続的なレベルは、前のレベルで提供される詳細を超えるより詳細な又は追加の情報を示す値を含む。一部の受信者は、データソースからの更新内に異なる数のデータレベルを受信することを希望する。例えば、第1の受信者は、最初の5つのレベルの値に関する更新を受信することを希望する。第2の受信者は、最初の2つのレベルの値の更新を受信することを希望する。異なるレベルのデータを提供するために、メッセージは受信者のプリファレンスに応じて調整される。現在のシステムでは、異なる更新レートおよび/又は異なる数のデータレベルなどの受信者のプリファレンスを収容するために、それぞれの受信者用のソースデータに基づいて固有のメッセージをフォーマットする必要がある。
【0010】
発明の詳細な説明は、コンポーネントの中でも特にハードウェア上で実行されるソフトウェアを含む実施形態を開示するが、これらの実施形態は単なる例示であり、限定的なものとして解釈すべきではない。例えば、これらのハードウェアおよびソフトウェアのコンポーネントのいずれか又は全てが、ハードウェアにて独占的に、ソフトウェアにて独占的に、ファームウェアにて独占的に、又は、ハードウェア、ソフトウェアおよび/又はファームウェアの任意の組み合わせにて、実装されてもよい。したがって、実施形態は他の方法により実施実現される。
【0011】
I.実施形態に関する簡単な説明
ネットワーク通信用のメッセージを調整するための例示的な方法、システムおよびコンピュータ読み取り可能媒体が開示される。メッセージを調整するための例示的な方法は、コンピューティングデバイスによって、第1の時点でのデータソースの状態を表す第1のスナップショットメッセージ(snapshot message)を生成するステップを含む。第1のスナップショットメッセージは第1の受信者に送信される。例示的な方法は、コンピューティングデバイスによって、第1の時刻におけるデータソースの状態と第2の時刻におけるデータソースの状態の差を表す第1のデルタスナップメッセージ(deltasnap message)を生成するステップと、コンピューティングデバイスによって、第1のデルタスナップメッセージを第1の受信部に送信するステップとを含む。
【0012】
例示的な方法は、コンピューティングデバイスによって、第1の時刻に取得されたデータの第1のセットを表す第1のスナップショットを生成するステップを含む。方法はさらに、コンピューティングデバイスによって、第1のスナップショットの第1のバージョンを第1の加入デバイスに送信するステップを含む。ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される。方法はさらに、コンピューティングデバイスによって、データの第1のセットと第2のセットの差を表す第1のデルタスナップを生成するステップを含む。ここで、当該第2のセットは、第1の時刻の後の第2の時刻に生成されたデータを表す。方法はさらに、コンピューティングデバイスによって、第1のデルタスナップの第1のバージョンを第1の加入デバイスに送信するステップを含む。ここで、当該第1のバージョンは、第1の加入デバイスの第1のプリファレンスに基づいて調整される。
【0013】
例示的なコンピュータ読み取り可能記憶媒体は、実行されたときに少なくとも以下のステップを機械に実行させる命令を有する。具体的には、第1の時点でのデータソースの状態を表す第1のスナップショットメッセージを生成するステップが含まれる。さらに、第1のスナップショットメッセージを第1の受信者に送信するステップが含まれる。さらに、第1の時刻におけるデータソースの状態と第2の時刻におけるデータソースの状態の差を表す第1のデルタスナップメッセージを生成するステップが含まれる。さらに、第1のデルタスナップメッセージを第1の受信部に送信するステップが含まれる。
【0014】
II.コンピューティングデバイスの例示
図1は、ある実施形態を実施するために使用可能な例示的なコンピューティングデバイス100のブロック図を示す。コンピューティングデバイス100は、通信ネットワーク110と、プロセッサ112と、メモリ114と、インタフェース116と、入力デバイス118と、出力デバイス120とを含む。コンピューティングデバイス100は、付加的な、異なる、又はより少ない数のコンポーネントを含んでもよい。例えば、複数の通信ネットワーク、複数のプロセッサ、複数のメモリ、複数のインタフェース、複数の入力デバイス、複数の出力デバイス、又はそれらの任意の組み合わせが設けられてもよい。別の例として、コンピューティングデバイス100は、入力デバイス118や出力デバイス120を含まなくてもよい。
【0015】
図1に示すように、コンピューティングデバイス100は、通信ネットワーク110に接続されたプロセッサ112を含む。通信ネットワーク110は、コンピューティングデバイス100内のコンポーネント間におけるデータ通信のために、通信バス、チャネル、電気的若しくは光学的なネットワーク、回路、スイッチ、ファブリック、又はその他の機構を含んでもよい。通信ネットワーク110は、コンピューティングデバイス100内における任意のコンポーネント間での通信を可能に接続され、データを転送する。
【0016】
プロセッサ112は、任意の適切なプロセッサ、処理ユニット、又はマイクロプロセッサであってもよい。プロセッサ112には例えば、1つ又は複数の一般的なプロセッサ、デジタルシグナルプロセッサ、特定用途向け集積回路、フィールドプログラマブルゲートアレイ、アナログ回路、デジタル回路、プログラムされたプロセッサ、および/又はそれらの組合せが含まれる。プロセッサ112は、ネットワーク又は分散処理に関連付けられた1つ又は複数のデバイスのような、単一のデバイス又はデバイスの組み合わせであってもよい。任意の処理ストラテジーとしては、多重プロセッシング、マルチタスキング、並列処理および/又はリモート処理を使用してもよい。処理は、ローカル又はリモートであってもよく、また―1つのプロセッサから別のプロセッサへ移動してもよい。ある実施形態では、コンピューティングデバイス100は、マルチプロセッサシステムであり、通信ネットワーク110に通信可能に接続される1つ又は複数の付加的なプロセッサを含み得る。
【0017】
プロセッサ112は、メモリ114のような1つ又は複数の有形媒体内にエンコードされたロジックやその他のコンピュータ読み取り可能な命令を実行するように動作可能であってもよい。本明細書で使用される1つ又は複数の有体媒体にエンコードされたロジックには、プロセッサ112又は異なるプロセッサによって実行可能な命令が含まれる。ロジックは、例えば、ソフトウェア、ハードウェア、集積回路、ファームウェア、および/又はマイクロコードの一部として記憶されてもよい。ロジックは、ネットワーク140などの通信ネットワークを介して外部の通信デバイスから受信されてもよい。プロセッサ112は、図面に示された又は本明細書に記載された機能、動作、又はタスクを実現するためのロジックを実行してもよい。
【0018】
メモリ114は、例えば、コンピュータ読み取り可能記憶媒体のような1つ又は複数の有形媒体であってもよい。コンピュータ読み取り可能な記憶媒体には、例えば、ランダムアクセスメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的プログラマブル読み出し専用メモリ、電気的消去可能読み出し専用メモリ、フラッシュメモリ、これらの任意の組み合わせ、又はその他の任意の有形データ記憶デバイスを含む、様々なタイプの揮発性および不揮発性の記憶媒体が含まれてもよい。本明細書で使用する非一時的又は有形のコンピュータ読み取り可能媒体は、任意のタイプのコンピュータ読み取り可能媒体を含むが伝搬信号を除外するものとして明示的に定義される。メモリ114には、ハードディスクドライブ、光学メディア、磁気テープ又はディスクなどを含む、任意の所望のタイプの大容量記憶デバイスが含まれる。
【0019】
メモリ114は、1つ又は複数のメモリデバイスを含んでもよい。例えば、メモリ114には、ローカルメモリ、大容量記憶デバイス、揮発性メモリ、不揮発性メモリ、又はそれらの組み合わせが含まれてもよい。メモリ114は、遠隔プロセッサ112に対して、その近傍に配置され、その一部として設けられ、それにプログラムされ、それとネットワーク化され、および/又はそれからリモートな場所にあってもよく、これより、メモリ114に記憶されたデータは、例えば、プロセッサ112によって読みだされて処理されてもよい。メモリ114は、プロセッサ112によって実行可能な命令を記憶してもよい。命令は、本明細書に記載された又は図面に示された動作又は機能の1つ又は複数を実現するように実行されてもよい。
【0020】
メモリ114は、開示の技術を実行するためのアプリケーション130を記憶してもよい。ある実施形態では、アプリケーション130は、異なる場所からアクセス可能である、又は異なる場所に記憶される。プロセッサ112は、メモリ114に記憶されたアプリケーション130にアクセスして、アプリケーション130に含まれるコンピュータ読み取り可能命令を実行してもよい。
【0021】
ある実施形態では、インストールプロセスの間に、アプリケーションが、入力デバイス118および/又はネットワーク140からメモリ114に転送されてもよい。コンピューティングデバイス100が取引アプリケーション130を実行中、又は実行する準備をしているとき、プロセッサ112は、通信ネットワーク130を介してメモリ114から命令を読みだしてもよい。
【0022】
III.サブスクリプション制御モジュール
図2は、例示的なシステム200を示し、システム200は、サブスクリプション制御モジュール201と、データソース202とを備える。図示の例では、データソース202は、サブスクリプション制御モジュール201にデータを提供する。サブスクリプション制御モジュール201は例えば、データソース202によって送信されるとき、(例えば、設定された時間間隔で)定期的に、更新が検出されたとき、および/又はトリガイベントに応じて、データを受信および/又は他の方法で取得する。サブスクリプション制御モジュール201は、データを調整済みメッセージに変換する。調整済みメッセージ204は、通信リンク(例えば、ポイント・ツー・ポイント接続、ユニキャストチャネル、伝送制御プロトコル(TCP)ソケット、WebSocket接続など)を介して、1つ又は複数の受信デバイス206(例えば、スマートフォン、タブレット、サーバ、パーソナルコンピュータなど)に送信される。受信デバイスに関して1つ又は複数のプリファレンスが定義される(例えば、更新レート、データレベルの数など)。場合によっては、電子デバイス206は、プリファレンスをサブスクリプション制御モジュール201に伝える。例えば、100ミリ秒ごとに更新を生成するサブスクリプション制御モジュール201に対して、受信部206は、500ミリ秒ごとの頻繁でのみ更新を受信するプリファレンスを設定する。場合によっては、電子デバイス206に関するプリファレンスは、サブスクリプション制御モジュール201によって決定される。サブスクリプション制御モジュール201は例えば、電子デバイス206との接続処理時のレイテンシーに基づいて、更新レートを1秒に対して3データレベルのみと設定する。場合によっては、サブスクリプション制御モジュール201は、ネットワークリンクのスループットに基づいて、更新レートを調整する。例えば、以前の更新がまだ送信されている場合に、サブスクリプション制御モジュール201は、次の更新の送信を遅らせる。このような例では、より最近の更新が遅延中に発生した場合、サブスクリプション制御モジュール201は、当該より最近の更新を代わりに送信することができる。サブスクリプション制御モジュール201は、ネットワーク(例えば、インターネット、広域ネットワークなど)を通じて、有線および/又は無線接続(例えば、ケーブル/DSL/衛星接続、セルラー接続、ロング・ターム・エボリューション(LTE)接続など)を介して受信部206と通信する。
【0023】
図3は、
図2のサブスクリプション制御モジュール201の一例を示す図である。サブスクリプション制御モジュール201は、データソース202からデータを受信および/又は他の方法で取得し、1つ又は複数の電子デバイス206に調整済みメッセージ(例えば、
図2に示す調整済みメッセージ204)を送信する。図示の例におけるサブスクリプション制御モジュール201は、データソース受信部302と、データフォーマット部304と、一次バッファ306と、二次バッファ308と、メッセージ送信部310とを備える。データソース受信部302は、データソース202からデータを受信および/又は他の方法で取得する。
【0024】
図3に示す例では、データソース202は動的に更新する(例えば、新しい情報が入手可能になったときに応じて非同期的に、あるいは、一定の休止期間に応じて定期的に更新する)。データを受信および処理して受信部204にメッセージを送信するために、データソース受信部302は、データソース202の状態を(例えば、
図3のデータソース受信部302を介して)離散的な時点で取得する。場合によっては、データソース受信部302は、データソース202がその状態の変更について更新を提供するときに、データソース202の状態を取得する。場合によっては、データソース受信部302は、設定された時間間隔でデータソース202の状態を取得する(例えば、データソースが頻繁に更新する場合)。例えば、データソース受信部302は、データソース202の状態を100ミリ秒ごとに取得する。場合によっては、データソース受信部302は、更新を検出することに応じて、データソース202の状態を取得する(例えば、データソースが散発的に更新する場合)。データソース受信部302は、基本更新レートを確立することができる。基本更新レートは、サブスクリプション制御モジュール201が受信デバイス206に利用可能な更新を生成する速度である。場合によっては、基本更新レートは定期的に確立される(例えば、データソース202が頻繁に更新するとき等)。場合によっては、基本更新レートは、不規則な間隔で確立される(例えば、データソース202の更新頻度が低いとき等)。場合によっては、データソース202の変化の頻度に応じて基本更新レートが変化する。
【0025】
図3の例では、データフォーマット部304は、データソース202からのデータをフォーマットする(例えば、整理、翻訳、標準化、体系化する)。データフォーマット部304は、一次バッファ306および/又は二次バッファ308に記憶されるように、データを調整済みメッセージに変換する。一次バッファ306および/又は二次バッファ308は、データフォーマット部304によってフォーマットされたデータを記憶する。場合によっては、一次バッファ306および/又は二次バッファ308に記憶されたデータは、データフォーマット部304によってアクセスされ、データソース202からの後続のデータと比較される。一次バッファ306は例えば、調整可能なスナップショットメッセージを含む。データフォーマット部304は次に、以下でより詳細に説明する技術を利用して、データ受信部302からのデータを一次バッファ306における調整可能なスナップショットメッセージと比較することで、二次バッファ308における調整可能なデルタスナップメッセージを生成することができる。
【0026】
図示の例では、メッセージ送信部310は、1つ又は複数の受信側電子デバイス206との接続を管理する。メッセージ送信部310は、一次バッファ306および/又は二次バッファ308に記憶されている調整可能メッセージを使用して、データを調整済みメッセージ204として受信側電子デバイス206に送信する。場合によっては、メッセージ送信部310は、受信側電子デバイス206からプリファレンスを受信する。プリファレンスは例えば、更新レートに関するプリファレンスおよび/又はデータのレベルの数に関するプリファレンスを含む。そのような例では、メッセージ送信部310は、一次バッファ306および/又は二次バッファ308に記憶されている調整可能メッセージを、受信したプリファレンスに基づいて、受信部側電子デバイス206に送信するために調整する。調整可能メッセージを調整するために、メッセージ送信部310は、受信したプリファレンスに基づいて、調整可能メッセージのうちのどの部分を送信するか(例えば、バイト数で)を計算する。例えば、調整可能メッセージが100バイトである場合、メッセージ送信部310は、受信したプリファレンスに基づいて、最初の56バイトのみを受信側電子デバイス206に送信することを計算する。この方法では、メッセージを受信部ごとに再変換する必要がない。データフォーマット部304は、調整可能メッセージを省略した形で送信可能とするようにフォーマットする。場合によっては、受信側電子デバイス206との接続が混雑していることをメッセージ送信部310が検知したときに、メッセージ送信部310は、デバイス206へのメッセージを遅延又は廃棄する。
【0027】
IV.データソース更新の通信に関する現在の技術
データソースの状態の変化を更新するための現在の技術には、スナップショットおよびデルタが含まれ、これらに関する例示的な技術が以下にさらに記載されている。
【0028】
A.スナップショット技術
スナップショットは、特定の時点におけるデータソースの状態を表すものである。スナップショットは、受信デバイスに更新を通信するために使用することができる。例示的なスナップショット技術は、それぞれの更新に関するスナップショットメッセージを1つ又は複数の受信デバイスに送信することによって、データソースの状態を通信する。スナップショット技術は、特定の時点におけるデータソース全体の状態を受信部に送信するため、時刻tにおけるデータソースの状態は、以下の式(1)に示すように判断することができる。
式(1):現在の状態(t)=St
Stは、時刻tの直近に送信されたスナップショットを表す。
【0029】
図4は、離散的時間(例えば、時刻T
0、時刻T
1、時刻T
2)におけるデータソースに関する第1の状態400a、第2の状態400bおよび第3の状態400cを含むスナップショット技術の使用例を示すデータフローである。
図4の例では、第1の状態400aは、時刻T
0で取得される。第1の状態400aは、スナップショットS
0にフォーマットされ、バッファに記憶される。スナップショットS
0は、受信部に送信される。時刻T
1において、第2の状態400bが取得され、スナップショットS
1にフォーマットされ、受信部に送信される。時刻T
2において、データ400cが取得され、スナップショットS
2にフォーマットされ、受信部に送信される。
【0030】
スナップショットは、データソースの現在の状態を知るために必要なデータの全てを含むため、スナップショットを逃すことによる影響を(例えば、次の更新を待つことなどによって)低減又は最小化することができる。しかしながら、データソースからのデータはインターバルとインターバルの間ではわずかに変化するのみであるため、スナップショットを送信することは、貴重なデータ帯域幅を不必要に使用することとなりうる。その結果、頻繁に更新するデータソースからメッセージを受信する受信部、あるいは、多くの異なるデータソースからメッセージを受信する受信部、および/又は、限られた帯域幅を有する受信部(例えば、セルラーネットワーク接続を使用するモバイルデバイスなど)において、メッセージの混雑および/又は損失が生じうる。
【0031】
B.デルタ技術
デルタは、データソースの直近の状態と現在の状態の差を表す。直近の状態は、介在する全てのデルタによって調整された最新のスナップショットである。デルタ技術は、受信デバイスに更新を通信するために、1つ又は複数のデルタで区切られた定期的なスナップショットを使用する。例示的なデルタ技術は、スナップショットを受信部へ周期的に(例えば、設定された時間間隔で)および/又は非周期的に(例えば、特定の数の更新の後に)送信することによって、データソースの状態を通信する。スナップショット同士の間では、デルタは、定期的および/又は非周期的に受信部に送信される。したがって、時刻tにおけるデータソースの現在の状態は、以下の式(2)に示すように決定することができる。
式(2):現在の状態(t)=SR+Δ1+Δ2+・・・+Δt
SRは、時刻tの直近に送信されたスナップショットであり、Δ1-Δtは、直近のスナップショット以降に送信されたデルタである。
【0032】
図5は、時刻T
0、時刻T
1、時刻T
2におけるデータソース202に関する第1の状態400a、第2の状態400bおよび第3の状態400cを含む例示的なデルタ技術を示すデータフローである。
図5の例では、時刻T
0において、第1の状態400aが取得され、スナップショットS
0にフォーマットされ、受信部に送信される。時刻T
1において、第2の状態400bが取得され、第1の状態400aと比較される。デルタΔ
1は、例えば「差」に基づいて生成される。デルタΔ
1はその後、受信部に送信される。時刻T
2において、第3の状態400cが取得され、第2の状態400bと比較され、その差に基づいてデルタΔ
2を生成する。デルタΔ
2はその後、受信部に送信される。
図4に示す例では、デルタ(例えば、デルタΔ
1およびデルタΔ
2)は、命令500(例えば、追加(A)、変更(C)、削除(R))と、どの部分のデータを変更するかを示すインデックス502と、データをどのように変更するかを示す値504(例えば、値1、値2)とを含む。例えば、デルタは、インデックス1における値(値1、値2)を(0、-50)によって変更(C)することを受信部に命令する。場合によっては、スナップショット(例えば、スナップショットS
0)は、スナップショットとしてフラグが設定され、命令500を含まない。
【0033】
デルタ技術によれば、スナップショット同士の間において、更新のうち変更された部分のみが受信部に通信されるため、帯域幅の使用量を削減することができる。しかしながら、デルタは更新のうちの一部のみを通信するものであるため、(例えば、混雑、接続中断、メッセージ損失などにより)デルタがタイムリーに受信されない場合には、受信部のデータはエラーになる、あるいは、新たなスナップショットが送信されるまで受信部は待機する必要がある。これにより、それまでに受信した後続の全てのデルタを無視する必要がある。
【0034】
V.デルタスナップ技術およびメッセージレート調整
ある実施形態は、本明細書でデルタスナップ技術と呼ぶ技術を使用して、データソース(例えば、データソース202)の状態を1つ又は複数の受信部のデバイス(例えば、1つ又は複数の電子デバイス206)へ通信する改善された方法を提供する。デルタスナップ技術は、スナップショット技術と比較して帯域幅をより効果的に利用することができ、また、デルタ技術と比較してデータ損失に対するより高い復元力をもたらす。さらに、デルタスナップ技術によれば、スナップショット技術のみを使用して送信される冗長データを低減するとともに、デルタ技術に必要な複雑性およびストレージを低減しながら、効率的なメッセージレートおよび調整レベルの数を提供する。
【0035】
デルタスナップは、受信部(例えば、
図2、
図3の受信部206)に送信されるデータソースの現在の状態と、更新に含まれる予定のデータソース(例えば、
図2、
図3のデータソース202)の現在の状態との間の差を表す。例示的なデルタスナップ技術は、スナップショットを受信部へ定期的におよび/又は非定期的に(例えば、設定された時間間隔で、特定の数の更新の後、トリガ条件により)送信することにより、データソースの状態を通信する。スナップショットは、全ての受信部に送信される。さらに、最新のスナップショットは、新しい接続に応じて送信される。好ましくは、スナップショットは、スナップショットの信頼性の高い配信を保証する通信技術を使用して送信される。スナップショットは例えば、上述したスナップショット技術と同様の方法で生成することができる。また、スナップショット同士の間で、一般的に1つ又は複数のデルタスナップが生成される。デルタスナップは、基本更新レートで生成することができる(例えば、データソース202が
図2、
図3のサブスクリプション制御モジュール201へ更新を提供するレートで、あるいは、受信部206による少なくとも共通の複数の更新レートプリファレンスにより)。場合によっては、受信デバイス206は、基本更新レートよりも少ない頻度の更新レートでデルタスナップの受信を予約することができる。例えば、サブスクリプション制御モジュール201の基本更新レートが25ミリ秒である場合、受信部は、100ミリ秒間隔でデルタスナップを受信することを希望する場合がある(すなわち、基本更新レート又はそれよりも早いレートで更新が生じる場合に、4番目のデルタスナップごとに)。デルタスナップは、直近に送信されたスナップショットに関して実行される一方で、直近に送信されたデルタによって表される状態に関しては実行されない点を除いて、上述したデルタ技術におけるデルタと同様の方法で生成することができる。デルタスナップが生成されているとき、前のスナップショットからの変化の範囲によって、デルタスナップの表示はそれと同等のスナップショットよりも大きくなる可能性がある。このような状況では、実施形態によっては、デルタスナップの生成は破棄され、代わりに、新たなスナップショットが生成されて送信される。デルタスナップ技術を用いて、時刻tにおけるデータソース202の状態を、以下の式(3)に示すように決定することができる。
式(3):現在の状態(t)=S
R+ΔS
t
S
Rは、時間tの直近に送信されたスナップショットであり、ΔS
tは時刻tの直近に送信されたデルタスナップである。
【0036】
図6は、時刻T
0、時刻T
1、時刻T
2におけるデータソース202に関する第1の状態400a、第2の状態400bおよび第3の状態400cを含む例示的なデルタ技術を示すデータフローである。
図6に示す例では、第1の状態400aは、データソース受信部302(
図3)によって取得され、データフォーマット部306(
図3)によってスナップショットS
0にフォーマットされ、一次バッファ306(
図3)に配置される。メッセージ送信部310(
図3)は、スナップショットS
0を受信部206(
図3)に送信する。時刻T
1において、第2の状態400bは、データソース受信部302によって取得される。図示の例では、データフォーマット部304は、一次バッファ306内のスナップショットS
0を第2の状態400bと比較する。その差に基づいて、データフォーマット部304は、デルタスナップΔS
1を生成する。デルタスナップΔS
1は、二次バッファ310(
図3)に記憶される。デルタスナップΔS
1はその後、それぞれの受信部の更新レートのプリファレンスに応じて、メッセージ送信部310によって受信部206に送信される。
【0037】
図6の例に示すように、時刻T
2において、データソース受信部302は、データソース202の第3の状態400cを取得する。データフォーマット部304は、一次バッファ306に記憶されているスナップショットS
0を第3の状態400cと比較し、その差に基づいてデルタスナップΔS
2を生成する。デルタスナップΔS
2は、二次バッファ308に記憶される。デルタスナップΔS
2はその後、それぞれの受信部の更新レートのプリファレンスに応じて、メッセージ送信部310によって受信部206に送信される。
図6に示す例では、デルタスナップΔS
1、ΔS
2は、アクション600、データのどの部分に影響するかを示す602、および/又は、値604(例えば、値1、値2)の変更とともに生成される。
【0038】
デルタスナップは、最後のスナップショット以降に発生したデータソース202におけるデータへの1つ又は複数の更新に関する情報を含むため、デルタスナップ技術によれば、多数の基本更新レートにおける異なる更新レートプリファレンスを有する受信部206に更新を送信することが可能となる。例えば、スナップショットが2分ごとに生成され、デルタスナップがスナップショット間において毎秒生成される場合、第1の受信部は、デルタスナップを5秒ごとに受信するプリファレンスを設定し、第2の受信部は、デルタスナップを10秒ごとに受信するプリファレンスを設定してもよい。各スナップショットは、全ての受信部に送信される。デルタスナップが生成されると、設定されたプリファレンスに応じて、受信部に送信される。このように、それぞれの受信部には全てのデルタスナップは送信されない。デルタスナップは直近に送信されたスナップショットに関する変更を表すため、特定の受信部は、データソースの最新の更新を決定するために、全てのデルタスナップを受信する必要はない。
【0039】
デルタスナップは、データソース202の更新に関する情報の一部を含むため、デルタスナップ技術はスナップショット技術に比べて一般的に、必要とする帯域幅が少ない。
【0040】
場合によっては、デルタスナップ技術は、デルタ技術よりも多くの帯域幅を必要とする。例えば、データソース202が変更され、その後しばらく変更されない場合、デルタスナップは繰り返しの変更を含むが、デルタは変更を含まない。しかしながら、デルタスナップ技術を使用すれば、デルタ技術と比較して、データソースに加入(subscribe)することおよび失われたメッセージから回復することは管理が容易である。例えば、受信デバイス206はデルタスナップ技術を用いて、スナップショット間のサブスクリプション制御モジュール201に接続し、また、最新のスナップショットおよび最新のデルタスナップを受信することによって更新状態となる。
【0041】
VI.分割可能データレベル技術およびデータレベルの調整(すなわち組立て)
ある実施形態は、本明細書で分割可能データレベル技術と称される技術を使用して、データソース202の状態を1つ又は複数の受信デバイス206に通信する改善された通信技術を提供する。分割可能データレベルとは、更新内のデータをレベル又は階層に編成することをいう。
図7A、7Bに示す例では、データソース(
図2、
図3のデータソース202)から受信したデータ700が、データフォーマット部(
図3のデータフォーマット部304)によってデータレベル702a―702fに編成されている。場合によっては、データレベル702a―702fは、重要度の高い順に編成される(例えば、最も要求されるデータを含む第1のレベル702a、2番目に要求されるデータを含む第2のレベル702b)。付加的又は代替的に、それぞれのデータレベル702a―702fは、情報の詳細レベルを表す。データレベル702a―702fは、データレベル702から下に分割可能である(例えば、第1のデータレベル702aが
図2の調整済みメッセージ(組立済みメッセージ)204を生成するために使用される、第1のデータレベル702aおよび第2のデータレベル602bが調整済みメッセージ204を生成するために使用される)。すなわち、複数のレベルによるサブセットのみを受信するプリファレンスを受信部が指定できるように、データがレベル又は階層に応じて並べられる(第1のデータレベル702aから好ましいデータレベルまで)。例えば、一部の受信部は最初の3つのデータレベル(レベル702a―702c)を受信することを希望し、他の受信部は最初のデータレベル(702a)のみを受信することを希望する。また、一部の受信部は、5番目のデータレベル(レベル702e)のみに含まれる情報を希望する一方で、分割可能データレベル技術に基づけば、それらの所望のデータレベルの上のレベル(この場合、レベル702a―702d)まで受信することを希望する。
【0042】
図7Bに示す例では、データレベル702は、複数のデータ値704を含む。図示の例では、データレベル702内のデータ値704は分割することができない。例えば、受信デバイス206が第1のデータレベル702aに含まれる特定の値704を要求する場合、受信デバイス206は、第1のデータレベル702a全体を受け入れる。例えば、データソース202は、Twitterのハッシュタグおよびそれらの公開レートを提供する。データフォーマット部は、それらの公開レートの高い順にTwitterのハッシュタグを編成する。最も上のハッシュタグは、第1のデータレベル(例えば、データレベル702a)であり、2番目から10番目のハッシュタグは、第2のデータレベル(例えば、データレベル702b)であり、11番目から100番目のハッシュタグは、第3のデータレベル(例えば、データレベル702c)である。受信部が最も上のハッシュタグのみを受信することを希望する場合は、第1のデータレベルを受信する。受信部が上から10番目のハッシュタグを受信することを希望する場合は、第1のデータレベルと第2のデータレベルを受信する。
【0043】
分割可能データレベルによれば、データを受信部ごとにメッセージバッファに再整理することなく、複数の受信デバイス(例えば、
図3の受信部206)へのメッセージのカスタマイズを可能にする調整可能メッセージ(組立可能メッセージ)の生成が促進される。例えば、サブスクリプション制御モジュール(例えば、
図2、
図3のサブスクリプション制御モジュール201)に、数千の受信デバイス(例えば、
図2、
図3の受信デバイス206)が接続される場合、受信デバイス206のそれぞれに対して異なる重要度レベルおよび/又は詳細レベルを有する更新メッセージが送信されてもよく、送信部はそれぞれの受信部のために全ての更新メッセージに関するデータを整理する必要はない。
【0044】
図8A、8Bは、メッセージフォーマット部(例えば、
図3のメッセージフォーマット部304)によって生成されるとともにバッファ(例えば、
図3の一次バッファ306および/又は二次バッファ308)に配置される調整可能メッセージの例を示す。バッファ内に配置された後、メッセージ送信部(例えば、
図3のメッセージ送信部310)は、受信デバイス(例えば、
図2、3の受信デバイス206)に調整済みメッセージ204として送信するために、バッファ内の調整可能メッセージの一部を使用する。
図8Aは、スナップショット(
図4、5、6のスナップショットS
0)に基づく調整可能メッセージ800の一例を示す。
図8Aに示す例では、調整可能メッセージ800は、1つ又は複数のヘッダ802と、1つ又は複数のデータレベル804とを含む。ヘッダ802は、調整可能メッセージ800をメッセージ送信部(例えば、
図3のメッセージ送信部310)によって処理するために必要なブックキーピング情報(例えば、データレベル804の数、精度レベル、タイムスタンプなど)と、送信情報とを含む。
【0045】
データレベル804は、1つ又は複数の分割ポイント806で分割可能な分割可能データレベル(例えば、
図7A、7Bのデータレベル702)を含む。場合によっては、それぞれのデータレベル804は、複数の値808を含む。場合によっては、調整済みメッセージ204を送信するために、メッセージ送信部310は、分割ポイント806のうちの最大1つまで、バッファからの調整可能メッセージ800の一部を使用する。
図8Aに示す例では、それぞれのデータレベル804は、詳細および/又は重要度のレベルに対応するデータソース202の状態(例えば、
図4、5、6の第1の状態400a)を表す複数の値808を含む。例えば、調整可能メッセージ800が8個のデータレベル804を含む場合、受信デバイス206は、プリファレンスを設定することにより、最初の2つのデータレベル804のみを受信することを選択する。このような例では、メッセージ送信部310は、受信デバイス206に送信するために、ヘッダ802と、最初の2つのデータレベル804を使用する。実施形態によっては、それぞれの受信部ごとに好ましい数のデータレベルを含めるために、バッファおよび適切な長さを参照するソケットライトコールが使用される。
【0046】
図8Bは、デルタスナップ(例えば、
図6のデルタスナップΔS
1)に基づく例示的な調整可能メッセージ810を示す。
図8Bに示す例では、調整可能メッセージ810は、1つ又は複数のヘッダ802と、1つ又は複数の更新812とを含む。図示の例では、更新812はアクション814を含む。場合によっては、それぞれの更新812は、1つ又は複数のアクション814を含む。図示の例では、アクション814は、最後のスナップショット以降のデータソース202への変更に関する情報を含む。データ更新812は、分割ポイント806で分割可能な分割可能データレベル(例えば、
図7A、7Bのデータレベル702)であってもよい。場合によっては、調整済みメッセージ204を送信するために、メッセージ送信部310は、バッファ(例えば、一次バッファ306、二次バッファ308など)からの分割ポイント806のうちの最大1つまで、調整可能メッセージ810の一部を使用する。場合によっては、調整可能メッセージ810は、それぞれのデータレベル804に対応する更新812を含まない(例えば、その特定のデータレベル804におけるデータが最後のスナップショット以降に変更されていない)。
【0047】
図8Bに示す例では、アクション814は、アクションリファレンス816と、インデックス818と、1つ又は複数のパラメータ820とを含む。アクションリファレンス816は、インデックス814によって識別されるデータレベル804を更新するためにどのアクション(例えば、
図6のアクション600)を実行するかを識別する。パラメータ820は、識別されたデータレベル804の値(例えば、値808)に対する変更の大きさを識別する。例示的なアクションリファレンス814が以下の表1に示される。
【0048】
【0049】
例示的な「追加」アクションは、パラメータ820によって特定される値(例えば、
図7の値704)を有するインデックス814で指定されたデータレベルの後に、新たなデータレベル(例えば、
図7のデータレベル702a―702f)を追加する。例示的な「相対追加」アクションは、パラメータ820によって特定される値によって修正(例えば、追加、減算)されたインデックス814で指定されたデータレベルの値を有するインデックス814で指定されたデータレベルの後に、新たなデータレベルを追加する。例示的な「一番上に追加」アクションは、パラメータ820によって指定された値を有する第1のデータレベルの前に新たなデータレベルを追加する。例示的な「N番目の値を修正」アクション(例えば、「1番目の値を修正(MV1)」など)は、インデックス814で指定されたデータレベルにおけるN番目の値を、パラメータ820によって指定されるように修正する。例示的な「全て修正」アクションは、インデックス814で指定されたデータレベルにおける値を、パラメータ820によって指定されるように修正する。例示的な「削除」アクションは、インデックス814によって指定されたデータレベルを削除する。例示的な「変更なし」アクションは、インデックス814によって指定されたデータレベルの前に、インデックス814によって指定されたデータレベルの複製を生成する。
【0050】
調整可能メッセージ810は、新たなデータレベル804を(例えば、「追加」アクション、「相対追加」アクションおよび/又は「一番上に追加」アクションを使用して)追加する更新812を含むことができる。付加的又は代替的に、調整可能メッセージ810は、既存のデータレベル804を(例えば、「削除」アクションを使用して)削除する更新812を含む。データレベル804が削除されると、下位のデータレベルが上方にシフトする。例えば、調整可能メッセージ800は、データレベル1、データレベル2およびデータレベル3を含む。データソース202の次回の更新時においてデータレベル2が削除される場合、データレベル3は、データレベル2となるようにシフトする。しかしながら、このような例では、受信デバイス206が調整済みメッセージ204内の2つのデータレベルのみを受信する場合、受信デバイス206は、データレベル3に関する情報を有しない。すなわち、受信デバイス206が最後のスナップショットを受信したときに、調整済みメッセージ204は、データレベル3に関する情報を含まなかった。データソース202の現在の状態に関する正確な最新の情報を受信デバイス206が持つことを促進するために、データフォーマット部304は、削除されたデータレベル804が検知されたときに、上方にシフトしたデータレベル804(例えば、データレベル1、3)を提供するアクション814(例えば、「変更なし」アクション)を含む。場合によっては、データレベル804を既に有する受信デバイス206は、「変更なし」アクション814を無視を受ける。
【0051】
図9は、データレベル(例えば、
図8Aのデータレベル804)が削除されている例示的なデータフローを示す図である。図示の例では、データソース202(
図2、3)の状態に関して、時刻T
0における第1の状態900aと、時刻T
1における第2状態900bとを示す。第1の状態900aと第2状態900bは、第1のデータレベル902a、第2のデータレベル902b、第3のデータレベル902c、第4のデータレベル902dおよび第5のデータレベル902eに編成されている。データフォーマット部(
図3)は、スナップショットベースの調整可能メッセージ(例えば、
図8Aの調整可能メッセージ800)を生成する。時刻T
0において、受信デバイス206(
図2、3)は3つのデータのプリファレンスを設定しているため、3つのデータレベルを有する調整済みスナップショットS
0が受信デバイス206に送信される。時刻T
1において、第2のデータレベル902bが削除される。図示の例では、第3のデータレベル902c、第4のデータレベル902dおよび第5のデータレベル902eが上方にシフトする。デルタスナップベースの調整可能メッセージ(例えば、
図8Bの調整可能メッセージ810)を生成するときに、データフォーマット部304は、「変更なし」のアクションを含む。調整済みデルタスナップΔS
1は、「変更なし」アクションを有する受信部に送信される。
【0052】
図10は、バッファ(例えば、
図3の一次バッファ306又は二次バッファ308)内における例示的な調整可能メッセージ1000(例えば、
図8Aのスナップショットベースの調整可能メッセージ800および/又は
図8Bのデルタスナップベースの調整可能メッセージ810)を示す。調整可能メッセージ1000は、1つ又は複数のヘッダ1002と、1つ又は複数の分割可能データレベル1004(例えば、
図8Aのデータレベル804又は
図8Bの更新812)とを含む。図示の例では、調整可能メッセージをフォーマットしながら、データフォーマット部304(
図3)は、分割ポイント1006のバッファ内の位置を算出する。場合によっては、データフォーマット部304は、分割ポイント10006のバッファ内の位置(例えば、バイトオフセット)を記憶する分割可能テーブル1008を生成する。このような例では、分割テーブル1008は、調整可能メッセージ1000の先頭又は最後尾に記憶されてもよい。場合によっては、分割テーブル1008は、調整済みメッセージ204(
図2)を送信する際に、メッセージ送信部310(
図3)によって使用される。この方法では、調整済みメッセージ204を送信するときに、メッセージ送信部310は、受信デバイス206のプリファレンスに応じて使用するために必要な調整可能メッセージ100のサイズ(例えば、バッファ内のバイト量)を迅速に決定することができる。
【0053】
VII.デルタスナップおよび分割可能データレベルを使用した調整メッセージング
ある実施形態は、デルタスナップと分割可能データレベルの技術の組み合わせを使用して1つ又は複数の受信側デバイス206へデータソース202の状態を通信する改善された通信技術を提供する。
【0054】
図11は、例示的な受信デバイスA1104aと、
図2、
図3のサブスクリプション制御モジュール201の間における例示的な第1の接続1102aを表す例示的なデータフロー
図1100を示す。
図1100は、例示的な受信デバイスB1104bとサブスクリプション制御モジュール201の間における例示的な第2の接続1102bを示す。サブスクリプション制御モジュール201は、スナップショットの閾値レート(例えば、毎分、2分ごと)にてスナップショット1106を生成し、基本更新レート(例えば、毎秒など)にてデルタスナップ1108a-1108gを生成する。図示の例では、サブスクリプション制御モジュール201は、スナップショット1106およびデルタスナップ1108a-1108gを第1の接続1102aおよび第2の接続1102bに送信する。
【0055】
図11に示す例では、第1の接続1102aは、時間の経過とともに、混雑期間1110と非混雑期間1112とを有する。図示の例では、受信デバイスA1104aは、受信すべき更新レート(例えば、デルタスナップ1108a-1108gが第1の接続1102aに送信されるレート)および/又はデータレベルの数(例えば、各スナップショット1106および各デルタスナップ1108a-1108gにどれだけ多くのデータレベルが含まれるか)に関するプリファレンスを設定する。図示の例では、受信デバイスA1104aによって設定される更新レートは、基本更新レート(例えば、サブスクリプション制御モジュール201によってデルタスナップ1108a-1108gが生成されるレート)に等しい。例えば、基本更新レートが1秒である場合、受信デバイスA1104aは、1秒間隔でデルタスナップ1108a-1108gを受信する。場合によっては、サブスクリプション制御モジュール201は、混雑期間1110を検出する。例えば、サブスクリプション制御モジュール201の送信ソケットは、送信バッファに空きがないことおよび/又は第1の接続1102aが混雑していることを示す。場合によっては、サブスクリプション制御モジュール201は、第1の接続1102aが混雑しなくなるまで、遅延していたデルタスナップ1108bの送信を遅延させる。混雑期間1110が受信デバイス206によるプリファレンスの更新レートよりも長い場合、サブスクリプション制御モジュール201は、保留中のデルタスナップ1108dを削除し、その代わりに次のデルタスナップ1108eを送信する。
【0056】
図11に示す例では、第2の接続1102bは、時間の経過とともに、接続期間1113と切断期間1114とを有する。図示の例では、受信デバイスB1104bによって設定された更新レートは、基本更新レートよりも少ない頻度に設定されている。例えば、基本更新レートが100ミリ秒である場合、受信デバイスB1104bの更新レートは200ミリ秒である。図示の例では、サブスクリプション制御モジュール201と受信デバイスB1104bの間に接続1102bが確立されるとき、サブスクリプション制御モジュール201は、最新のスナップショット1106および最新のデルタスナップ1108b、1108fを送信する。付加的又は代替的に、切断期間114が短い場合(例えば、現在の更新レートよりも低い場合)には、サブスクリプション制御モジュール201は単に、デルタスナップ1108fを送信する。
【0057】
図12は、
図2、
図3のサブスクリプション制御モジュール201がデータソース(例えば、
図2、
図3のデータソース202)との接続を確立したときにスナップショットとデルタスナップを生成させるように実行可能な例示的な機械読み取り可能命令を表す例示的な方法1200のフロー図である。最初に、ブロック1202において、サブスクリプション制御モジュール201は、データソース202から送信されるデータを受信する。場合によっては、サブスクリプション制御モジュール201は、設定された時間間隔でデータを取得する。付加的又は代替的に、サブスクリプション制御モジュール201は、データソース202への更新の検出および/又はトリガに応じて、データを取得する。ブロック1204において、サブスクリプション制御モジュール201は、スナップショットの閾値レートを超えたか否かを判断する。スナップショットの閾値レートは例えば、スナップショットを生成してから次のスナップショットを生成するまでの最小時間である。場合によっては、スナップショット閾値は、データソース201がそれぞれの更新をどの程度変更するかに基づく(例えば、データソースを大きく変更するほど、スナップショットの閾値を短くする)。
【0058】
スナップショットの閾値を超えていない場合には、プログラム制御はブロック1206に進む。そうでなければ、スナップショットの閾値を超えた場合には、プログラム制御はブロック1208に進む。ブロック1206において、サブスクリプション制御モジュール201は、スナップショットを生成する(例えば、
図11のスナップショット1106)。プログラム制御はブロック1202に戻る。ブロック1208において、サブスクリプション制御モジュール201は、デルタスナップを生成する(
図11のデルタスナップ1108a-1108g)。プログラム制御はその後、ブロック1202に戻る。サブスクリプション制御モジュール201がデータソース202から切断されるまで、機械読み取り可能命令1200は実行される。
【0059】
図13は、
図3のデータソース検索部302により検索されたデータからのスナップショット(例えば、
図11のスナップショット1106)を
図3のデータフォーマット部に生成させるように実行可能な例示的な機械読み取り可能命令を表す方法1300のフロー図である。最初に、ブロック1302において、データソース検索部302からのデータを受信した後、データフォーマット部304は、
図3の一次バッファ306に1つ又は複数のヘッダ(例えば、
図8Aのヘッダ802あるいは
図10のヘッダ1002)を追加する。ブロック1304において、データフォーマット部304は、データを分割可能データレベル(例えば、
図7A、
図7Bの分割可能データレベル702a-702f)に編成する。場合によっては、データは、重要度および/又は詳細のレベルに編成される。ブロック1306において、データフォーマット部304は、編成されたデータを調整可能メッセージ(例えば、
図8Aの調整可能メッセージ800あるいは
図10の調整可能メッセージ1000など)にフォーマットする。調整可能メッセージは、一次バッファ306内に配置される。ブロック1308において、データフォーマット部304は、調整可能メッセージの分割可能ポイント(例えば、
図8Aの分割テーブル806あるいは
図10の分割可能ポイント1000)の一次バッファ306内の位置を計算する。場合によっては、データフォーマット部304は、分割テーブル(例えば、
図10の分割テーブル1008)を作成し、それを一次バッファ306内の調整可能メッセージの先頭又は末尾に追加する。その後、プログラム1300は終了する。
【0060】
図14は、
図3のデータソース検索部302によって検索されたデータからのデルタスナップ(例えば、
図11のデルタスナップの1108a-1108g)を
図3のデータフォーマット部304に生成させるように実行可能な例示的な機械読み取り可能命令を表す方法1400のフロー図である。最初に、ブロック1302において、データソース検索部302からのデータを受信した後、データフォーマット部304は、
図3の二次バッファ308に1つ又は複数のヘッダ(例えば、
図8Bのヘッダ802、
図10のヘッダ1002)を付加する。ブロック1404において、データフォーマット部304は、データを分割可能データレベル(例えば、
図7A,7Bの分割可能データレベル702a-702f)に編成する。
【0061】
ブロック1406において、ブロック1402で編成された第1のデータレベルから始まり、データフォーマット部は、現在のデータレベルと、一次バッファ306(
図3)内の調整可能メッセージに記憶されている対応するデータレベルとの差を決定する。ブロック1408において、データフォーマット部304は、スナップショットを変更データとともに更新する際にどのアクション(例えば、
図8Bのアクション814)が関与しているかを決定する。場合によっては、現在のデータレベルと、一次バッファ306内の調整可能メッセージに記憶されている対応するデータレベルの間に差がない場合、当該レベルに関してアクションは生成されない。ブロック1410において、データフォーマット部304は、ブロック1408で決定されたアクションを二次バッファ308内の調整可能メッセージ(例えば、
図8Bの調整可能メッセージ810、
図10の調整可能メッセージ1000)に追加する。ブロック1412において、データフォーマット部304は、二次バッファ308内のデルタスナップの一部が一次バッファ306内のスナップショットよりも大きいかどうかを決定する。二次バッファ308内のデルタスナップがスナップショットよりも大きい場合、プログラム制御はブロック1414に進む。そうでなければ、二次バッファ308内のデルタスナップがスナップショットよりも大きくない場合、プログラム制御はブロック1416に進む。
【0062】
ブロック1414において、デルタスナップの生成が中止され、その代わりにデータフォーマット部はスナップショットを生成する。その後、プログラム1400は終了する。ブロック1416において、データフォーマット部304は、スナップショットと比較するための別のデータレベルが存在するかどうかを判断する。スナップショットと比較するための別のデータレベルが存在する場合、プログラム制御はブロック1406に戻る。そうでなければ、スナップショットと比較するための別のデータレベルがない場合、プログラム制御はブロック1418に進む。ブロック1418において、データフォーマット部304は、調整可能メッセージの分割可能ポイント(例えば、
図8Bの分割テーブル806あるいは
図10の分割可能ポイント1000)の二次バッファ308内の位置を計算する。場合によっては、データフォーマット部304は、分割テーブル(例えば、
図10の分割テーブル1008)を作成し、それを二次バッファ308内の調整可能メッセージの先頭又は末尾に追加する。その後、プログラム1400は終了する。
【0063】
図15は、
図3のメッセージ送信部310に受信部(例えば、
図2、
図3の受信デバイス206)を更新させるように実行可能な例示的な機械読み取り可能命令を表す例示的な方法1500のフロー図である。ブロック1502において、メッセージ送信部310は、受信部との接続(例えば、
図11の第1の接続1102a)を確立する。場合によっては、メッセージ送信部310は、受信部のプリファレンスを要求および/又は受信する。付加的又は代替的に、メッセージ送信部310は、受信部のプリファレンスを維持および/又はそれへの(例えば、加入データベースからの)アクセスを有する。ブロック1504において、メッセージ送信部310は、最新のスナップショット(例えば、
図11のスナップショット1106)を受信部に送信する。場合によっては、メッセージ送信部310は、受信部のプリファレンスに応じてスナップショットを調整する(例えば、
図3の一次バッファ306内の調整可能メッセージの一部を使用する)。
【0064】
ブロック1506において、メッセージ送信部310は、二次バッファ308(
図3)内により最近のデルタスナップ(例えば、
図11のデルタスナップ1108a-1108g)があるかどうかを決定する。メッセージ送信部310がより最近のデルタスナップがあると決定した場合、プログラム制御はブロック1508に進み、そうでなければ、プログラム1500は終了する。ブロック1508において、メッセージ送信部310は、最新のデルタスナップを受信部へ送信する。場合によっては、メッセージ送信部310は、受信部のプリファレンスに応じてデルタスナップを調整する(例えば、
図3の二次バッファ306内の調整可能メッセージの一部を使用する)。その後、プログラム1500は終了する。
【0065】
図16は、
図2、
図3のサブスクリプション制御モジュール201に接続されている受信デバイス206(
図2、
図3)にスナップショット(例えば、
図11のスナップショット1106)およびデルタスナップ(例えば、
図11のデルタスナップ1108a-1108g)を
図3のメッセージ送信部310に送信させるように実行可能な例示的な機械読み取り可能命令を表す方法1600のフロー図である。最初に、ブロック1602において、一次バッファ306(
図3)内の新たなスナップショット又は二次バッファ308(
図3)内の新たなデルタスナップが検出および/又はトリガされる。新たなスナップショット又はデルタスナップがある場合、プログラム制御はブロック1604に進む。そうでなければ、プログラム制御はブロック1602へ戻る。ブロック1604において、メッセージ送信部310は、受信デバイス206の更新レートが満たされているかどうかを判断する。場合によっては、受信部は、メッセージ送信部310によって接続が確立および/又は維持されているときにメッセージ送信部310によって受信されたプリファレンスを設定する。場合によっては、受信デバイス206はプリファレンスを設定しない。そのような例では、更新レートは、サブスクリプション制御モジュール201がスナップショットおよびデルタスナップを生成するレート(例えば、基本更新レート)にデフォルト化される。受信デバイス206の更新レートが満たされている場合、プログラム制御はブロック1606に進む。そうでなければ、受信デバイス206の更新レートが満たされていない場合、プログラム制御はブロック1602に戻る。
【0066】
ブロック1606において、メッセージ送信部310は、メッセージを受信デバイス206に送信可能かどうかを決定する。場合によっては、メッセージ送信部310は、混雑を検出する(例えば、
図3の混雑期間1112)。メッセージが受信デバイス206に送信可能である場合、プログラム制御はブロック1608に進む。そうでなければ、メッセージが受信デバイス206に送信することができない場合、プログラム制御はブロック1602に戻る。ブロック1608において、メッセージ送信部310は、スナップショット又はデルタスナップを受信デバイス206に送信するかどうかを決定する。スナップショットを受信デバイス206に送信する場合、プログラム制御はブロック1610に進む。デルタスナップを送信する場合、プログラム制御はブロック1612に進む。ブロック1610において、メッセージ送信部310は、受信デバイス206へスナップショットを送信する。場合によっては、メッセージ送信部310は、受信部のプリファレンスに応じてスナップショットを調整する(例えば、
図3の一次バッファ306内の調整可能メッセージの一部を使用する)。プログラム制御はブロック1602に戻る。ブロック1612において、メッセージ送信部310は、受信部にデルタスナップを送信する。場合によっては、メッセージ送信部310は、受信部のプリファレンスに応じてデルタスナップを調整する(例えば、
図3の二次バッファ306内の調整可能メッセージの一部を使用する)。プログラム制御はブロック1602に戻る。受信部がサブスクリプション制御モジュール201から切断されるまで、命令1600は実行される。
【0067】
図17は、
図3のメッセージ送信部310にバッファ(例えば、
図3の一次バッファ306および/又は二次バッファ308)内の調整可能メッセージ(例えば、
図8Aの調整可能メッセージ800、
図8Bの調整可能メッセージ810)を再整理することなくスナップショット(例えば、
図11のスナップショット1106)および/又はデルタスナップ(例えば、
図11のデルタスナップ1108a-1108g)を調整させるように実行可能な例示的な機械読み取り可能命令を表す方法1700のフロー図である。最初に、ブロック1702において、メッセージ送信部310は、送信するデータレベル(例えば、
図7A、7Bのデータレベル702a-702f)を受信部のプリファレンスに示されるように決定する。ブロック1704において、メッセージ送信部310は、ブロック1702において決定されたデータレベルの数に基づいて、受信デバイス206に送信するバッファの部分のサイズを決定する。場合によっては、バッファの先頭あるいは最後に分割テーブル(例えば、
図10の分割テーブル1008)が追加される。そのような例では、メッセージ送信部310は、分割テーブル1008上で必要なバッファサイズを検索する。ブロック1706において、メッセージ送信部310は、ブロック1704で決定されたバッファの一部が受信デバイス206に送信される。その後、プログラム1700は終了する。
【0068】
VIII.電子取引システムの例
上述の実施形態は電子取引システムにおいて有用である。例えば、様々な価格レベルで入手可能な数量を含む市場情報を通信することは、メッセージ調整を行うことで利益を得ることができる。例えば、取引可能オブジェクトに関する内部市場データと市場深度データを分割可能データレベルに編成することができる(例えば、分割可能データレベル702a―702f)。さらに、内部市場データおよび市場深度データの更新を、それらの取引可能オブジェクトの取引所に加入している加入者に、デルタスナップ技術を用いて通信することができる。
【0069】
図18は、ある実施形態を採用可能な例示的な電子取引システム1800を表すブロック図を示す。システム1800は、取引デバイス1810と、ゲートウェイ1820と、取引所1830とを備える。取引デバイス1810は、ゲートウェイ1820と通信する。ゲートウェイ1820は、取引所1830と通信する。本明細書における「通信」との用語は、直接的な通信、および/又は、1つ若しくは複数の中間コンポーネントを介した間接的な通信を包含する。取引デバイス1810、ゲートウェイ1820および/又は取引所1830は、
図1に示す1つ又は複数のコンピューティングデバイス100を含んでもよい。
図18に示す例示的な電子取引システム1800は、本明細書における示唆および開示から逸脱しない範囲で、付加的な機能や性能を提供する付加的なコンポーネント、サブシステムおよびエレメントと通信してもよい。
【0070】
動作中において、取引デバイス1810は、取引所1830からゲートウェイ1820を介して市場データを受信する。ユーザは取引デバイス1810を使用して、この市場データのモニタを行う、および/又は、1つ又は複数の取引可能オブジェクトを買う又は売るための注文メッセージを取引所1830に送信する意思決定を行う。
【0071】
市場データは、取引可能オブジェクトのための市場に関するデータを含む。例えば、市場データは、内部市場、市場深度、最終取引価格(「LTP」)、最終取引量(「LTQ」)又はそれらの組み合わせを含む。(時間の経過とともに変化する)内部市場は、ある時点における特定の取引可能オブジェクトに関する市場内の最高ビッド価格(ベストビッド)および利用可能な最低アスク価格(ベストアスク又はベストオファー)である。市場深度は、内部市場を含む価格レベルおよび内部市場から離れた価格レベルで利用可能な数量のことをいう。市場深度は、市場内の注文に基づく数量を有しない価格により「ギャップ」が存在する場合がある。
【0072】
内部市場および市場深度に関連する価格レベルは、価格だけでなくある値に関して抽出および/又は計算された表示を包含可能な価格レベルとして提供することもできる。例えば、値レベルは、始値からの正味の変化として表示される。別の例として、値レベルは、他の2つの市場での価格から計算された値として提供される。別の例では、値レベルは、統合価格レベルを含む。
【0073】
取引可能オブジェクトは、取引される任意の対象物である。例えば、取引可能オブジェクトの特定の数量を、特定の価格で買う又は売ることができる。取引可能オブジェクトには例えば、金融商品、株式、オプション、債券、先物、通貨、ワラント、ファンドデリバティブ、証券、商品、スワップ、金利商品、インデックスベース商品、取引イベント、物品、又はそれらの組み合わせが含まれる。取引可能オブジェクトには、取引所によってリスト化および/又は管理された商品、ユーザによって定義された商品、実際の商品若しくは合成の商品の組合せ、又はそれらの組み合わせが含まれる。なお、実際の取引可能オブジェクトに対応するおよび/又は類似する、合成の取引可能オブジェクトが存在してもよい。
【0074】
注文メッセージは、取引注文を含むメッセージである。取引注文は例えば、取引可能オブジェクトを買う又は売るためのコマンドや、定められた取引戦略に従って注文の管理を開始するコマンドや、注文を変更、修正又はキャンセルするコマンドや、注文に関連する電子取引所への指示や、それらの組み合わせであってもよい。
【0075】
取引デバイス1810は、1つ又は複数の電子計算プラットフォームを有してもよい。例えば、取引デバイス1810は、であるクトップコンピュータ、ハンドヘルドデバイス、ラップトップ、サーバ、ポータブルコンピューティングデバイス、取引端末、埋め込まれた取引システム、ワークステーション、アルゴリズム取引システム(「ブラックボックス」や「グレーボックス」)、コンピュータのクラスタ、又はそれらの任意の組み合わせを含んでもよい。別の例として、取引デバイス1810は、プロセッサによって実行される1つ又は複数のコンピュータプログラム、アプリケーション、ライブラリあるいはコンピュータ読み取り可能命令などをアクセス可能に記憶するように構成されたメモリ又はその他の記憶媒体と通信を行うシングル又はマルチコアプロセッサを含んでもよい。
【0076】
本明細書における「~ように構成された(configured to, adapted to)」との用語は、エレメント、構造又はデバイスが特定の機能又は特定の目的を実行するように修正、アレンジ、変更などされている場合を包含する。
【0077】
例示として、取引デバイス1810は、イリノイ州シカゴにあるトレーディングテクノロジーズインターナショナルインコーポレイティッド(以降では「トレーディングテクノロジーズ」と称する)が提供する電子取引プラットフォームであるX_TRADER(登録商標)のコピーを実行するパーソナルコンピュータとして実装されてもよい。別の例として、取引デバイス1810は、トレーディングテクノロジーズが提供するADLR(商標)、AUTOSPREADER(登録商標)、および/又はAUTOTRADER(商標)などの自動取引ツールを提供する取引アプリケーションを実行するサーバであってもよい。さらに別の例では、取引デバイス1810は、サーバと通信する取引端末を含んでもよく、この場合、取引端末とサーバが集合的に取引デバイス1810となる。
【0078】
取引デバイス1810は一般的に、ユーザによって所有、操作、制御、プログラム、構成、又はその他の方法の使用が行われる。本明細書における「ユーザ」との用語には、これらに限定されないが、人間(例えばトレーダ)、取引グループ(例えばトレーダのグループ)又は電子取引デバイス(例えばアルゴリズム取引システム)が含まれる―1人又は複数のユーザが、例えば所有、操作、制御、プログラミング、構成、又はその他の使用に関与してもよい。
【0079】
取引デバイス1810は、1つ又は複数の取引アプリケーションを含む。本明細書における取引アプリケーションは、電子商取引を可能にする又は改善するアプリケーションである。取引アプリケーションは、1つ又は複数の電子取引ツールを提供する。例えば、取引デバイスに記憶された取引アプリケーションは、1つ又は複数の取引ウィンドウに市場データを配置および表示するように実行される。別の例では、取引アプリケーションは、スプレッド取引ツールを提供する自動スプレッド取引アプリケーションを含む。さらに別の例では、取引アプリケーションは、自動的にアルゴリズムを処理して特定のアクション(注文を出す、既存の注文を修正する、注文の削除する、など)を実行するアルゴリズム取引アプリケーションを含む。さらに別の例では、取引アプリケーションは、1つ又は複数の取引画面を提供する。取引画面は、1つ又は複数の市場と交信可能な1つ又は複数の取引ツールを提供してもよい。例えば、ユーザは取引ツールを用いることで、様々な取引戦略を実行しながら、市場データの取得・閲覧、注文入力パラメータの設定、取引所への注文メッセージの送信、取引アルゴリズムの展開、および/又は、位置のモニタリングを行うことができる。取引アプリケーションが提供する電子取引ツールは常に利用可能であってもよく、あるいは、取引アプリケーションの特定の設定又は動作モードのみで利用可能であってもよい。
【0080】
取引アプリケーションは、プロセッサによって実行可能にコンピュータ読み取り可能媒体に記憶されたコンピュータ読み取り可能な命令を用いて実装される。コンピュータ読み取り可能媒体には例えば、ランダムアクセスメモリ、読み出し専用メモリ、プログラマブル読み出し専用メモリ、電気的プログラマブル読み出し専用メモリ、電気的消去可能読み出し専用メモリ、フラッシュメモリ、これらの任意の組み合わせ、又はその他の任意の有形データ記憶デバイスなど、様々なタイプの揮発性/不揮発性の記憶媒体が含まれる。本明細書における非一時的又は有形のコンピュータ読み取り可能媒体との用語は、コンピュータ読み取り可能記憶媒体の任意のタイプを含むが、伝搬信号は除外するものとして明示的に定義される。
【0081】
取引アプリケーションの1つ又は複数のコンポーネント又はモジュールは、別のコンピュータ読み取り可能媒体から、取引デバイス1810のコンピュータ読み取り可能媒体にロードされてもよい。例えば、取引アプリケーション(又は取引アプリケーションの更新)は、製作者、開発者又は発行者によって1つ又は複数のCD又はDVD上に記憶されるものであり、取引デバイス1810にその後ロードされる、又は、取引デバイス1810が取引アプリケーションを読み取るためのサーバにロードされてもよい。別の例として、取引デバイス1810は、サーバから、例えばインターネット又は内部ネットワークを介して取引アプリケーション(又は取引アプリケーションの更新)を受信してもよい。取引デバイス1810は、取引デバイス1810によって要求される場合に(例えば「プル配信」)、および/又は、取引デバイス1810によって要求されない場合に(例えば「プッシュ配信」)、取引アプリケーション又はその更新を受信してもよい。
【0082】
取引デバイス1810は、注文メッセージを送信するように構成されてもよい。例えば、注文メッセージは、ゲートウェイ1820を介して取引所1830に送信される。別の例として、取引デバイス1810は、実際の取引には影響を及ぼさないシミュレーション環境におけるシミュレートの取引所へ注文メッセージを送信するように構成される。
【0083】
注文メッセージは、ユーザの要求に応じて送信されてもよい。例えば、トレーダは取引デバイス1810を利用することで、注文メッセージを送信する、又は、取引注文に関する1つ又は複数のパラメータ(例えば注文の価格および/又は数量)を手動で入力する。別の例として、取引アプリケーションが提供する自動取引ツールは、取引注文に関する1つ又は複数のパラメータを計算して注文メッセージを自動的に送信する。ある例では、自動取引ツールは、送信用のメッセージを作成するがユーザからの確認がなければ実際にはそれを送信しない。
【0084】
注文メッセージは、1つ又は複数のデータパケットにて、又は、共有のメモリシステムを介して送信される。例えば、注文メッセージは、取引デバイス1810からゲートウェイ1820を介して取引所1830へ送信される。取引デバイス1810は例えば、ローカルエリアネットワーク、広域ネットワーク、無線ネットワーク、バーチャルプライベートネットワーク、セルラーネットワーク、ピアツーピアネットワーク、T1ライン、T3ライン、総合デジタル通信網(「ISDN」)ライン、ポイント・オブ・プレゼンス、インターネット、共有メモリシステム、および/又はトレーディングテクノロジーズ社によって提供されるTTNETのような独自ネットワークを使用して、ゲートウェイ1820と通信する。
【0085】
ゲートウェイ1820は、1つ又は複数の電子計算プラットフォームを含んでもよい。例えば、ゲートウェイ1820は、1つ又は複数のであるクトップコンピュータ、ハンドヘルドデバイス、ラップトップ、サーバ、ポータブルコンピューティングデバイス、取引端末、埋め込み取引システム、シングル/マルチコアプロセッサを搭載したワークステーション、「ブラックボックス」又は「グレーボックス」などのアルゴリズム取引システム、コンピュータのクラスタ、又はそれらの任意の組み合わせとして実装されてもよい。
【0086】
ゲートウェイ1820は、通信を容易にするものであってもよい。例えば、ゲートウェイ1820は、取引デバイス1810と取引所1830の間で通信されるデータのプロトコル変換を実行する。ゲートウェイ1820は例えば、取引デバイス1810から受信した注文メッセージを取引所1830によって判別可能なデータ形式に処理する。同様に、ゲートウェイ1820は例えば、取引所1830から受信した取引所の固有形式による市場データを取引デバイス1810によって判別可能な形式に変換する。
【0087】
ゲートウェイ1820は、上述の取引アプリケーションと同様に、電子取引を容易にする又は向上させる取引アプリケーションを含んでもよい。例えば、ゲートウェイ1820は、取引デバイス1810からの注文を追跡して、当該注文のステータスを取引所1830から受信した約定確認に基づいて更新する取引アプリケーションを有してもよい。別の例として、ゲートウェイ1820は、取引市場1830からのデータを合体してそれを取引デバイス1810に提供する取引アプリケーションを有してもよい。さらに別の例では、ゲートウェイ1820は、リスク処理を提供する、インプライド(implieds)を計算する、注文処理を取り扱う、市場データ処理を取り扱う、又はそれらの組み合わせを行う取引アプリケーションを含んでもよい。
【0088】
ある実施形態において、ゲートウェイ1820は例えば、ローカルエリアネットワーク、広域ネットワーク、無線ネットワーク、仮想プライベートネットワーク、セルラーネットワーク、ピアツーピアネットワーク、T1回線、T3回線、ISDN回線、ポイント・オブ・プレゼンス、インターネット、共有メモリシステムおよび/又はトレーディングテクノロジーズ社によって提供されるTTNETのような独自ネットワークを使用して、取引所1830と通信する。
【0089】
取引所1830は、取引所における団体によって所有、操作、制御、又は使用されてもよい。例示的な取引所の団体には、CMEグループ、ロンドン国際金融先物オプション取引所、インターコンチネンタル取引所、およびユーレックスが含まれる。取引所1830は、例えば取引所によって取引のために提供される取引可能オブジェクトの売買を可能とするように構成されたコンピュータ、サーバ又はその他のコンピューティングデバイスなどの電子マッチングシステムを含んでもよい。取引所1830は、一部は取引可能オブジェクトをリスト化および/又は管理し、他は注文を受信してマッチングするような、別々の団体を有してもよい。取引所1830は例えば、電子通信ネットワーク(「ECN」)を含む。
【0090】
取引所1830は、電子取引所であってもよい。取引所1830は、注文メッセージを受信し、取引可能オブジェクトを売買するための相対する取引注文のマッチングを行うように構成される。マッチングされなかった取引注文は、取引所1830によって後の取引用にリスト化される。取引可能オブジェクトを買う又は売るための注文が取引所によって受信され確認されると、当該注文は、約定されるかキャンセルされるまで、実行中の注文とみなされる。注文の数量の一部のみがマッチングする場合には、部分的にマッチングされた注文は、実行中の注文のままである。取引注文には例えば、取引デバイス1810から又は取引所1830と通信しているその他のデバイスから受信した取引注文を含んでもよい。例えば、取引所1830は通常、マッチング対象となる取引注文を提供する様々なデバイス(取引デバイス1810に類似するものであってもよい)と通信する。
【0091】
取引所1830は、市場データを提供するように構成される。市場データは、1つ又は複数のメッセージ又はデータパケットにて、又は共有メモリシステムを介して提供されてもよい。取引所1830は例えば、取引デバイス1810又はゲートウェイ1820などの契約デバイスに対してデータフィードを公開する。データフィードには、市場データが含まれる。
【0092】
システム1800は、付加的な、異なる、又は、より少ない数のコンポーネントを含んでもよい。例えば、システム1800は、複数の取引デバイス、ゲートウェイ、および/又は取引所を含む。別の例では、システム1800は、ミドルウェア、ファイアウォール、ハブ、スイッチ、ルータ、サーバ、取引所固有の通信機器、モデム、セキュリティマネージャーおよび/又は暗号化/復号化装置など、その他の通信デバイスを含んでもよい。
【0093】
IX.拡張された電子取引システムの例
図19は、ある実施形態を採用可能な別の例示的な電子取引システム1900のブロック図を示す。この例では、この例では、取引デバイス1910は、1つ又は複数の通信ネットワークを利用してゲートウェイ1920および取引所1930と通信する。例えば、取引デバイス1910はネットワーク1902を利用してゲートウェイ1920と通信し、ゲートウェイ1920は、ネットワーク1904、1906を利用して取引所1930と通信する。本明細書では、ネットワークにより、取引デバイス1910、ゲートウェイ1920および取引所1930などのコンピューティングデバイス間の通信を促進又は可能にする。
【0094】
以下の説明は一般的に、取引デバイス1910、ゲートウェイ1920および取引所1930に焦点を当てている。しかしながら、取引デバイス1910は、(個々にゲートウェイ1920a-1920nとして特定され、ゲートウェイ1920と類似し得る)「n」個の付加的ゲートウェイと、(個々に取引所1930a-1930nとして特定され、取引所1930と類似し得る)「n」個の付加的取引所と、ネットワーク1902(又はその他の類似のネットワーク)により接続および通信を行う。付加的ゲートウェイと付加的取引所の間の通信のために、(個々にネットワーク1904a―1904n、1906a―1906nとして特定され、ネットワーク1904、1906のそれぞれに類似し得る)追加のゲートネットワークを利用してもよい。取引デバイス1910と、付加的取引所1930a-1930nのそれぞれとの通信は、取引デバイス1910と取引所1930との通信と同じである必要はない。一般的に、それぞれの取引所は、取引デバイス、ゲートウェイ、ユーザ又は別の取引所との通信用の独自の好ましい技術および/又はフォーマットを有している。ゲートウェイ1920a―1920nと、取引所1930a―1930nとの間における1対1のマッピングは必ずしも必要ではない。例えば、特定のゲートウェイが、複数の取引所と通信してもよい。別の例として、複数のゲートウェイが同じ取引所と通信してもよい。このような構成によれば、例えば、1つ又は複数の取引デバイス1910は、複数の取引所にて取引すること(および/又は複数の取引所への冗長接続を提供すること)が可能になる。
【0095】
(取引デバイス1910と類似し得る)付加的取引デバイス1910a-1910nは、ゲートウェイ1920a-1920nのうちの1つ又は複数および取引所1930a-1930nの1つ又は複数に接続されてもよい。例えば、取引デバイス1910aは、ゲートウェイ1920aおよびネットワーク1902a、1904a、1906aを介して、取引所1930aと通信する。別の例では、取引デバイス1910bは、取引所1930aと直接通信する。別の例では、取引デバイス1910cは、プロキシ、リモートホスト又はWANルータなどの中間デバイス1908を介してゲートウェイ1920nと通信する。
【0096】
(
図18に示す取引デバイス1810と類似し得る)取引デバイス1910は、取引端末1914と通信するサーバ1912を含んでもよい。サーバ1912は、レイテンシーを低減するために、取引端末1914よりもゲートウェイ1920に対して地理的に近い位置に配置されてもよい。運転中において、取引端末1914は、ユーザに取引画面を提供するとともに、さらなる処理のためにサーバ1912にコマンドを送信してもよい。例えば、取引アルゴリズムは、市場データに基づく実行のためにサーバ1912に展開されてもよい。サーバ1912は、ユーザからのさらなる入力なしで取引アルゴリズムを実行してもよい。別の例では、サーバ1912は、自動取引ツールを提供する取引アプリケーションを含むとともに、取引端末1914と再び通信するものであってもよい。取引デバイス1910は、付加的な、異なる、又はより少ない数のコンポーネントを含んでもよい。
【0097】
動作中において、ネットワーク1902は、取引デバイス1910がゲートウェイ1920と通信することを可能にするためのマルチキャストネットワークであってもよい。ネットワーク1902上のデータは、例えば価格、注文又は約定などの項目に応じて論理的に分割されてもよい。その結果、サーバ1912および取引端末1914は、それらの個々のニーズに応じて契約し、データ(例えば価格、注文又は約定に関連するデータ)の受信を行うことができる。
【0098】
(
図18に示すゲートウェイ1820と類似し得る)ゲートウェイ1920は、価格サーバ1922と、注文サーバ1924と、約定サーバ1926とを備える。ゲートウェイ1920は、付加的な、異なる、又はより少ない数のコンポーネントを含んでもよい。価格サーバ1922は、価格データの処理を行う。価格データには、1つ又は複数の取引可能オブジェクトのための市場に関連するデータが含まれる。注文サーバ1924は、注文データを処理する。注文データは、ユーザの取引注文に関連するデータである。例えば、注文データには、注文メッセージ、確認メッセージ、又はその他のタイプのメッセージが含まれてもよい。約定サーバは、約定データを収集および提供する。約定データには、取引注文の1つ又は複数の約定に関連するデータが含まれる。例えば、約定サーバ1926は、サーバ1924を介してルーティングされた、約定済み又は未約定の取引注文の記録を提供する。サーバ1922、1924、1926は、同じ機械又は別の機械で実行されてもよい。ゲートウェイ1920のために、価格サーバ1922、注文サーバ1924、および/又は約定サーバ1926の複数のインスタンスが存在してもよい。ある実施形態では、付加的ゲートウェイ1920a-1920nのそれぞれが、(個々にサーバ1922a-1922n、1924a-1924n、1926a-1926nとして特定される)サーバ1922、1924、1926のインスタンスを含む。
【0099】
ゲートウェイ1920は、1つ又は複数の通信ネットワークを使用して取引所1930と通信する。
図19に示すように、例えば、ゲートウェイ1920と取引所1930を接続する2つの通信ネットワークが存在してもよい。ネットワーク1904は、価格サーバ1922に市場データを通信するために使用されてもよい。ある例では、取引所1930は、このような市場データを、契約デバイスに公開されたデータフィード内に含む。ネットワーク1906は、注文データを注文サーバ1924および約定サーバ1926に通信するために使用されてもよい。ネットワーク1906は、注文データを注文サーバ1924から取引所1930に通信するために使用されてもよい。
【0100】
(
図18に示す取引所1830と類似し得る)取引所1930は、注文ブック1932と、マッチングエンジン1934とを備える。取引所1930は、付加的な、異なる、又はより少ない数のコンポーネントを含んでもよい。注文ブック1932は、取引所1930に提出されたもののマッチングされていない取引注文の数量に関連するデータを含んだデータベースである。例えば、注文ブック1932は、内部市場、様々な価格レベルの市場深度、最終取引価格、および最終取引数量など、取引可能オブジェクトのための市場に関連するデータを含む。マッチングエンジン1934は、注文ブック1932にて係属中の相対するビッドとオファーをマッチングする。例えば、マッチングエンジン1934は、相対するビッドとオファーをマッチングする1つ又は複数のマッチングアルゴリズムを実行してもよい。売り注文は、同じ価格の買い注文と相対する注文である。同様に、買い注文は、同じ価格の売り注文に相対する注文である。マッチングアルゴリズムは例えば、同じ価格の相対するビッドとオファーをマッチングする。ある実施形態では、付加的取引所1930a-1930nのそれぞれが、(個々に注文ブック1932a-1932nおよびマッチングエンジン1934a―1934nと特定され、注文ブック1932およびマッチングエンジン1934のそれぞれと類似し得る)注文ブックおよびマッチングエンジンを含む。注文に関連するデータの追跡および注文のマッチングを行うために、異なる取引所が異なるデータ構造およびアルゴリズムを使用してもよい。
【0101】
動作中において、取引所1930は、注文ブック1932から価格サーバ1922に価格データを提供するとともに、マッチングエンジン1934から注文サーバ1924および/又は約定サーバ1926に注文データおよび/又は約定データを提供してもよい。サーバ1922、1924、1926は、これらのデータを処理して、取引デバイス1910に通信して戻すようにしてもよい。取引デバイス1910は例えば、取引アプリケーションを使用してこのデータを処理する。データは例えば、ユーザに表示される。別の例では、取引アルゴリズムがデータを利用して、取引所1930に取引注文を提出すべきかどうかを決定する。取引デバイス1910は、注文メッセージを準備し取引所1930に送信してもよい。
【0102】
ある実施形態では、ゲートウェイ1920は、取引デバイス1910の一部である。例えば、ゲートウェイ1920のコンポーネントは、取引デバイス1910と同じ計算プラットフォームの一部であってもよい。別の例として、ゲートウェイ1920の機能は、取引デバイス1910のコンポーネントによって実行されてもよい。ある実施形態では、ゲートウェイ1920は存在しない。このような構成は例えば、取引デバイス1910が取引所1930と直接通信するように構成されているときなど、取引デバイス1910が取引所1930と通信するためにゲートウェイ1920を利用する必要がない場合に生じる。
【0103】
X.市場データを含む調整済みメッセージング
本明細書に記載されたメッセージ調整技術は、取引所(例えば、
図18の取引所1830 )から受信した市場データ(例えば、内部市場、市場深度、インプライド(implieds))を、取引システムにおけるデバイスとその他のコンポーネントとの間の通信を取り扱うゲートウェイ(例えば、
図18のゲートウェイ1820)又はサーバを通じて取引デバイス(例えば、
図18の取引デバイス1810)に提供するために使用されてもよい。例えば、サブスクリプション制御モジュール(例えば、
図2、
図3のサブスクリプション制御モジュール201)は、ゲートウェイ1820のコンポーネントあるいは分散型取引環境へのエッジサーバであってもよい。取引デバイス1810は、直近に受信したナップショットをベースとして使用するとともに、直近に受信したデルタスナップに含まれるアクションを適用することにより、取引可能オブジェクトに関する市場の現在の状態を再構築する。
【0104】
サブスクリプション制御モジュール201のデータソース受信部302(
図3)は、取引可能オブジェクトに関する取引所1830からの市場データを受信又はそれ以外の方法で取得する。データフォーマット部304(
図3)は、市場データをデータレベル(例えば、
図7A、7Bのデータレベル702a-702f)に編成する。データレベルは、(例えば、最高のビッドおよび/又は最低のアスクを含む)第1のデータレベルにおける取引可能オブジェクトの内部市場と、(例えば、2番目に高いビッドおよび/又は2番目に高いアスクを含む)第2のデータレベルにおける市場深度の第1のレベルを含む。場合によっては、データフォーマット部304は、取引可能オブジェクトのインプライド市場をデータレベルで構成する。
【0105】
サブスクリプション制御モジュール201がスナップショット(例えば、
図11のスナップショット1106)を生成しているときに、データフォーマット部304はヘッダ(例えば、
図8Aのヘッダ802)を生成し、当該ヘッダを市場深度データレベルの先頭に追加する。場合によっては、データフォーマット部は、市場深度データレベルの後にインプライド市場データレベルを付加する。場合によっては、データフォーマット部は、対応する市場深度データレベルを含むインプライド市場データ値を含む。結果はその後、一次バッファ(例えば、
図3の一次バッファ306)に配置される。場合によっては、データフォーマット部は、一次バッファ306又は別のメモリに記憶するための分割テーブル(例えば、
図10の分割テーブル1008)を生成する。
【0106】
サブスクリプション制御モジュール201がデルタスナップ(例えば、
図11のデルタスナップ1108a)を生成しているときに、データフォーマット部304はヘッダを生成し、当該ヘッダを二次バッファ(例えば、
図3の二次バッファ308)に配置する。データフォーマット部は、(直近に生成されたスナップショットを含む)一次バッファ306に記憶されている市場深度レベルを現在の市場データレベルと比較し、その差を反映するアクション(例えば、
図8Bのアクション814)を生成する。アクション814は、生成されるとバッファに追加される。場合によっては、アクションを追加した後に、データフォーマット部は、二次バッファ308内のメッセージが一次バッファ306内のメッセージよりも大きいか否かを確認する。二次バッファ308内のメッセージが大きい場合、データフォーマット部304は、代わりにスナップショットを生成する。場合によっては、データフォーマット部304は、インプライド市場データレベルに関するアクションを生成する。さらに、データフォーマット部は、二次バッファ308又は別のメモリに記憶するための分割テーブル1008を生成する。
【0107】
図20A、20Bは、市場深度に関する多くの数のデータレベルにおける市場データを提供するためのスナップショット用およびデルタスナップ用の例示的な調整可能メッセージを示す。
図20Aは、市場深度に関する多くの数のデータレベルにおける市場データを提供するための例示的な調整可能スナップショットメッセージ2000を示す。調整可能スナップショットメッセージ2000は、ヘッダ2002と、市場深度データレベル2018とを含む。場合によっては、調整可能スナップショットメッセージ2000はまた、インプライド市場データレベルを含む。図示の例では、インプライド市場データレベル2020は、市場深度データレベル2018(例えば、第1の市場深度、第1のインプライド市場深度、第2の市場深度、第2のインプライド市場深度)とともにインタレースされる。インタレースすることにより、インプライド市場データレベル2020を市場深度データレベル2018と同じレベルへ切り捨てすることができる。インタレースには、特定の受信部がそれを要求しない場合でも、インプライド市場データレベル2020を調整済みメッセージ204とともに送信することが必要である。あるいは、場合によっては、インプライド市場データレベル2020は、調整可能スナップショットメッセージ2000の最後に編成することができる。このような例では、市場深度データレベル2018およびインプライド市場データレベル2020は、別々に切り捨て可能(truncatable)ではない。
【0108】
図示の例では、ヘッダ2002は、サイズパラメータ2008、インプライドパラメータ2010、アスク深度パラメータ2012a、ビッド深度パラメータ2012b、インプライドアスク深度パラメータ2014aおよびインプライドビッド深度パラメータ2014bを含む。サイズパラメータ2008は、バッファ(例えば、一次バッファ306、二次バッファ308)内の調整可能スナップショットメッセージ2000のサイズを提供する。分割テーブル1008が調整可能スナップショットメッセージ2000の最後に追加された場合、サイズパラメータ2008は、分割テーブル1008の始点を決定するために使用することができる。
【0109】
図20Aに示す例では、インプライドパラメータ2010は、調整可能スナップショットメッセージ2000の中にインプライド市場データレベル2020が含まれているか否かを示す。アスク深度パラメータ2012aは、調整可能スナップショットメッセージ2000におけるアスクレベル2017aを含む市場深度データレベル2018の数を示す。ビッド深度パラメータ2012bは、調整可能スナップショットメッセージ2000におけるビッドレベル2017bを含む市場深度データレベル2018の数を示す。場合によっては、アスク深度パラメータ2012aとビッド深度パラメータとは等しくない。例えば、取引可能オブジェクトに関する市場は、アスクレベル2017aよりも多くのビッドレベル2017bと非対称である(またはその逆であってもよい)。インプライドアスク深度パラメータ2014aは、調整可能スナップショットメッセージ2000に含まれるアスクレベル2017aを含むインプライド市場データレベル2020の数を示す。インプライドビッド深度パラメータ2014bは、調整可能スナップショットメッセージ2000に含まれるビッドレベル2017bを含むインプライド市場データレベル2020の数を示す。調整可能スナップショットメッセージ2000にインプライド市場データレベル2020が含まれていないことをインプライドパラメータ2010が示している場合、インプライドアスク深度パラメータ2014aおよびインプライドビッド深度パラメータ2014bがヘッダ2002に含まれない場合がある。
【0110】
図20Aに示す例では、深度データレベル2018は、ビッドレベル2017aに関する価格と数量(サイズとも呼ばれる)、および/又は、アスクレベル2027aに関する価格と数量(サイズとも呼ばれる)を含む(例えば、市場深度は対称的ではなく、ビッドレベルよりもアスクレベルの方が多い、あるいはその逆である)。例えば、第1の深度データレベル2018は、アスクレベル2017bとビッドレベル2017bの両方を有する一方で、取引可能オブジェクトに関する市場が非対称であるため、第2の深度データレベル2018はアスクレベル2017aのみを含む場合がある。効率のため、第1の深度データレベルの後の深度データレベル2018は、アスクオフセット2019aやビッドオフセット2019cなどの価格オフセット(例えば、ビッド/アスクレベルの価格は、前の深度データレベル2018に含まれていた価格に対するものである)と、アスクサイズ2019bやビッドサイズ2019dなどの数量(サイズとも呼ばれる)とを含んでもよい。価格の値は64ビット(8バイト)の値で表すことができるため、後続の価格値を特定するための相対的オフセットである8ビット(1バイト)を使用して、送信する必要があるデータ量を削減することができる。
【0111】
図示の例では、インプライド深度データレベル2020は、インプライド市場の深度に関する価格およびサイズを含む。付加的または代替的に、インプライド深度データレベル2020は、深度データレベル2018に関して上述したものと同様のサイズと価格オフセット(例えば、価格は、前のインプライド深度データレベル2020に含まれる価格に対する相対的なものである)とを含む。サブスクリプション制御モジュール201のメッセージ送信部310(
図3)は、特定の取引可能オブジェクトに関する市場に加入している受信デバイス(例えば、取引デバイス1810)との接続(例えば、
図11の第1の接続1102a、
図11の第2の接続1102b)を確立することができる。メッセージ送信部310は、取引デバイス1810からプリファレンスを受信する。例示的なプリファレンスには、受信すべき市場深度のレベルの数、および/又は、好ましい送信レート(例えば、デルタスナップを送信する頻度)を含む。インプライド市場データレベル2020が市場深度データレベル2018とインタレースされていないときに、受信デバイス206がインプライド市場の任意のレベルに対するプリファレンスを設定した場合、受信デバイス206は全てのレベルの市場深度を受信する。
【0112】
調整済みスナップショットメッセージ(例えば、
図2の調整済みメッセージ204)を送信するために、メッセージ送信部310は、一次バッファ306から調整可能スナップショットメッセージ2000の一部を使用する。場合によっては、メッセージ送信部は、分割テーブル1008上で使用するために調整可能スナップショットメッセージ2000の一部を検索する。メッセージ送信部310はその後、取引デバイス1810に調整済みメッセージ204を送信する
【0113】
場合によっては、受信部にとって好ましい数のレベルを達成するための調整可能スナップショットメッセージ2000を切り捨てる量を決定するために、メッセージ送信部310は、取引デバイス1810に送信するための一次バッファ306のバイト数を算出する。そのような例において、送信すべきバイト数は、以下の式(4)、式(5)および式(6)により算出することができる。
式(4):BL=(MD1+ABB×n)×2(1+I)
ここで、BLは、送信すべきバッファ内の調整可能メッセージのバイトの長さに関する上限であり、MD1は、第1の市場深度データレベル2018と次の市場深度データレベル2018のバイト数の差のサイズであり(次の市場深度データレベルが価格オフセットを利用している場合)、ABBは、次の市場深度データレベル2018のバイトのサイズであり、nは、市場深度の所望のレベルの数であり、Iは、インプライドパラメータ2010である(例えば、I=0はインプライド市場データがないことを示し、I=1は1つのインプライド市場データが含まれることを示す)。
式(5):BR=ABB×(min(0、n-b)+min(0、n-a)+min(0、n-ib)+min(0、n-ia))
ここで、BRは、ビッド/アスクのレベルが非対称である場合に減らすべきバイト数であり、ABBは、次の(すなわち第1ではない)市場深度データレベル2018(価格オフセットが使用される場合に第1の市場深度データレベル2018とは異なるものである)のバイトのサイズであり、nは、市場深度における所望のレベルの数であり、bは、ビッド深度パラメータ2012bであり、aは、アスク深度パラメータ2012aであり、ibは、インプライドビッド深度パラメータ2014bであり、iaは、インプライドアスク深度パラメータ2014aである。
式(6):BS=BL-BR
ここで、Bsは、調整可能スナップショットメッセージ2000における調整可能レベル部分のうち送信するためのバイト数である。例えばヘッダ2002を含む調整可能スナップショットメッセージ2000を保持するバッファの先頭からのメッセージのサイズを決定するために、当該ヘッダに関する付加的なバイトがBsに付加され、送信すべきトータルのバイト数が決定される。メッセージ送信部310はその後、調整可能スナップショットメッセージ2000からのバイト数の計算値を含む調整済みメッセージ204を取引デバイス1810に送信する。
【0114】
図20Bは、市場深度における多くのデータレベルでの市場データに対する更新を提供するための例示的な調整可能デルタスナップメッセージ2022を示す。調整可能デルタスナップメッセージ2022は、ヘッダ2002と、市場深度データレベル更新2026とを含む。場合によっては、調整可能デルタスナップメッセージ2022はさらに、インプライド市場深度更新データレベルを含む。図示の例では、インプライド市場深度更新データレベル2028は、市場深度データレベル更新2026とインタレースされる。あるいは、調整可能デルタスナップメッセージ2022は、メッセージの最後においてインプライド市場深度更新データレベル2028とともに配置される(例えば、インプライド市場深度更新データレベル2020が調整可能スナップショットメッセージ2000の末尾に配置される場合)。
【0115】
図示の例では、ヘッダ2002は、サイズパラメータ2008、インプライドパラメータ2010、アスク深度パラメータ2012a、ビッド深度パラメータ2012b、インプライドアスク深度パラメータ2014aおよびインプライドビッド深度パラメータ2014bを含む。サイズパラメータ2008は、バッファ(例えば、一次バッファ306、二次バッファ308)内における調整可能デルタスナップメッセージ2022のサイズを提供する。分割テーブル1008が調整可能デルタスナップメッセージ2022の末尾に付加されている場合には、分割テーブル1008の開始点を決定するためにサイズパラメータ2008を使用することができる。
【0116】
図20Bに示す例では、インプライドパラメータ2010は、調整可能デルタスナップメッセージ2022の中にインプライド市場データレベル更新2028が含まれるかどうかを示す。アスク更新パラメータ2023aは、調整可能デルタスナップメッセージ2022内におけるアスク値2017aを含む市場深度データレベル更新2026の数を示す。ビッド更新パラメータ2023bは、調整可能デルタスナップメッセージ2022内におけるビッド値2017bを含む市場深度データレベル更新2026の数を示す。インプライドアスク更新パラメータ2024aは、調整可能デルタスナップメッセージ2022内におけるアスク値2017aを含むインプライド市場データレベル更新2028の数を示す。インプライドビッド更新パラメータ2024bは、調整可能デルタスナップメッセージ2022内におけるビッド値2017bを含むインプライド市場データレベル更新2028の数を示す。調整可能デルタスナップメッセージ2022内にインプライド市場データレベル更新2028が含まれていないことをインプライドパラメータ2010が示す例において、インプライドアスク深度パラメータ2024aとインプライドビッド深度パラメータ2024bはヘッダ2002に含まれない場合がある。
【0117】
図20Bに示す例では、内部市場又は各市場深度のアスク価格、アスクサイズ、ビッド価格および/又はビッドサイズが最後のスナップショットから変化しているときに、調整可能デルタスナップメッセージ2022の中に市場深度データレベル更新2026が含まれている。例えば、内部市場および第1の市場深度が変化しておらず、第2の市場深度のビッドサイズが変化している場合、調整可能デルタスナップメッセージ2022は、第2の市場深度に関する市場深度データレベル更新2026を含む。場合によっては、それぞれのインプライド市場深度のアスク価格、アスクサイズ、ビッド価格および/又はビッドサイズが最後のスナップショットから変化しているときに、調整可能デルタスナップメッセージ2022の中にインプライド市場データレベル更新2028が含まれる。
【0118】
図20Bに示す例では、調整可能デルタスナップメッセージ2022に含まれる市場深度データレベル更新2026および/又はインプライド市場深度データレベル更新2028は、1つ又は複数のアクション2030を含む。アクション2030は、アクションリファレンス2032、インデックス2034、オフセット2036、価格2038および/又はサイズ2040を含んでもよい。取引デバイス1810に対するアクションで識別されるアクションリファレンス2032は、それぞれの更新の実装を実行するものである。インデックス2034は、アクションが実行されるデータレベルを識別するものである。オフセット2036は、指定された値を変更するための数量を特定するものである。例えば、修正価格アクションのために、オフセット2036は、価格が調整されるべき数量を特定するものである。価格2038は、データレベルの価格が設定される値を特定するものである。サイズ2040は、データレベルのサイズが設定される値を識別する。アクションリファレンス2030の例を以下の表2に記載する。
【0119】
【0120】
取引デバイス1810に調整済みデルタスナップメッセージ(例えば、
図2の調整済みメッセージ204)を送信するために、メッセージ送信部310は、二次バッファ308からの調整可能デルタスナップメッセージ2022の一部を使用する。場合によっては、メッセージ送信部は、分割テーブル1008で使用するための調整可能デルタスナップメッセージ2022の部分を検索する。メッセージ送信部310はその後、調整済みメッセージ204を取引デバイス1810に送信する。
【0121】
場合によっては、調整可能デルタスナップメッセージ2022の切り捨てを行うために、メッセージ送信部310は、取引デバイス1810に送信する二次バッファ308のバイト数を算出する。バイト数を計算するために、市場深度データレベル更新2026およびインプライド市場深度データレベル更新2028がトラバースされ、二次バッファ308内における計算された位置が決定される。受信デバイス206のプリファレンスによって設定された深度リミット(N)を上限として、インデックス2034を有するアクション2030に関して、「削除」アクション(D)を有するアクションリファレンス2032の数がカウントされ、「追加」アクション(例えば、「追加」、「一番上に追加」、「相対追加」)を有する追加リファレンス2932の数がカウントされる。二次バッファ308内のアクション2030が、N+D―Aインデックスに対応する最後のアクション2030の最後を上限としてトラバースされる。この場所は計算された位置である。メッセージ送信部310はその後、計算された位置によって示されるバイト数を含む調整済みメッセージ204を調整可能デルタスナップメッセージ2022から取引デバイス1810へ送信する。
【0122】
図面のいくつかは、ある実施形態の全て又は一部を実現するために使用可能な例示的なブロック図、システムおよび/又はフロー図を示す。例示的なブロック図、システムおよび/又はフロー図における1つ又は複数のコンポーネント、エレメント、ブロックおよび/又は機能は例えば、ハードウェア、ファームウェア、(有形コンピュータ読み取り可能媒体に記憶されたコンピュータ読み取り可能な命令のセットとしての)ディスクリートロジック、および/又はそれらの任意の組み合わせにて、単独又は組み合わせて実装されてもよい。
【0123】
例示的なブロック図、システムおよび/又はフロー図は例えば、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルロジックデバイス(FPLD)、離散論理、ハードウェアおよび/又はファームウェアの任意の組み合わせを使用して実現される。また、例示的な方法のいくつか又はその全ては例えば、手動で又は上述の技術と組み合わせて実行されてもよい。
【0124】
例示的なブロックダイアグラム、システムおよび/又はフロー図は例えば、1つ又は複数のプロセッサ、コントローラおよび/又はその他の処理デバイスを用いて行われる。例えば、その例としては、有形のコンピュータ読み取り可能媒体に記憶されたコンピュータ読み取り可能な命令などのコード化された命令を使用して実行される。有形コンピュータ読み取り可能媒体は例えば、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、プログラマブル読み出し専用メモリ(PROM)、電気的プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能読み出し専用メモリ(EEPROM)、フラッシュメモリ、ハードディスクドライブ、光媒体、磁気テープ、ファイルサーバ、その他の任意の有形データ記憶デバイス、又はそれらの任意の組み合わせなど、様々なタイプの揮発性および不揮発性の記憶媒体を含む。有形コンピュータ読み取り可能媒体は、不揮発性である。
【0125】
さらに、例示的なブロック図、システムおよび/又はフロー図について図面を参照しながら説明したが、その他の実現形態も可能である。例えば、コンポーネント、エレメント、ブロックおよび/又は機能の実行順序を変更可能である、および/又は、説明したコンポーネント、エレメント、ブロックおよび/又は機能のうちのいくつかを変更、削除、細分化又は組み合わせてもよい。さらに、コンポーネント、エレメント、ブロックおよび/又は機能のいずれか又はその全ては、例えば別個の処理スレッド、プロセッサ、デバイス、離散論理および/又は回路によって、直列および/又は並列に実現されてもよい。
【0126】
複数の実施形態について開示したが、様々な変更が可能であり、均等物によって置換されてもよい。さらに、特定の状況又は材料を適合させるように多くの修正を行ってもよい。このように、開示された技術は、開示したある実施形態に限定されるものでなく、添付の特許請求の範囲に含まれる全ての実施形態を包含することが意図される。
【手続補正書】
【提出日】2022-08-23
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
取引デバイスにおいて、第1時間におけるデータソースの状態を表す第1スナップショットメッセージを受信するステップ、
取引デバイスにおいて、第2時間におけるデータソースの状態と第1時間におけるデータソースの状態の差を表す第1デルタスナップメッセージを受信するステップ、
第1デルタスナップメッセージと第1スナップショットメッセージに基づいて、第2時間におけるデータソースの状態の少なくとも一部を復元するステップ、
取引デバイスにおいて、第3時間におけるデータソースの状態と第1時間におけるデータソースの状態の差を表す第2デルタスナップメッセージを受信するステップ、
第2デルタスナップメッセージと第1スナップショットメッセージに基づいて、第3時間におけるデータソースの状態の少なくとも一部を復元するステップ、
を含む、方法。
【請求項2】
第1スナップショットメッセージは、取引所に関連する市場データを含み、第1デルタスナップメッセージは、市場データの少なくとも一部における変化を表す、請求項1に記載の方法。
【請求項3】
第3時間におけるデータソースの状態の少なくとも一部の描写を表示するステップ、をさらに含む、請求項2に記載の方法。
【請求項4】
取引所への注文を準備して送信するために、第3時間におけるデータソースの状態の少なくとも一部を取引アルゴリズムで利用するステップ、をさらに含む、請求項2または3に記載の方法。
【請求項5】
第1デルタスナップメッセージはアクションを含み、当該アクションは、第1スナップショットメッセージ内の修正すべきデータを特定するインデックスと、修正の性質を特定する情報とを含む、請求項1から4のいずれか1つに記載の方法。
【請求項6】
修正の性質を特定する情報は、価格を設定することを指定する、請求項5に記載の方法。
【請求項7】
第1スナップショットメッセージを提供するシステムに、第1スナップショットメッセージが従うサブスクリプションプリファレンスを送信するステップをさらに含む、請求項1から6のいずれか1つに記載の方法。
【請求項8】
プロセッサと、
プロセッサによって実行されるコンピュータ読取り可能な命令を記憶したメモリと、を備え、
命令はプロセッサによって実行されると、プロセッサに、
取引デバイスにおいて、第1時間におけるデータソースの状態を表す第1スナップショットメッセージを受信するステップ、
取引デバイスにおいて、第2時間におけるデータソースの状態と第1時間におけるデータソースの状態の差を表す第1デルタスナップメッセージを受信するステップ、
第1デルタスナップメッセージと第1スナップショットメッセージに基づいて、第2時間におけるデータソースの状態の少なくとも一部を復元するステップ、
取引デバイスにおいて、第3時間におけるデータソースの状態と第1時間におけるデータソースの状態の差を表す第2デルタスナップメッセージを受信するステップ、
第2デルタスナップメッセージと第1スナップショットメッセージに基づいて、第3時間におけるデータソースの状態の少なくとも一部を復元するステップ、
を実行させる、コンピューティングデバイス。
【請求項9】
第1スナップショットメッセージは、取引所に関連する市場データを含み、第1デルタスナップメッセージは、市場データの少なくとも一部における変化を表す、請求項8に記載のコンピューティングデバイス。
【請求項10】
第3時間におけるデータソースの状態の少なくとも一部の描写を表示するステップ、をさらに含む、請求項9に記載のコンピューティングデバイス。
【請求項11】
命令はさらに、プロセッサに、
取引所への注文を準備して送信するために、取引アルゴリズムにおいて、第3時間におけるデータソースの状態の少なくとも一部を利用するステップ、
を実行させる、請求項9に記載のコンピューティングデバイス。
【請求項12】
第1デルタスナップメッセージはアクションを含み、当該アクションは、第1スナップショットメッセージ内の修正すべきデータを特定するインデックスと、修正の性質を特定する情報とを含む、請求項8から11のいずれか1つに記載のコンピューティングデバイス。
【請求項13】
修正の性質を特定する情報は、価格を設定することを指定する、請求項12に記載のコンピューティングデバイス。
【請求項14】
命令はさらに、プロセッサに、
第1スナップショットメッセージを提供するシステムに、第1スナップショットメッセージが従うサブスクリプションプリファレンスを送信するステップ、
を実行させる、請求項8から13のいずれか1つに記載のコンピューティングデバイス。
【請求項15】
請求項1から7のいずれか1つに記載の方法をコンピューティングデバイスに実行させるための命令を記憶したコンピュータ読み取り可能媒体。
【請求項16】
請求項1から7のいずれか1つに記載の方法をコンピューティングデバイスに実行させるためのコンピュータプログラム。
【外国語明細書】