(57)【要約】【課題】市況データを比較的簡素な演算処理で高速に圧縮する。【解決手段】市況データから売気配１値段〜５値段を抽出し、この圧縮グループに属するデータの数を示す可変長のビット列を生成し、その先頭にビット幅を定義する固定長のビット列を付加してデータ数表現用のビット列を生成し、売気配１値段を基準値とし、これを可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加して基準値表現用のビット列を生成し、売気配２の値段を基準値との差分のビット列に置き換え、売気配３の値段を売気配２値段との差分のビット列に置き換え、売気配４の値段を売気配３値段との差分のビット列に置き換え、売気配５の値段を売気配４値段との差分のビット列に置き換え、基準値以外のビット列を接続し、その先頭に各ビット列のビット幅を定義する固定長のビット列を付加して後続データ表現用のビット列を生成し、各ビット列を接続して圧縮データを生成する市況データ圧縮システム10。【選択図】図６
2011010124.tif 000002
【特許請求の範囲】
【請求項１】
証券取引所のコンピュータから送信された市況データに含まれる各種データ項目の中で、相互の値の大きさに一定の順序性を備えた所定の複数のデータ項目の値を、同一の圧縮グループを構成するデータとして抽出する手段と、
当該圧縮グループに属するデータの数を示す可変長のビット列を生成する手段と、
この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、データ数表現用のビット列を生成する手段と、
各データの中で最も小さい値のものを基準値と認定し、この基準値を可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値表現用のビット列を生成する手段と、
上記基準値と、２番目に値の小さいデータとの差分を算出し、当該データの値をこの差分を示すビット列に置き換える手段と、
この２番目に値の小さいデータ以外にもデータが存在する場合には、各データを値の小さい順に並べて相互間の差分を算出し、この差分を示すビット列によって値の大きい方のデータの値を置き換える手段と、
この差分を示すビット列の中で最もビット幅の広いものを特定する手段と、
この最もビット幅の広いビット列よりも狭いビット幅のビッド列の先頭に０を必要数付加して、それぞれのビット幅を揃える手段と、
このビット幅が揃えられたビット列を一定の順序で接続する手段と、
この接続されたビット列の先頭に、個々のビット列のビット幅を定義する固定長のビット列を付加し、後続データ表現用のビット列を生成する手段と、
上記の各ビット列を所定の順序で接続して圧縮データを生成する手段と、
を備えたことを特徴とする市況データ圧縮システム。
【請求項２】
証券取引所のコンピュータから送信された市況データに含まれる各種データ項目の中で、所定の複数のデータ項目の値を、同一の圧縮グループを構成するデータとして抽出する手段と、
当該圧縮グループに属するデータの数を示す可変長のビット列を生成する手段と、
この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、データ数表現用のビット列を生成する手段と、
各データの中で最も小さい値のものを基準値と認定し、この基準値を可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値表現用のビット列を生成する手段と、
上記基準値と、他のデータの値との差分を算出し、それぞれのデータの値をこの差分を示すビット列に置き換える手段と、
この差分を示すビット列の中で最もビット幅の広いものを特定する手段と、
この最もビット幅の広いビット列よりも狭いビット幅のビッド列の先頭に０を必要数付加して、それぞれのビット幅を揃える手段と、
このビット幅が揃えられたビット列を一定の順序で接続する手段と、
この接続されたビット列の先頭に、個々のビット列のビット幅を定義する固定長のビット列を付加し、後続データ表現用のビット列を生成する手段と、
上記の各ビット列を所定の順序で接続して圧縮データを生成する手段と、
を備えたことを特徴とする市況データ圧縮システム。
【請求項３】
上記基準値に認定されたデータの位置を示す可変長のビット列を生成する手段と、
この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値位置表現用のビット列を生成する手段と、
この基準値位置表現用のビット列を、上記圧縮データの所定の位置に挿入する手段を備えたことを特徴とする請求項２に記載の市況データ圧縮システム。
【請求項４】
上記市況データに含まれる各種データ項目の中から複数のデータ項目の値を同一の圧縮グループを構成するデータとして抽出した後に、この圧縮グループに含まれる各データの値間に１０のｎ乗の最大公約数が存在するか否かが判定され、
この１０のｎ乗の最大公約数が存在する場合に、各データの値が、当該最大公約数でそれぞれの値を除した商に置き換えられ、
上記基準値表現用のビット列及び上記後続データ表現用のビット列が、この商に基づいて生成され、
さらに、上記１０のｎ乗のｎを表す固定長のビット列が、上記圧縮データの所定の位置に挿入されることを特徴とする請求項１〜３の何れかに記載の市況データ圧縮システム。
【請求項５】
上記ビット幅を定義する固定長のビット列が、「ビット幅−１」を示すビット列よりなることを特徴とする請求項１〜４の何れかに記載の市況データ圧縮システム。
【請求項６】
上記市況データに含まれる各種データ項目の中で、所定のデータ項目に係る固定長のデータを個別圧縮の対象として抽出する手段と、
この固定長データの先頭部に付加された０を除去して、可変長のビット列に変換する手段と、
このビット列の先頭に、そのビット幅を定義する固定長のビット列を付加して圧縮データを生成する手段と、
を備えたことを特徴とする請求項１〜５の何れかに記載の市況データ圧縮システム。
【請求項７】
コンピュータを、
証券取引所のコンピュータから送信された市況データに含まれる各種データ項目の中で、相互の値の大きさに一定の順序性を備えた所定の複数のデータ項目の値を、同一の圧縮グループを構成するデータとして抽出する手段、
当該圧縮グループに属するデータの数を示す可変長のビット列を生成する手段、
この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、データ数表現用のビット列を生成する手段、
各データの中で最も小さい値のものを基準値と認定し、この基準値を可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値表現用のビット列を生成する手段、
上記基準値と、２番目に値の小さいデータとの差分を算出し、当該データの値をこの差分を示すビット列に置き換える手段、
この２番目に値の小さいデータ以外にもデータが存在する場合には、各データを値の小さい順に並べて相互間の差分を算出し、この差分を示すビット列によって値の大きい方のデータの値を置き換える手段、
この差分を示すビット列の中で最もビット幅の広いものを特定する手段、
この最もビット幅の広いビット列よりも狭いビット幅のビッド列の先頭に０を必要数付加して、それぞれのビット幅を揃える手段、
このビット幅が揃えられたビット列を一定の順序で接続する手段、
この接続されたビット列の先頭に、個々のビット列のビット幅を定義する固定長のビット列を付加し、後続データ表現用のビット列を生成する手段、
上記の各ビット列を所定の順序で接続して圧縮データを生成する手段、
として機能させることを特徴とする市況データ圧縮プログラム。
【請求項８】
コンピュータを、
証券取引所のコンピュータから送信された市況データに含まれる各種データ項目の中で、所定の複数のデータ項目の値を、同一の圧縮グループを構成するデータとして抽出する手段、
当該圧縮グループに属するデータの数を示す可変長のビット列を生成する手段、
この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、データ数表現用のビット列を生成する手段、
各データの中で最も小さい値のものを基準値と認定し、この基準値を可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値表現用のビット列を生成する手段、
上記基準値と、他のデータの値との差分を算出し、それぞれのデータの値をこの差分を示すビット列に置き換える手段、
この差分を示すビット列の中で最もビット幅の広いものを特定する手段、
この最もビット幅の広いビット列よりも狭いビット幅のビッド列の先頭に０を必要数付加して、それぞれのビット幅を揃える手段、
このビット幅が揃えられたビット列を一定の順序で接続する手段、
この接続されたビット列の先頭に、個々のビット列のビット幅を定義する固定長のビット列を付加し、後続データ表現用のビット列を生成する手段、
上記の各ビット列を所定の順序で接続して圧縮データを生成する手段、
として機能させることを特徴とする市況データ圧縮プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は市況データ圧縮システム及びプログラムに係り、特に、証券取引所から送信された株取引に係る市況データを高速に圧縮する技術に関する。
【背景技術】
【０００２】
証券取引所のコンピュータからは、株式の売買取引に係る様々なデータがほぼリアルタイムで情報ベンダーのコンピュータに送信され、金融機関や証券会社等のコンピュータは、この情報ベンダーのコンピュータを介して市況データを逐次取得している。
この市況データは、一旦所定の記憶手段に格納された後、株式投資の判断材料として、あるいは取引終了後における執行評価の比較資料として利用される。また、この市況データに基づいて仮想の注文情報が生成され、株取引のシミュレーションに利用することも行われている。
【０００３】
この市況データは、各銘柄の板情報（気配値、数量、現在値、出来高等）に変化が生じる度に送信されるものであり、１日で数百万件のレコード数に達するため、記憶手段に格納する際には当然ながら圧縮処理が施されている。
ただし、既存の一般的な圧縮エンジンの場合、圧縮処理の高速化よりも圧縮率の向上に重点が置かれており、そのために複雑な演算処理が実行されるため、ミリ秒単位で送信される株式市況データの圧縮には不向きであり、処理には遅延が生じていた。
【０００４】
これに対し、特許文献１には、株価データの特性に着目することで、より効率的なデータ圧縮を企図した圧縮方法が開示されている。
この圧縮方法は、株価データに含まれる始値、高値、安値、終値の値の関係と出来高の値とに基づいて２種類の分類パターンを予め設定しておき、入力された株価データが第１分類のどのパターンに属するかを識別してそのパターンを示す第１分類情報を生成し、この株価データが第２分類のどのパターンに属するかを識別してそのパターンを示す第２分類情報を生成し、生成された第１分類情報と第２分類情報とを組み合わせて一つの分類識別データＣを生成し、上記株価データから安値の数値データＬを抽出し、上記株価データに基づき、始値と安値の差の数値データＤ１（Ｄ１ ＝Ｓ−Ｌ）と、高値と安値の差の数値データＤ２（Ｄ２ ＝Ｈ−Ｌ）と、及び終値と安値の差の数値データＤ３（Ｄ３ ＝Ｅ−Ｌ）を生成し、始値、高値、安値及び終値の数値データのうち同値がｋ個（ｋ＝２，３，又は４）ある場合、前記数値データＤ１ ，Ｄ２ ，Ｄ３ のうち（４−ｋ）個の異なる数値データＤ４ を抽出し、上記株価データから出来高の数値データＴを抽出し、生成された上記分類識別データＣと、抽出された安値の数値データＬ、（４−ｋ）個の異なる数値データＤ４ 及び出来高の数値データＴから、１つの銘柄の株価データに関するバイナリーデータを生成するものである。
【特許文献１】特許第3307909号
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載された圧縮方法の場合には、「株価データ」の圧縮と謳いながらも、始値、高値、安値、終値のみが圧縮対象であり、気配情報に関する圧縮処理が対象外とされている点で、市況データの圧縮技術としての利用価値に限界があった。すなわち、市況データには、「売注文」と「買注文」毎に複数（最大で５つ）の気配値段、気配数量及び時刻情報が含まれており、この市況データ中で最も大きな割合を占める気配情報の圧縮に適用できない点で、実用性に欠ける技術であると評価せざるを得ない。
また、始値、高値、安値、終値の圧縮にしても、事前に数多くのパターンを設定しておく必要があり、圧縮処理時にはパターンマッチングや中間データの生成処理を何度も繰り返す必要があることから、圧縮率の向上については兎も角、処理速度の向上には疑問が残ると言わざるを得ない。
【０００６】
この発明は、このような従来の問題を解決するために案出されたものであり、市況データ中の気配情報を含めた各データの特性にマッチした圧縮ロジックを適用することにより、全体として比較的簡素な演算処理で済むようにし、この結果、圧縮処理の高速化を実現することを目的としている。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、請求項１に記載した市況データ圧縮システムは、証券取引所のコンピュータから送信された市況データに含まれる各種データ項目の中で、相互の値の大きさに一定の順序性を備えた所定の複数のデータ項目の値を、同一の圧縮グループを構成するデータとして抽出する手段と、当該圧縮グループに属するデータの数を示す可変長のビット列を生成する手段と、この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、データ数表現用のビット列を生成する手段と、各データの中で最も小さい値のものを基準値と認定し、この基準値を可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値表現用のビット列を生成する手段と、上記基準値と、２番目に値の小さいデータとの差分を算出し、当該データの値をこの差分を示すビット列に置き換える手段と、この２番目に値の小さいデータ以外にもデータが存在する場合には、各データを値の小さい順に並べて相互間の差分を算出し、この差分を示すビット列によって値の大きい方のデータの値を置き換える手段と、この差分を示すビット列の中で最もビット幅の広いものを特定する手段と、この最もビット幅の広いビット列よりも狭いビット幅のビッド列の先頭に０を必要数付加して、それぞれのビット幅を揃える手段と、このビット幅が揃えられたビット列を一定の順序で接続する手段と、この接続されたビット列の先頭に、個々のビット列のビット幅を定義する固定長のビット列を付加し、後続データ表現用のビット列を生成する手段と、上記の各ビット列を所定の順序で接続して圧縮データを生成する手段を備えたことを特徴としている。
【０００８】
請求項２に記載した市況データ圧縮システムは、証券取引所のコンピュータから送信された市況データに含まれる各種データ項目の中で、所定の複数のデータ項目の値を、同一の圧縮グループを構成するデータとして抽出する手段と、当該圧縮グループに属するデータの数を示す可変長のビット列を生成する手段と、この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、データ数表現用のビット列を生成する手段と、各データの中で最も小さい値のものを基準値と認定し、この基準値を可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値表現用のビット列を生成する手段と、上記基準値と、他のデータの値との差分を算出し、それぞれのデータの値をこの差分を示すビット列に置き換える手段と、この差分を示すビット列の中で最もビット幅の広いものを特定する手段と、この最もビット幅の広いビット列よりも狭いビット幅のビッド列の先頭に０を必要数付加して、それぞれのビット幅を揃える手段と、このビット幅が揃えられたビット列を一定の順序で接続する手段と、この接続されたビット列の先頭に、個々のビット列のビット幅を定義する固定長のビット列を付加し、後続データ表現用のビット列を生成する手段と、上記の各ビット列を所定の順序で接続して圧縮データを生成する手段を備えたことを特徴としている。
【０００９】
請求項３に記載した市況データ圧縮システムは、請求項２のシステムであって、さらに、上記基準値に認定されたデータの位置を示す可変長のビット列を生成する手段と、この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値位置表現用のビット列を生成する手段と、この基準値位置表現用のビット列を、上記圧縮データの所定の位置に挿入する手段を備えたことを特徴としている。
【００１０】
請求項４に記載した市況データ圧縮システムは、請求項１〜３のシステムであって、上記市況データに含まれる各種データ項目の中から複数のデータ項目の値を同一の圧縮グループを構成するデータとして抽出した後に、この圧縮グループに含まれる各データの値間に１０のｎ乗の最大公約数が存在するか否かが判定され、この１０のｎ乗の最大公約数が存在する場合に、各データの値が、当該最大公約数でそれぞれの値を除した商に置き換えられ、上記基準値表現用のビット列及び上記後続データ表現用のビット列が、この商に基づいて生成され、さらに、上記１０のｎ乗のｎを表す固定長のビット列が、上記圧縮データの所定の位置に挿入されることを特徴としている。
【００１１】
請求項５に記載した市況データ圧縮システムは、請求項１〜４のシステムであって、上記ビット幅を定義する固定長のビット列が、「ビット幅−１」を示すビット列よりなることを特徴としている。
【００１２】
請求項６に記載した市況データ圧縮システムは、請求項１〜５のシステムであって、さらに、上記市況データに含まれる各種データ項目の中で、所定のデータ項目に係る固定長のデータを個別圧縮の対象として抽出する手段と、この固定長データの先頭部に付加された０を除去して、可変長のビット列に変換する手段と、このビット列の先頭に、そのビット幅を定義する固定長のビット列を付加して圧縮データを生成する手段を備えたことを特徴としている。
【００１３】
請求項７に記載した市況データ圧縮プログラムは、コンピュータを、証券取引所のコンピュータから送信された市況データに含まれる各種データ項目の中で、相互の値の大きさに一定の順序性を備えた所定の複数のデータ項目の値を、同一の圧縮グループを構成するデータとして抽出する手段、当該圧縮グループに属するデータの数を示す可変長のビット列を生成する手段、この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、データ数表現用のビット列を生成する手段、各データの中で最も小さい値のものを基準値と認定し、この基準値を可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値表現用のビット列を生成する手段、上記基準値と、２番目に値の小さいデータとの差分を算出し、当該データの値をこの差分を示すビット列に置き換える手段、この２番目に値の小さいデータ以外にもデータが存在する場合には、各データを値の小さい順に並べて相互間の差分を算出し、この差分を示すビット列によって値の大きい方のデータの値を置き換える手段、この差分を示すビット列の中で最もビット幅の広いものを特定する手段、この最もビット幅の広いビット列よりも狭いビット幅のビッド列の先頭に０を必要数付加して、それぞれのビット幅を揃える手段、このビット幅が揃えられたビット列を一定の順序で接続する手段、この接続されたビット列の先頭に、個々のビット列のビット幅を定義する固定長のビット列を付加し、後続データ表現用のビット列を生成する手段、上記の各ビット列を所定の順序で接続して圧縮データを生成する手段として機能させることを特徴としている。
【００１４】
請求項８に記載した市況データ圧縮プログラムは、コンピュータを、証券取引所のコンピュータから送信された市況データに含まれる各種データ項目の中で、所定の複数のデータ項目の値を、同一の圧縮グループを構成するデータとして抽出する手段、当該圧縮グループに属するデータの数を示す可変長のビット列を生成する手段、この可変長のビット列の先頭に、そのビット幅を定義する固定長のビット列を付加し、データ数表現用のビット列を生成する手段、各データの中で最も小さい値のものを基準値と認定し、この基準値を可変長のビット列で表現したものの先頭に、そのビット幅を定義する固定長のビット列を付加し、基準値表現用のビット列を生成する手段、上記基準値と、他のデータの値との差分を算出し、それぞれのデータの値をこの差分を示すビット列に置き換える手段、この差分を示すビット列の中で最もビット幅の広いものを特定する手段、この最もビット幅の広いビット列よりも狭いビット幅のビッド列の先頭に０を必要数付加して、それぞれのビット幅を揃える手段、このビット幅が揃えられたビット列を一定の順序で接続する手段、この接続されたビット列の先頭に、個々のビット列のビット幅を定義する固定長のビット列を付加し、後続データ表現用のビット列を生成する手段、上記の各ビット列を所定の順序で接続して圧縮データを生成する手段として機能させることを特徴としている。
【発明の効果】
【００１５】
請求項１に記載した市況データ圧縮システム及び請求項７に記載した市況データ圧縮プログラムにあっては、気配値段のように異なるデータ項目の値の大きさに順序性が存在する複数のデータに関して、最も小さい値を基準値と認定し、他のデータを相互間の差分として表現することにより、極めて単純な演算処理によって複数のデータをまとめて圧縮することができる。この結果、株式市況データをほぼリアルタイムで圧縮することが可能となる。
【００１６】
請求項２に記載した市況データ圧縮システム及び請求項８に記載した市況データ圧縮プログラムにあっては、複数のデータ項目の値が同一の圧縮グループを構成する値として抽出され、その中で最も小さい値を基準値と認定し、他のデータを当該基準値との差分として表現することにより、極めて単純な演算処理によって複数のデータをまとめて圧縮することができる。この結果、株式市況データをほぼリアルタイムで圧縮することが可能となる。
【００１７】
請求項２の圧縮システムの場合、同一の圧縮グループに属するデータの特性から基準値が一意に定まるのであれば、復元時に基準値がどのデータ項目に該当するかを判別可能となるが、データ間の大きさについてこのような規則性が存在しない圧縮グループについては、復元時に基準値がどのデータ項目に該当するのかが判別できなくなる。
これに対し、請求項３の圧縮システムにあっては、圧縮データが基準値位置表現用のビット列を備えているため、復元時に基準値がどのデータ項目に該当するのかが明確となる。
【００１８】
請求項４の圧縮システムの場合、圧縮グループに属する各データに１０のｎ乗の最大公約数が存在する場合には、事前に各データの値が当該最大公約数で除算され、その商に置き換えられるため、最終的な圧縮データの容量をさらに低減することが可能となる。株式の値段については、１０円単位や１００円単位のように刻み幅が限定されている銘柄が多く存在し、株式の取引数量についても、１００株単位や１０００株単位のように単元株数ごとの取引となるため、予め１０のｎ乗の最大公約数で割り算しておくことが有効である。
【００１９】
請求項５の圧縮システムのように、可変長のビット列のビット幅を固定長のビット列で定義するに際し、ビット幅そのものではなく「ビット幅−１」で表現することにより、この固定長のビット列自身のビット幅を節約することが可能となる。
【００２０】
請求項６に記載した市況データ圧縮システムによれば、市況データの中でグループ圧縮の対象外となるものについても、可変長のビット列に変換することにより、その冗長性を個別に排除することが可能となる。
【発明を実施するための最良の形態】
【００２１】
図１は、この発明に係る市況データ圧縮システム10の全体構成を示すブロック図であり、市況データ取得部11と、市況データ記憶部13と、市況データ圧縮部12と、圧縮データ記憶部14と、圧縮データ送信部15とを備えている。
上記の市況データ取得部11、市況データ圧縮部12及び圧縮データ送信部15は、コンピュータのCPUが、OS及び専用のアプリケーションプログラムに従って必要な処理を実行することにより実現される。また、市況データ記憶部13及び圧縮データ記憶部14は、同コンピュータのハードディスク内に設けられている。
【００２２】
市況データ取得部11には、通信ネットワークを介して情報ベンダーのコンピュータ18が接続されており、証券取引所のホストコンピュータ19から提供された市況データ（ティックデータ）が、同コンピュータ18を経由して断続的に送信される。市況データ取得部11は、この市況データを市況データ記憶部13に格納する。
【００２３】
市況データ圧縮部12は、この情報ベンダーのコンピュータ18から送信された市況データに対し、後述の圧縮処理を順次施して圧縮データを生成した後、圧縮データ記憶部14に格納する。
この圧縮データ記憶部14に格納された圧縮データは、圧縮データ送信部15により、ネットワークを介して接続されたクライアント端末22や注文情報生成システム20に送信される。
【００２４】
クライアント端末22では、この送信された圧縮データが圧縮データ解凍部25によって解凍される。そして、この解凍された市況データは、専用のアプリケーションによって加工され、リアルタイムの株価情報としてディスプレイに表示される。この株価情報を参照することにより、トレーダは株取引を執行する。
【００２５】
また、注文情報生成システム20では、圧縮データ送信部15から送信された圧縮データが圧縮データ解凍部21によって解凍され、市況データ記憶部23に格納される。そして、この解凍された市況データに基づき、仮想の注文情報が注文情報生成部24によって推定的に生成され、注文情報記憶部26に格納される。
この注文情報記憶部26内に蓄積された多数の注文情報は、仮想取引システム28に提供され、クライアント端末22との間で展開される株取引シミュレーションに利用される。
【００２６】
上記のクライアント端末22の圧縮データ解凍部25は、市況データ圧縮部12による圧縮処理とは逆の工程を経ることにより、圧縮データを元の市況データに復元する機能を備えており、予め同端末22にセットアップされている。
また、上記注文情報生成システム20の圧縮データ解凍部21も同様に、市況データ圧縮部12による圧縮処理と逆の工程を経ることにより、圧縮データを元の市況データに復元する機能を備えており、予め同システム20内にセットアップされている。
【００２７】
図２は、情報ベンダーのコンピュータ18から送信される市況データの中で、市況データ取得部11によって抽出され、市況データ記憶部13内に格納されるデータ項目を例示するものであり、送信時刻、銘柄コード、市場区分、現在値、現在値時刻、始値、始値時刻、高値、高値時刻、安値、安値時刻、累積出来高、累積約定金額、日中VWAP、売気配１値段、売気配１数量、売気配１時刻、売気配２値段、売気配２数量、売気配２時刻、売気配３値段、売気配３数量、売気配３時刻、売気配４値段、売気配４数量、売気配４時刻、売気配５値段、売気配５数量、売気配５時刻、買気配１値段、買気配１数量、買気配１時刻、買気配２値段、買気配２数量、買気配２時刻、買気配３値段、買気配３数量、買気配３時刻、買気配４値段、買気配４数量、買気配４時刻、買気配５値段、買気配５数量、買気配５時刻…等の多数のデータ項目を備えている。
【００２８】
理解の便宜上、各データ項目の値欄には10進数に換算した数値が表記されているが、実際には２進数の数値が固定長（64bit、32bit等）で各値欄に格納されている。
情報ベンダーのコンピュータ18からは、市況に変化が生じる度に新たな市況データが送信され、これを受け取った市況データ取得部11は、図２のデータを最新の状態に更新する。
【００２９】
つぎに、市況データの特性について説明する。
(1)「値段」について
株式の取引所取引では、売買や気配の値段は呼値の刻みごとになる。例えば、値段が3,000円を超えて30,000円以下の場合は、呼値の刻みは10円となり、売買値段は10円の倍数となる。
また、取引は「制限値幅」という一定の範囲内でのみ行われる。実際には値段は制限値幅の範囲の中の、一部の領域に固まっている場合が多い。
さらに、気配値段には順序に応じた大小関係が存在する。すなわち、売の場合は最良気配がもっとも安く、第２気配、第３気配、第４気配…と順に高くなってゆき、買はその逆となる。
(2)「数量」について
株式の取引所取引では、売買の数量は、銘柄ごとに決まった単元株数の倍数で行われる。例えば、株式会社野村総合研究所の株は、100株単位での売買となる。
(3)「時刻」について
時刻は、取引所の開いている時間帯内の値となる。また、活発に取引が行われるような銘柄（＝板情報のレコード数が多い銘柄）については、時刻の値自体が近い範囲に固まっていることが多い。
(4) システム的特性
固定bit幅の整数値として表現される項目（値段、数量、時刻等）は、それぞれの項目の値がとり得る最大値を格納できるように、十分な広さのbit幅が採用されている。しかしながら、多くの場合は採用したbit幅の一部のみを使用するだけの小さな値が設定される。
例えば、「数量」は32bit整数の場合で43億弱までの値が表現可能であるが、多くの取引では10万株などといったレベルの値が使われるだけである。
【００３０】
以上に掲げた市況データの特性を踏まえた上で、市況データ圧縮部12による圧縮処理を具体的に説明する。
図３は、「累積出来高」の圧縮工程を模式的に示すものであり、１０進数で「7526200」、２進数で「00000000011100101101011100111000」の数値（32bit）が、可変ビット化圧縮処理により、「1011011100101101011100111000」の数値（28bit）に変換される様子が描かれている。
【００３１】
すなわち、累積出来高項目の値には予め32 bit固定のbit幅が設定されているため、「7526200」を２進数で表現する場合、本来は「11100101101011100111000（23 bit）」で済むところ、先頭部分に余計な「000000000」を挿入することにより、32 bitに調整されている。
そこで市況データ圧縮部12は、まず先頭の「000000000」を除去した数値「11100101101011100111000」を、可変bit幅のデータとして、メモリ上に設定されたデータ部30に格納する。
【００３２】
同時に市況データ圧縮部12は、データ部30に格納されたデータのbit幅を定義する５bit固定の数値を、メモリ上に設定された「データ部幅−１」の項目31に設定する。
図においては、23bitのビット列である「11100101101011100111000」がデータ部30に格納されているため、「23−１＝22」を表す「10110」のビット列が「データ部幅−１」の項目31に充填されている。
【００３３】
固定bit幅で表現された数値を可変bit幅で表現し直すことで、余計な０詰めを除去してデータ量自体を低減することができるが、これだけでは復元時にデータ間の区切りが判別できなくなるため、上記のように可変bit幅を特定するための５bit固定のビット列を「データ部幅−１」に設定することとしている。
【００３４】
ここで、単純に「データ部幅」とせず「データ部幅−１」としているのは、消費するbit幅を節約するためである。すなわち、32 bit固定のデータ項目の場合、データ部30に格納されるデータの最大bit幅は当然に32 bitであり、「32」を２進数で表現すると「100000」となり、６桁が必要となる。これに対し、「データ部幅−１」としておけば、「32−１＝31」となり、「31」の２進数表現は「11111（５桁）」であることから、１桁分の節約となる。
【００３５】
図４は、圧縮前の固定bit幅と「データ部幅−１」のbit幅との対応関係を表すテーブルであり、圧縮前の固定bit幅が８bitの場合には３bit固定で表現され、圧縮前の固定bit幅が16 bitの場合には４bit固定で表現され、圧縮前の固定bit幅が64 bitの場合には６bit固定で表現されることが示されている。
【００３６】
復元時には、当該データ項目の固定bit幅が32 bitであることから、先頭５桁の「10110」が「データ部幅−１」の値であると認定され、これに続く23桁の数値「11100101101011100111000」がデータ部30に格納されたデータ本体の値であると認定される。あとは、「11100101101011100111000」の先頭に「000000000」を挿入することにより、元の32 bit固定のデータが復元される。
【００３７】
図５は、「累積約定金額」の圧縮工程を模式的に示すものであり、１０進数で「14120170200」、２進数で「0000000000000000000000000000000101010000101001101010110111110000」の数値（64 bit）が、可変ビット化圧縮処理により「011111 10101000010100110101011011111000」のビット列（38 bit）に変換される様子が描かれている。
【００３８】
すなわち、市況データ圧縮部12は、まず「14120170200」を64 bit固定の２進数で表現した上記の値から余計なゼロ詰め部分を除去した数値（32 bit）をデータ部30に格納すると共に、「データ部幅−１」の項目31に「32−１＝31」を６bit固定の２進数で表現した「011111」を設定している。
【００３９】
図６は、「売気配値段（整数部）」の圧縮工程を模式的に示すものである。
図２に示したように、元の市況データに含まれる各種値段には、小数点以下の数値が含まれているため、市況データ圧縮部12は、まずは整数部の数値と小数部の数値を分けて圧縮処理することとしている（小数部の圧縮については、後に詳述する）。
また、売気配１値段〜売気配５値段には、値が順に大きくなっていくという規則性があるため、同じ圧縮グループに属するものとして、一まとめに圧縮処理される。
【００４０】
まず市況データ圧縮部12は、図６(a)及び(b)に示すように、売気配１値段〜売気配５値段の値である1869、1870、1871、1872、1873について、共通除数圧縮処理を施す。
ここで「共通除数圧縮」とは、１０のｎ乗の最大公約数が存在する場合には、それぞれの値を当該最大公約数で除した商に変換する処理を意味している。
【００４１】
図６(a)に示した例では、各値段間に１０のｎ乗の最大公約数が存在しないため、圧縮前（図６(a)）と圧縮後（図６(b)）で値に変化が現れていないが、図７に示すように、売気配１値段〜売気配５値段の各値段である3700、3710、3720、3730、3740間に１０の１乗の最大公約数が存在している場合には、共通除数圧縮処理により、それぞれの値が「370、371、372、373、374」に圧縮される。
呼値（値付けの単位）が10円、100円、1000円等に限定されている価格帯の銘柄の場合には、上記のように各気配の値段間に１０のｎ乗の最大公約数が存在することになり、圧縮効果が現れる。
【００４２】
つぎに市況データ圧縮部12は、図６(c)に示すように、各値に対して順序差分圧縮処理を施す。
ここで「順序差分圧縮」とは、同じ圧縮グループに属する項目間に値の大小に係る順序性が存在する場合に、最も値が小さくなる項目の値を基準値と認定し、それ以外の値を相互間の差分で表現する圧縮処理を意味している。
【００４３】
図６(b)の例では、売気配１値段が「1869」で最も小さいため、そのまま基準値として認定され、メモリ上に設定された「値」の項目32に充填される。これに対し売気配２値段は「1870」であり、基準値に対して「＋１」であるため、値として差分の「１」が格納される。また、売気配３値段は「1871」であり、売気配２の値に対して「＋１」であるため、値として差分の「１」が格納される。また、売気配４値段は「1872」であり、売気配３の値に対して「＋１」であるため、値として差分の「１」が格納される。さらに、売気配５値段は「1873」であり、売気配４の値に対して「＋１」であるため、値として差分の「１」が格納される。
【００４４】
「データ数」の項目33には、当該圧縮グループに属する項目の総数である「５」が設定されている。
また「基準値位置」の項目34には、先頭の項目（売気配１値段）を示す「０」が設定されている。もっとも、売気配値段の場合には売気配１値段の値が必ず基準値として認定されるため、基準値位置の設定を省略することも可能である。
【００４５】
なお、図６(a)〜(c)においては、理解の便宜上、各値を１０進数で表現しているが、市況データ圧縮部12は、実際には２進数の値に対して上記の圧縮処理を施す（以下同様）。
【００４６】
つぎに市況データ圧縮部12は、図６(d)に示すように、これまでの圧縮処理の結果を接続することにより、以下のビット列を生成する。
「100000101010010101110100110100001111」（36bit）
まず先頭の「圧縮方法（2bit固定）」の項目35の「10」は、圧縮方法が「共通除数圧縮＋順序差分圧縮」であることを示す識別コードである。
また、次の「１０ｎのｎ（3bit固定）」の項目36は、共通除数圧縮における１０のｎ乗のｎを特定するビット列を記述する部分であり、今回は１０のｎ乗の最大公約数が存在しなかったため、「000」が充填されている。これに対し、仮に１０のｎ乗のｎが「１」であった場合には、「001」が充填されることとなる。
【００４７】
「データ数／データ部」の項目38には、当該圧縮グループに含まれるデータ数である「５」の２進数表現である「101」が充填されている。
また、この「データ数／データ部」の項目38は可変bit幅であり、圧縮グループに含まれるデータ数の多寡に応じて桁数が変動するため、「データ数／データ部幅−１」の項目37に「データ数／データ部」に充填された値のbit幅を特定する3bit固定のビット列が設定されている。図６(d)においては、「データ数／データ部」に3 bitのビット列が充填されているため、「３−１＝２」を示す「010」が設定されている。
【００４８】
「基準値／データ部」の項目40には、当該圧縮グループにおける基準値であり「1869」の２進数表現である「11101001101」が充填されている。
また、この「基準値／データ部」は可変bit幅であり、基準値の大小に応じて桁数が変動するため、「基準値／データ部幅−１」の項目39に「基準値／データ部」に充填された値のbit 幅を特定する6 bit固定のビット列が設定されている。図６(d)においては、「基準値／データ部」に11bitのビット列が充填されているため、「１１−１＝１０」を示す「001010」が設定されている。
【００４９】
「後続データ／データ部」の項目43には、基準値が認定された項目以外の項目（具体的には「売気配２値段」〜「売気配５値段」）に係る順序差分圧縮の結果が、上から「1/1/1/1」のように縦一列に描画されているが、これらは実際には「1111」のように横一列にメモリ上に配置される。
【００５０】
また、この「後続データ／データ部」は可変bit幅であり、項目相互間の差分の大小に応じて桁数が変動するため、「後続データ／データ部幅−１」の項目42に「後続データ／データ部」に充填された値のbit 幅を特定する数値が可変bit幅で設定されている。図６(d)においては、「後続データ／データ部」にそれぞれ1bitのビット列が充填されているため、「１−１＝０」を示す「0」が設定されている。
【００５１】
さらに、この「後続データ／データ部幅−１」は可変bit幅であり、「後続データ／データ部」に充填された各数値の大小に応じて桁数が変動するため、「後続データ／データ部幅−１の表現幅−１」の項目41に「後続データ／データ部幅−１」に充填された値のbit幅を特定する数値が３bit固定で設定されている。図６(d)においては、「後続データ／データ部幅−１」に1 bitの数値が充填されているため、「１−１＝０」を示す「000」が設定されている。
【００５２】
このように、「後続データ／データ部」のbit幅を「後続データ／データ部幅−１（可変bit幅）」及び「後続データ／データ部幅−１の表現幅−１（３bit固定）」の２段階で規定することにより、全体のデータ量を節約することが可能となる。
すなわち、圧縮前の売気配値段のデータ項目は64bitであるため、「後続データ／データ部」には最大64 bitの値が格納される可能性がある。このため、仮にこの64 bitを「後続データ／データ部幅−１（固定長）」のみで規定するとなると、「64−１＝63＝111111（２進数）」、すなわち６bitを予め確保しておく必要がある。これに対し、上記のように可変長（後続データ／データ部幅−１）と固定長（後続データ／データ部幅−１の表現幅−１）を組み合わせた２段階でbit幅を定義することにより、「000＋0＝４bit」で済んでいる。
もちろん、「後続データ／データ部幅−１」は可変長であるため、この項目に４bit以上の数値が充填された場合には６bitを超えることとなるが、その確率は比較的低いため、実用上は問題ない。
【００５３】
圧縮前の売気配１値段〜売気配５値段のデータ項目は、それぞれが64bit固定のデータ長を備えているため、合計で64×５＝320bitのデータ量に達していたところ、上記の圧縮処理を施すことにより、グループ全体で36bitにまで容量が低減されている。
【００５４】
上記の圧縮データを復元する際、注文情報生成システム20の圧縮データ解凍部21及びクライアント端末22の圧縮データ解凍部25（以下「圧縮データ解凍部21等」）は、まず先頭の２bit固定のデータ「10（圧縮方法）」に基づいて共通除数圧縮及び順序差分圧縮が施されていることを認識すると共に、次の３bit固定のデータ「000（１０ｎのｎ）」により、共通除数圧縮については復元処理が不要であることを認識する。
続く「010（データ数／データ）」及び「101（データ数／データ部）」のビット列により、圧縮データ解凍部21等は売気配値段に係る５件分のデータが含まれていることを認識する。
【００５５】
つぎに圧縮データ解凍部21等は、続く「001010（基準値／データ部幅−１）」のビット列により、基準値のビット幅が「11」であることを認識し、続く11個分の数値「11101001101」を基準値として取得する。
つぎに圧縮データ解凍部21等は、「11101001101」の先頭に０を53個挿入することにより、元の売気配１値段の整数部（64bit固定長）を再現する。
【００５６】
つぎに圧縮データ解凍部21等は、続く「000（後続データ／データ部幅−１の表現幅−１）」及び「0（後続データ／データ部幅−１）」のビット列により、後続データのビット幅が「１」であることを認識し、続く１個分の数値「1」を基準値に対する差分データとして取得する。
つぎに圧縮データ解凍部21等は、基準値である「11101001101」に「1」を加算して「11101001110」を導き出し、その先頭に０を53個挿入することにより、元の売気配２値段の整数部（64bit固定長）を再現する。
【００５７】
以後、圧縮データ解凍部21等は上記と同様の処理を３回繰り返し、売気配３値段、売気配４値段及び売気配５値段の整数部（それぞれ64bit固定長）を再現する。
【００５８】
図８は、「買気配値段（整数部）」の圧縮工程を模式的に示すものである。
買気配１値段〜買気配５値段にも、値が順に小さくなっていくという規則性があるため、同じ圧縮グループに属するものとして、一まとめに圧縮処理される。
【００５９】
まず市況データ圧縮部12は、図８(a)及び(b)に示すように、買気配５値段〜買気配１値段の値である1861、1865、1866、1867、1868について、上記と同様の共通除数圧縮処理を施す。
ただし、図８(a)に示した例では各値段間に１０のｎ乗の最大公約数が存在しないため、圧縮前（図８(a)）と圧縮後（図８(b)）で値に変化は生じていない。
【００６０】
つぎに市況データ圧縮部12は、図８(c)に示すように、各値に対して順序差分圧縮処理を施す。
図８(b)の例では、買気配５値段が「1861」で最も小さいため、そのまま基準値として認定され、メモリ上に設定された「値」の項目32に充填される。これに対し買気配４値段は「1865」であり、基準値に対して「＋４」であるため、値として差分の「４」が格納される。また、買気配３値段は「1866」であり、買気配２の値に対して「＋１」であるため、値として差分の「１」が格納される。また、買気配２値段は「1867」であり、買気配３の値に対して「＋１」であるため、値として差分の「１」が格納される。さらに、買気配１値段は「1868」であり、買気配２値段に対して「＋１」であるため、値として差分の「１」が格納される。
【００６１】
「データ数」の項目33には、当該圧縮グループに属する項目の総数である「５」が設定されている。
また「基準値位置」の項目34には、先頭の項目（買気配５値段）を示す「０」が設定されている。
【００６２】
つぎに市況データ圧縮部12は、図８(d)に示すように、これまでの圧縮処理の結果を接続することにより、以下のビット列を生成する。
「100000101010010101110100010100110100001001001」（45bit）
まず先頭の「圧縮方法（2bit固定）」の項目35の「10」は、圧縮方法が「共通除数圧縮＋順序差分圧縮」であることを示す識別コードである。
また、次の「１０ｎのｎ（3bit固定）」の項目36は、共通除数圧縮における１０のｎ乗のｎを特定する値を記述する部分であり、今回は１０のｎ乗の最大公約数が存在しなかったため、「000」が充填されている。
【００６３】
「データ数／データ部」の項目38には、当該圧縮グループに含まれるデータ数である「５」の２進数表現である「101」が充填されている。
また、この「データ数／データ部」の項目38は可変bit幅であり、圧縮グループに含まれるデータ数の多寡に応じて桁数が変動するため、「データ数／データ部幅−１」の項目37に「データ数／データ部」に充填された値のbit幅を特定する3bit固定の数値が設定されている。図６(d)においては、「データ数／データ部」に3 bitの数値が充填されているため、「３−１＝２」を示す「010」が設定されている。
【００６４】
「基準値／データ部」の項目40には、当該圧縮グループにおける基準値であり「1861」の２進数表現である「11101000101」が充填されている。
また、この「基準値／データ部」は可変bit幅であり、基準値の大小に応じて桁数が変動するため、「基準値／データ部幅−１」の項目39に「基準値／データ部」に充填された値のbit 幅を特定する6 bit固定の数値が設定されている。図８(d)においては、「基準値／データ部」に11bitの数値が充填されているため、「１１−１＝１０」を示す「001010」が設定されている。
【００６５】
「後続データ／データ部」の項目43には、基準値が認定された項目以外の項目（具体的には「買気配４値段」〜「買気配１値段」）に係る順序差分圧縮の結果が、上から「100/001/001/001」のように縦一列に描画されているが、これらは実際には「100001001001」のように横一列にメモリ上に配置される。
【００６６】
なお、この「後続データ／データ部」の項目43に３bitが割り当てられているのは以下の理由による。まず、買気配４値段の基準値に対する差分が「４」であるため、２進数で表現する場合には「100」と３桁を必要とする。これに対し、買気配３値段と買気配４値段間の差分、買気配２値段と買気配３値段間の差分、買気配１値段と買気配２値段間の差分はそれぞれ「１」であるため、本来であれば１bitで表現可能であるが、同項目中の最大値である「100」に揃えるために、敢えて「001」の値が設定されている。
【００６７】
この「後続データ／データ部」は可変bit幅であり、項目相互間の差分の大小に応じて桁数が変動するため、「後続データ／データ部幅−１」の項目42に「後続データ／データ部」に充填された値のbit 幅を特定する数値が可変bit幅で設定されている。図８(d)においては、「後続データ／データ部」にそれぞれ3bitの数値が充填されているため、「３−１＝２」を示す「10」が設定されている。
【００６８】
さらに、この「後続データ／データ部幅−１」は可変bit幅であり、「後続データ／データ部」に充填された各数値の大小に応じて桁数が変動するため、「後続データ／データ部幅−１の表現幅−１」の項目41に「後続データ／データ部幅−１」に充填された値のbit幅を特定するビット列が３bit固定で設定されている。図８(d)においては、「後続データ／データ部幅−１」に2bitのビット列が充填されているため、「２−１＝１」を示す「001」が設定されている。
【００６９】
圧縮前の買気配５値段〜買気配１値段のデータ項目は、それぞれが64bit固定のデータ長を備えているため、合計で64×５＝320bitのデータ量に達していたところ、上記の圧縮処理を施すことにより、グループ全体で45bitにまで容量が低減されている。
【００７０】
図９は、現在値、始値、高値、安値の整数部の圧縮工程を模式的に示すものである。
これらの値段には、安値が最も安くなるという規則性が認められるため、同じ圧縮グループに属するものとして、一まとめに圧縮処理される。
【００７１】
まず市況データ圧縮部12は、図９(a)及び(b)に示すように、現在値〜安値の値である1869、1856、1876、1854について、上記と同様の共通除数圧縮処理を施す。
ただし、図９(a)に示した例では各値段間に１０のｎ乗の最大公約数が存在しないため、圧縮前（図９(a)）と圧縮後（図９(b)）で値に変化は生じていない。
【００７２】
つぎに市況データ圧縮部12は、図９(c)に示すように、各値に対して最小値差分圧縮処理を施す。
ここで「最小値差分圧縮」とは、同じ圧縮グループに属する項目の中で、最も値が小さくなる項目の値を基準値と認定し、それ以外の値をこの基準値との差分で表現する圧縮処理を意味しており、各項目の値が比較的近い範囲内に収まる場合に有効である。
【００７３】
図９(b)の例では、当然ながら安値が「1854」で最も小さいため、そのまま基準値として認定され、メモリ上に設定された「値」の項目32に充填される。これに対し現在値は「1869」であり、基準値に対して「＋15」であるため、値として差分の「15」が格納される。また、始値は「1856」であり、基準値に対して「＋２」であるため、値として差分の「２」が格納される。さらに、高値は「1876」であり、基準値に対して「＋22」であるため、値として差分の「22」が格納される。
【００７４】
「データ数」の項目33には、当該圧縮グループに属する値の総数である「４」が設定されている。
また「基準値位置」の項目34には、４番目の安値を示す「３（０から数えて４番目）」が設定されている。もっとも、この圧縮グループにおいては安値の値が必ず基準値として認定されるため、基準値位置の設定を省略することも可能である。
【００７５】
つぎに市況データ圧縮部12は、図９(d)に示すように、これまでの圧縮処理の結果を接続することにより、以下のビット列を生成する。
「0100001010000101011100111110010100011110001010110」（49bit）
まず先頭の「圧縮方法（2bit固定）」の項目35の「01」は、圧縮方法が「共通除数圧縮＋最小値差分圧縮」であることを示す識別コードである。
また、次の「１０ｎのｎ（3bit固定）」の項目36は、共通除数圧縮における１０のｎ乗のｎを特定する値を記述する部分であり、今回は１０のｎ乗の最大公約数が存在しなかったため、「000」が充填されている。
【００７６】
「データ数／データ部」の項目38には、当該圧縮グループに含まれるデータ数である「４」の２進数表現である「100」が充填されている。
また、この「データ数／データ部」の項目38は可変bit幅であり、圧縮グループに含まれるデータ数の多寡に応じて桁数が変動する可能性があるため、「データ数／データ部幅−１」の項目37に「データ数／データ部」に充填された値のbit幅を特定する3bit固定の数値が設定されている。図９(d)においては、「データ数／データ部」に3 bitのビット列が充填されているため、「３−１＝２」を示す「010」が設定されている。
【００７７】
「基準値／データ部」の項目40には、当該圧縮グループにおける基準値であり「1854」の２進数表現である「11100111110」が充填されている。
また、この「基準値／データ部」は可変bit幅であり、基準値の大小に応じて桁数が変動するため、「基準値／データ部幅−１」の項目39に「基準値／データ部」に充填された値のbit 幅を特定する6 bit固定の数値が設定されている。図９(d)においては、「基準値／データ部」に11bitの数値が充填されているため、「１１−１＝１０」を示す「001010」が設定されている。
【００７８】
「後続データ／データ部」の項目43には、基準値が認定された項目以外の項目（具体的には「現在値」「始値」「高値」）に係る最小値差分圧縮の結果が、上から「01111/00010/10110」のように縦一列に描画されているが、これらは実際には「011110001010110」のように横一列にメモリ上に配置される。
【００７９】
この「後続データ／データ部」は可変bit幅であり、基準値との差分の大小に応じて桁数が変動するため、「後続データ／データ部幅−１」の項目42に「後続データ／データ部」に充填された値のbit 幅を特定する数値が可変bit幅で設定されている。図９(d)においては、「後続データ／データ部」にそれぞれ5bitの数値が充填されているため、「５−１＝４」を示す「100」が設定されている。
【００８０】
さらに、この「後続データ／データ部幅−１」は可変bit幅であり、「後続データ／データ部」に充填された各数値の大小に応じて桁数が変動するため、「後続データ／データ部幅−１の表現幅−１」の項目41に「後続データ／データ部幅−１」に充填された値のbit幅を特定する数値が３bit固定で設定されている。図９(d)においては、「後続データ／データ部幅−１」に3bitの数値が充填されているため、「３−１＝２」を示す「010」が設定されている。
【００８１】
圧縮前の現在値、始値、高値、安値のデータ項目は、それぞれが64bit固定のデータ長を備えているため、合計で64×４＝256bitのデータ量に達していたところ、上記の圧縮処理を施すことにより、グループ全体で49bitにまで容量が低減されている。
【００８２】
図１０及び図１１は、現在値、始値、高値、安値、売気配１値段〜売気配５値段、買気配１値段〜買気配５値段の小数部の圧縮工程を模式的に示すものである。
これらの値段の小数部にはそれぞれ32bitが割り当てられているが、株式の取引所取引の場合には、実際には「00000…00000」のように「０」が32個分詰められているだけであるため、同じ圧縮グループに属するものとして、一まとめに圧縮処理される。
【００８３】
まず市況データ圧縮部12は、図１０(a)及び(b)に示すように、現在値〜買気配５値段の各値について、上記と同様の共通除数圧縮処理を施す。
ただし、図１０(a)に示すように、各値間に１０のｎ乗の最大公約数が存在しないため、圧縮前（図１０(a)）と圧縮後（図１０(b)）で値に変化は生じていない。
【００８４】
つぎに市況データ圧縮部12は、図１０(b)及び(c)に示すように、各値に対して最小値差分圧縮処理を施すが、全ての値が０であるため、ここでも各値に変化は生じない。
「データ数」の項目33には、当該圧縮グループに属する項目の総数である「14」が設定されている。
また「基準値位置」の項目34には、１番目の現在値を示す「０」が設定されている。
【００８５】
つぎに市況データ圧縮部12は、図１１に示すように、これまでの圧縮処理の結果を接続することにより、以下のビット列を生成する。
「0100001111100000000000000000000000000000」（40bit）
まず先頭の「圧縮方法（2bit固定）」の項目35の「01」は、圧縮方法が「共通除数圧縮＋最小値差分圧縮」であることを示す識別コードである。
また、次の「１０ｎのｎ（3bit固定）」の項目36は、共通除数圧縮における１０のｎ乗のｎを特定する値を記述する部分であり、今回は１０のｎ乗の最大公約数が存在しなかったため、「000」が充填されている。
【００８６】
「データ数／データ部」の項目38には、当該圧縮グループに含まれるデータ数である「14」の２進数表現である「1110」が充填されている。
また、この「データ数／データ部」の項目38は可変bit幅であり、圧縮グループに含まれるデータ項目数の多寡に応じて桁数が変動する可能性があるため、「データ数／データ部幅−１」の項目37に「データ数／データ部」に充填された値のbit幅を特定する3bit固定の数値が設定されている。図１１においては、「データ数／データ部」に4 bitの数値が充填されているため、「４−１＝３」を示す「011」が設定されている。
【００８７】
「基準値／データ部」の項目40には、当該圧縮グループにおける基準値である２進数の「0」が充填されている。
また、この「基準値／データ部」は可変bit幅であるため、「基準値／データ部幅−１」の項目39に「基準値／データ部」に充填された値のbit 幅を特定する6 bit固定の数値が設定されている。図１１においては、「基準値／データ部」に1bitの数値「0」が充填されているため、「１−１＝０」を示す「000000」が設定されている。
【００８８】
「後続データ／データ部」の項目43には、基準値が認定された項目以外の項目に係る最小値差分圧縮の結果が、「0/0/0/0/0/0/0/0/0/0/0/0/0」のように縦一列に０が13個並べられているが、これらは実際には「0000000000000」のように横一列にメモリ上に配置される。
また、「後続データ／データ部幅−１」の項目42には「0」が、「後続データ／データ部幅−１の表現幅−１」の項目41には「000」が設定されている。
【００８９】
「基準値位置／データ部」の項目45は、同じ圧縮グループに属する複数の項目の値間に規則性（一定の順序や一定の大小関係等）が存在しない場合に、基準値の位置を特定する値を可変bitで充填するためのものであり、「基準値位置／データ部幅−１」の項目44には、そのbit幅を特定する数値が3bit固定で充填される。ここでは、「基準値位置／データ部」に「0」が、「基準値位置／データ部幅−１」に「000」が設定されている。
【００９０】
圧縮前の各値段の小数部は、上記の通り、32 bit固定のデータ長を備えているため、合計で32×14＝448bitのデータ量に達していたところ、上記の圧縮処理を施すことにより、グループ全体で40bitにまで容量が低減されている。
【００９１】
図１２は、「売気配数量」の圧縮工程を模式的に示すものであり、売気配１数量〜売気配５数量は同じ圧縮グループに属するものとして、一まとめに圧縮処理される。
【００９２】
まず市況データ圧縮部12は、図１２(a)及び(b)に示すように、売気配１数量〜売気配５数量の値である1300、3000、4400、8700、7300について、共通除数圧縮処理を施す。
この場合は、各数量間に１０の２乗の最大公約数が存在しているため、圧縮前（図１２(a)）と圧縮後（図１２(b)）で値が変化している。
【００９３】
つぎに市況データ圧縮部12は、図１２(c)に示すように、各値に対して最小値差分圧縮処理を施す。
図１２(b)の例では、売気配１数量の値が「13」で最も小さいため、そのまま基準値として認定され、メモリ上に設定された「値」の項目32に充填される。これに対し売気配２数量は「30」であり、基準値に対して「＋17」であるため、値として差分の「17」が格納される。また、売気配３数量は「44」であり、売気配１数量の値に対して「＋31」であるため、値として差分の「31」が格納される。また、売気配４数量は「87」であり、売気配１数量の値に対して「＋74」であるため、値として差分の「74」が格納される。さらに、売気配５数量は「73」であり、売気配１数量の値に対して「＋60」であるため、値として差分の「60」が格納される。
【００９４】
「データ数」の項目33には、当該圧縮グループに属する項目の総数である「５」が設定されている。
また「基準値位置」の項目34には、先頭の項目（売気配１数量）を示す「０」が設定されている。
【００９５】
つぎに市況データ圧縮部12は、図１２(d)に示すように、これまでの圧縮処理の結果を接続することにより、以下のビット列を生成する。
「01010010101000011110101011000100010011111100101001111000000」（59bit）
まず先頭の「圧縮方法（2bit固定）」の項目35の「01」は、圧縮方法が「共通除数圧縮＋最小値差分圧縮」であることを示す識別コードである。
また、次の「１０ｎのｎ（3bit固定）」の項目36は、共通除数圧縮における１０のｎ乗のｎを特定する値を記述する部分であり、今回は１０の２乗の最大公約数が存在したため、「010」が充填されている。
【００９６】
「データ数／データ部」の項目38には、当該圧縮グループに含まれるデータ数である「５」の２進数表現である「101」が充填されている。
また、この「データ数／データ部」に3bitの数値が充填されているため、「データ数／データ部幅−１」の項目37には、「３−１＝２」を示す「010」が設定されている。
【００９７】
「基準値／データ部」の項目40には、当該圧縮グループにおける基準値「13」の２進数表現である「1101」が充填されている。
また、この「基準値／データ部」に４bitの数値が充填されているため、「基準値／データ部幅−１」の項目39には、「４−１＝３」を示す「000011」が設定されている。
【００９８】
「後続データ／データ部」の項目43には、基準値が認定された項目以外の項目（具体的には「売気配２数量」〜「売気配５数量」）に係る最小値差分圧縮の結果が、上から「0010001/0011111/1001010/0111100」のように縦一列に描画されているが、これらは実際には「0010001001111110010100111100」のように横一列にメモリ上に配置される。
【００９９】
この「後続データ／データ部」には７bit幅の数値が充填されているため、「後続データ／データ部幅−１」の項目42には、「７−１＝６」を示す「110」が設定されている。
さらに、この「後続データ／データ部幅−１」には３bit幅の数値が設定されているため、「後続データ／データ部幅−１の表現幅−１」の項目41には、「３−１＝２」を示す「010」が設定されている。
【０１００】
「基準値位置／データ部」の項目45には、売気配１数量の位置を表す「0」が設定されると共に、「基準値位置／データ部幅−１」の項目44には、「１−１＝０」を示す「000」が設定されている。
【０１０１】
圧縮前の売気配１数量〜売気配５数量のデータ項目は、それぞれが32bit固定のデータ長を備えているため、合計で32×５＝160bitのデータ量に達していたところ、上記の圧縮処理を施すことにより、グループ全体で59bitにまで容量が低減されている。
【０１０２】
図１３は、「買気配数量」の圧縮工程を模式的に示すものであり、買気配１数量〜買気配５数量は同じ圧縮グループに属するものとして、一まとめに圧縮処理される。
【０１０３】
まず市況データ圧縮部12は、図１３(a)及び(b)に示すように、買気配１数量〜買気配５数量の値である13100、5600、23100、3800、9700について、共通除数圧縮処理を施す。
この場合は、各数量間に１０の２乗の最大公約数が存在しているため、圧縮前（図１３(a)）と圧縮後（図１３(b)）で値が変化している。
【０１０４】
つぎに市況データ圧縮部12は、図１３(c)に示すように、各値に対して最小値差分圧縮処理を施す。
図１３(b)の例では、買気配４数量の値が「38」で最も小さいため、そのまま基準値として認定され、メモリ上に設定された「値」の項目32に充填される。これに対し買気配１数量は「131」であり、基準値に対して「＋93」であるため、値として差分の「93」が格納される。また、買気配２数量は「56」であり、基準値に対して「＋18」であるため、値として差分の「18」が格納される。また、買気配３数量は「231」であり、基準値に対して「＋193」であるため、値として差分の「193」が格納される。さらに、買気配５数量は「97」であり、基準値に対して「＋59」であるため、値として差分の「59」が格納される。
【０１０５】
「データ数」の項目33には、当該圧縮グループに属する項目の総数である「５」が設定されている。
また「基準値位置」の項目34には、買気配４数量を示す「３」が設定されている。
【０１０６】
つぎに市況データ圧縮部12は、図１３(d)に示すように、これまでの圧縮処理の内容及び結果に対応したビット列を、以下のように２進数の値で表現する圧縮処理を行う。
「010100101010001011001100101110101110100010010110000010011101100111」（66bit）
まず先頭の「圧縮方法（2bit固定）」の項目35の「01」は、圧縮方法が「共通除数圧縮＋最小値差分圧縮」であることを示す識別コードである。
また、次の「１０ｎのｎ（3bit固定）」の項目36は、共通除数圧縮における１０のｎ乗のｎを特定する値を記述する部分であり、今回は１０の２乗の最大公約数が存在したため、「010」が充填されている。
【０１０７】
「データ数／データ部」の項目38には、当該圧縮グループに含まれるデータ数である「５」の２進数表現である「101」が充填されている。
また、この「データ数／データ部」に3bitの数値が充填されているため、「３−１＝２」を示す「010」が設定されている。
【０１０８】
「基準値／データ部」の項目40には、当該圧縮グループにおける基準値であり「38」の２進数表現である「100110」が充填されている。
また、この「基準値／データ部」に６bitの数値が充填されているため、「基準値／データ部幅−１」の項目39には、「６−１＝５」を示す「000101」が設定されている。
【０１０９】
「後続データ／データ部」の項目43には、基準値が認定された項目以外の項目（具体的には「買気配１数量」〜「買気配３数量」、「買気配５数量」）に係る最小値差分圧縮の結果が、上から「01011101/00010010/11000001/00111011」のように縦一列に描画されているが、これらは実際には「01011101000100101100000100111011」のように横一列にメモリ上に配置される。
【０１１０】
この「後続データ／データ部」には８bit幅の数値が充填されているため、「後続データ／データ部幅−１」の項目42には、「８−１＝７」を示す「111」が設定されている。
さらに、この「後続データ／データ部幅−１」には３bit幅の数値が設定されているため、「後続データ／データ部幅−１の表現幅−１」の項目41には、「３−１＝２」を示す「010」が設定されている。
【０１１１】
「基準値位置／データ部」の項目45には、買気配４数量の位置を表す「11」が設定されると共に、「基準値位置／データ部幅−１」の項目44には、「２−１＝１」を示す「001」が設定されている。
【０１１２】
圧縮前の買気配１時刻〜買気配５時刻のデータ項目は、それぞれが32bit固定のデータ長を備えているため、合計で32×５＝160bitのデータ量に達していたところ、上記の圧縮処理を施すことにより、グループ全体で66bitにまで容量が低減されている。
【０１１３】
図１４は、「売気配時刻」の圧縮工程を模式的に示すものであり、売気配１時刻〜売気配５時刻は同じ圧縮グループに属するものとして、一まとめに圧縮処理される。
【０１１４】
まず市況データ圧縮部12は、図１４(a)及び(b)に示すように、売気配１時刻〜売気配５時刻の値である1335（13時35分）、1335、1335、1335、1335について、共通除数圧縮処理を施す。
この場合は、各時刻間に１０の２乗の最大公約数が存在していないため、圧縮前（図１４(a)）と圧縮後（図１４(b)）で値に変化が生じていない。
【０１１５】
つぎに市況データ圧縮部12は、各値の1335を以下の式に代入して分に換算した上で、図１４ (c)に示すように、最小値差分圧縮処理を施す。
（式）13×60＋35＝815
図１４(b)の例では、各値が1335で共通しているため、売気配１時刻の分換算の値「815」が基準値として認定され、メモリ上に設定された「値」の項目32に充填される。これに対し売気配２時刻〜売気配５時刻に関しては、差分として「0」が格納される。
【０１１６】
「データ数」の項目33には、当該圧縮グループに属する項目の総数である「５」が設定されている。
また「基準値位置」の項目34には、先頭の項目（売気配１時刻）を示す「０」が設定されている。
【０１１７】
つぎに市況データ圧縮部12は、図１４(d)に示すように、これまでの圧縮処理の結果を接続することにより、以下のビット列を生成する。
「010000101010010011100101111000000000000」（39bit）
まず先頭の「圧縮方法（2bit固定）」の項目35の「01」は、圧縮方法が「共通除数圧縮＋最小値差分圧縮」であることを示す識別コードである。
また、次の「１０ｎのｎ（3bit固定）」の項目36は、共通除数圧縮における１０のｎ乗のｎを特定する値を記述する部分であり、今回は１０の２乗の最大公約数が存在しないため、「000」が充填されている。
【０１１８】
「データ数／データ部」の項目38には、当該圧縮グループに含まれるデータ数である「５」の２進数表現である「101」が充填されている。
また、この「データ数／データ部」に3bitの数値が充填されているため、「３−１＝２」を示す「010」が設定されている。
【０１１９】
「基準値／データ部」の項目40には、当該圧縮グループにおける基準値であり「815」の２進数表現である「1100101111」が充填されている。
また、この「基準値／データ部」に10bitの数値が充填されているため、「基準値／データ部幅−１」の項目39には、「10−１＝９」を示す「001001」が設定されている。
【０１２０】
「後続データ／データ部」の項目43には、基準値が認定された項目以外の項目（具体的には「売気配２時刻」〜「売気配５時刻」）に係る最小値差分圧縮の結果が、上から「0/0/0/0」のように縦一列に描画されているが、これらは実際には「0000」のように横一列にメモリ上に配置される。
【０１２１】
この「後続データ／データ部」には１bit幅の数値が充填されているため、「後続データ／データ部幅−１」の項目42には、「１−１＝０」を示す「0」が設定されている。
さらに、この「後続データ／データ部幅−１」には１bit幅の数値が設定されているため、「後続データ／データ部幅−１の表現幅−１」の項目41には、「１−１＝０」を示す「000」が設定されている。
【０１２２】
「基準値位置／データ部」の項目45には、売気配１時刻の位置を表す「0」が設定されると共に、「基準値位置／データ部幅−１」の項目44には、「１−１＝０」を示す「000」が設定されている。
【０１２３】
圧縮前の売気配１時刻〜売気配５時刻のデータ項目は、それぞれが16bit固定のデータ長を備えているため、合計で16×５＝80bitのデータ量に達していたところ、上記の圧縮処理を施すことにより、グループ全体で39bitにまで容量が低減されている。
【０１２４】
図１５は、「買気配時刻」の圧縮工程を模式的に示すものであり、買気配１時刻〜買気配５時刻は同じ圧縮グループに属するものとして、一まとめに圧縮処理される。
【０１２５】
まず市況データ圧縮部12は、図１５(a)及び(b)に示すように、買気配１時刻〜買気配５時刻の値である1335（13時35分）、1335、1335、1335、1334（13時34分）について、共通除数圧縮処理を施す。
この場合は、各時刻間に１０の２乗の最大公約数が存在していないため、圧縮前（図１５(a)）と圧縮後（図１５(b)）で値に変化が生じていない。
【０１２６】
つぎに市況データ圧縮部12は、図１５ (c)に示すように、各値を分に換算した上で、最小値差分圧縮処理を施す。
図１５(b)の例では、買気配５時刻の値が1334で最も小さいため、買気配５時刻の分換算の値「814」が基準値として認定され、メモリ上に設定された「値」の項目32に充填される。これに対し買気配１時刻〜買気配４時刻に関しては、差分として「1」が格納される。
【０１２７】
「データ数」の項目33には、当該圧縮グループに属する項目の総数である「５」が設定されている。
また「基準値位置」の項目34には、買気配５時刻を示す「４」が設定されている。
【０１２８】
つぎに市況データ圧縮部12は、図１５(d)に示すように、これまでの圧縮処理の結果を接続することにより、以下のビット列を生成する。
「01000010101001001110010111000001111011100」（41bit）
まず先頭の「圧縮方法（2bit固定）」の項目35の「01」は、圧縮方法が「共通除数圧縮＋最小値差分圧縮」であることを示す識別コードである。
また、次の「１０ｎのｎ（3bit固定）」の項目36は、共通除数圧縮における１０のｎ乗のｎを特定する値を記述する部分であり、今回は１０の２乗の最大公約数が存在しないため、「000」が充填されている。
【０１２９】
「データ数／データ部」の項目38には、当該圧縮グループに含まれるデータ数である「５」の２進数表現である「101」が充填されている。
また、この「データ数／データ部」に3bitの数値が充填されているため、「３−１＝２」を示す「010」が設定されている。
【０１３０】
「基準値／データ部」の項目40には、当該圧縮グループにおける基準値であり「814」の２進数表現である「1100101110」が充填されている。
また、この「基準値／データ部」に10bitの数値が充填されているため、「基準値／データ部幅−１」の項目39には、「10−１＝９」を示す「001001」が設定されている。
【０１３１】
「後続データ／データ部」の項目43には、基準値が認定された項目以外の項目（具体的には「買気配１時刻」〜「買気配４時刻」）に係る最小値差分圧縮の結果が、上から「1/1/1/1」のように縦一列に描画されているが、これらは実際には「1111」のように横一列にメモリ上に配置される。
【０１３２】
この「後続データ／データ部」には１bit幅の数値が充填されているため、「後続データ／データ部幅−１」の項目42には、「１−１＝０」を示す「0」が設定されている。
さらに、この「後続データ／データ部幅−１」には１bit幅の数値が設定されているため、「後続データ／データ部幅−１の表現幅−１」の項目41には、「１−１＝０」を示す「000」が設定されている。
【０１３３】
「基準値位置／データ部」の項目45には、買気配５時刻の位置（４）を表す「100」が設定されると共に、「基準値位置／データ部幅−１」の項目44には、「４−１＝３」を示す「011」が設定されている。
【０１３４】
圧縮前の買気配１時刻〜買気配５時刻のデータ項目は、それぞれが16bit固定のデータ長を備えているため、合計で16×５＝80bitのデータ量に達していたところ、上記の圧縮処理を施すことにより、グループ全体で41bitにまで容量が低減されている。
【０１３５】
以下において、市況データ圧縮部12による圧縮処理の手順を整理する。
(1)市況データの中から、圧縮対象となるデータ項目の値を、予め設定された順番に従って取り出し、メモリ上にコピーする。
(2)各データ項目の値に対して、当該データ項目別に設定された圧縮方法に従い、順番に圧縮処理を施す。この際、圧縮グループが設定されているデータ項目については、まとめて圧縮処理を施す。
(3)必要なデータ項目に対する圧縮処理が完了した後、市況データ圧縮部12は、圧縮データに所定のファイル名（例えば、銘柄コード＋受信日時）を付加して圧縮データ記憶部14に格納する。
【０１３６】
上記の通り、市況データ圧縮部12による圧縮ロジックは、極めて単純な演算処理の組合せから構成されるため、圧縮処理の所要時間を飛躍的に短縮化することが可能となり、ミリ秒単位で発生する多数の市況データをほぼリアルタイムで圧縮することができる。
【図面の簡単な説明】
【０１３７】
【図１】この発明に係る市況データ圧縮システムの全体構成を示すブロック図である。
【図２】市況データの構成を示す説明図である。
【図３】「累積出来高」の圧縮工程を示す模式図である。
【図４】圧縮前の固定bit幅と「データ部幅−１」のbit幅との対応関係を表すテーブルである。
【図５】「累積約定金額」の圧縮工程を示す模式図である。
【図６】「売気配値段（整数部）」の圧縮工程を示す模式図である。
【図７】共通除数圧縮の具体例を示す模式図である。
【図８】「買気配値段（整数部）」の圧縮工程を示す模式図である。
【図９】「現在値、始値、高値、安値（整数部）」の圧縮工程を示す模式図である。
【図１０】各種値段の小数部の圧縮工程を示す模式図である。
【図１１】各種値段の小数部の圧縮工程を示す模式図である。
【図１２】「売気配数量」の圧縮工程を示す模式図である。
【図１３】「買気配数量」の圧縮工程を示す模式図である。
【図１４】「売気配時刻」の圧縮工程を示す模式図である。
【図１５】「買気配時刻」の圧縮工程を示す模式図である。
【符号の説明】
【０１３８】
10    市況データ圧縮システム
11    市況データ取得部
12    市況データ圧縮部
13    市況データ記憶部
14    圧縮データ記憶部
15    圧縮データ送信部
18    情報ベンダーのコンピュータ
19    証券取引所のホストコンピュータ
20    注文情報生成システム
21    圧縮データ解凍部
22    クライアント端末
23    市況データ記憶部
24    注文情報生成部
26    注文情報記憶部
25    圧縮データ解凍部
28    仮想取引システム
30    データ部
31    「データ部幅−１」の項目
32    「値」の項目
33    「データ数」の項目
34    「基準値位置」の項目
35    「圧縮方法（2bit固定）」の項目
36    「１０ｎのｎ（3bit固定）」の項目
37    「データ数／データ部幅−１」の項目
38    「データ数／データ部」の項目
39    「基準値／データ部幅−１」の項目
40    「基準値／データ部」の項目
41    「後続データ／データ部幅−１の表現幅−１」の項目
42    「後続データ／データ部幅−１」の項目
43    「後続データ／データ部」の項目
44    「基準値位置／データ部幅−１」の項目
45    「基準値位置／データ部」の項目
【図１】
2011010124.tif 000003
【図２】
2011010124.tif 000004
【図３】
2011010124.tif 000005
【図４】
2011010124.tif 000006
【図５】
2011010124.tif 000007
【図６】
2011010124.tif 000008
【図７】
2011010124.tif 000009
【図８】
2011010124.tif 000010
【図９】
2011010124.tif 000011
【図１０】
2011010124.tif 000012
【図１１】
2011010124.tif 000013
【図１２】
2011010124.tif 000014
【図１３】
2011010124.tif 000015
【図１４】
2011010124.tif 000016
【図１５】
2011010124.tif 000017