(57)【要約】  約定装置（１３）の取得部（２１）が、注文管理装置（１２）から銘柄ごとに、売り注文と買い注文の情報を取得する。そして、マッチング部（２２）が、売り注文と買い注文のマッチングを行う。このとき、マッチング部（２２）は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であればマッチングを行う。そして、約定価格決定部（３１）が、マッチング部（２２）によるマッチングに基づいて、マッチングごとに約定価格を決定する。
2020179072.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得し、
取得した売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定させ、
約定ごとに約定価格を決定する
処理を実行させることを特徴とする取引プログラム。
【請求項２】
前記約定させる処理は、約定数及び各約定数における売り注文と買い注文の組み合わせに関して全探索を行うことで売り注文と買い注文とを約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項３】
前記約定させる処理は、約定数に関しては全探索を行い、売り注文と買い注文の組み合わせに関してはランダムな選択を行いながら売り注文と買い注文とを約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項４】
前記約定させる処理は、分岐限定を用いて枝刈りを行いながら売り注文と買い注文とを約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項５】
前記約定させる処理は、売り注文と買い注文の組み合わせを１つ以上有する集合を１つの世代として遺伝的アルゴリズムを用いて売り注文と買い注文とを約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項６】
前記約定させる処理は、各売り指値を売り頂点、各買い指値を買い頂点とし、ソースから売り頂点への辺の容量を該売り頂点の売り指値の売り注文数とし、買い頂点からシンクへの辺の容量を該買い頂点の買い指値の注文数とし、売り頂点と買い頂点の間の辺の容量を無限とするネットワークにおいてソースからシンクに流す水を最大にする場合の各辺の流量を計算して約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項７】
前記約定させる処理は、最大約定数を特定し、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、抽出した売り注文と買い注文を安い順に約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項８】
前記最大約定数を特定する処理は、二分探索を用いて前記最大約定数を特定することを特徴とする請求項７に記載の取引プログラム。
【請求項９】
前記最大約定数を特定する処理は、売り注文と買い注文を安い方から順番にどちらかがなくなるまで参照して売り指値が買い指値以下の数を数えることで前記最大約定数を特定することを特徴とする請求項７に記載の取引プログラム。
【請求項１０】
コンピュータが、
売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得し、
取得した売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定させ、
約定ごとに約定価格を決定する
処理を実行することを特徴とする取引方法。
【請求項１１】
前記約定させる処理は、各売り指値を売り頂点、各買い指値を買い頂点とし、ソースから売り頂点への辺の容量を該売り頂点の売り指値の売り注文数とし、買い頂点からシンクへの辺の容量を該買い頂点の買い指値の注文数とし、売り頂点と買い頂点の間の辺の容量を無限とするネットワークにおいてソースからシンクに流す水を最大にする場合の各辺の流量を計算して約定させることを特徴とする請求項１０に記載の取引方法。
【請求項１２】
前記約定させる処理は、最大約定数を特定し、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、抽出した売り注文と買い注文を安い順に約定させることを特徴とする請求項１０に記載の取引方法。
【請求項１３】
売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得する取得部と、
前記取得部により取得された売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定させる約定部と、
前記約定部により約定された約定ごとに約定価格を決定する決定部と
を有することを特徴とする取引装置。
【請求項１４】
前記約定部は、各売り指値を売り頂点、各買い指値を買い頂点とし、ソースから売り頂点への辺の容量を該売り頂点の売り指値の売り注文数とし、買い頂点からシンクへの辺の容量を該買い頂点の買い指値の注文数とし、売り頂点と買い頂点の間の辺の容量を無限とするネットワークにおいてソースからシンクに流す水を最大にする場合の各辺の流量を計算して約定させることを特徴とする請求項１３に記載の取引装置。
【請求項１５】
前記約定部は、最大約定数を特定し、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、抽出した売り注文と買い注文を安い順に約定させることを特徴とする請求項１３に記載の取引装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、取引プログラム、取引方法及び取引装置に関する。
【背景技術】
【０００２】
株などの取引においては、板寄せとザラ場がある。板寄せとは、注文を受け付けてから売買開始までの注文をまとめ、売買を成立させて始値を決定する取引である。ザラ場とは、すでに発注されている注文と新たに発注された注文、あるいは、新たに発注された注文同士で売買を成立させる取引である。【０００３】
取引には、売り注文の売り指値及び売り注文数と買い注文の買い指値及び買い注文数を示す板情報が用いられる。図２８は、株取引における板情報の一例を示す図である。図２８において、中列は指値の価格、左列は価格に対応する売り注文の枚数、右列は価格に対応する買い注文の枚数を示す。ここで、１枚は単位株数である。例えば、１０２円を売り指値とする売り注文の枚数は４であり、１０２円を買い指値とする買い注文の枚数は３である。【０００４】
株取引の板寄せでは、約定装置は、売り注文の安い順、買い注文の高い順に順番に売り注文と買い注文を約定させる。そして、約定装置は、売り注文と買い注文が同一価格となったところで約定をやめ、この時の価格を現在値とする。そして、約定した全ての取引は全て現在値で行われる。【０００５】
図２９は、株取引の板寄せを説明するための図である。図２９に示すように、約定装置は、まず、９８円の売り４件と１０４円の買い４件を約定させる。次に、約定装置は、９９円の売り３件と１０２円の買い３件を約定させる。次に、約定装置は、９９円の売り２件と１０１円の買い２件を約定させる。そして、約定装置は、１００円の売り３件と１００円の買い３件を約定させ、約定を終了する。この場合、約定装置は、合計で１２件を１００円で約定させ、現在値を１００円とする。【０００６】
なお、従来技術として、投資家の利便性を改善し、オークション取引市場におけるシステムの負荷を低減する取引システムがある。この取引システムは、注文情報データベースと、オークション相場報道インタフェースと、価格情報データベースと、価格情報管理部と、注文情報管理部とを備える。【０００７】
注文情報データベースは、取引参加者識別情報と、金融商品の銘柄と、注文数量と、売買区分と、を指定した注文データを記憶する。オークション相場報道インタフェースは、オークション取引市場における金融商品の取引を管理するオークション取引市場システムから、オークション取引市場で約定した金融商品の銘柄と約定価格と数量とを記述した相場情報を受信する。価格情報データベースは、オークション相場報道インタフェースにより受信された相場情報を蓄積する。【０００８】
価格情報管理部は、相場情報が受信されるごとに受信された相場情報に記述された銘柄の金融商品の出来高加重平均価格を価格情報データベースに基づき計算する。そして、価格情報管理部は、第１の価格関係及び第２の関係のうちいずれか一方が成立するか否かを判定する。ここで、第１の関係は、今回計算された出来高加重平均価格が今回受信された相場情報に記述された約定価格より小さくかつ前回計算された出来高加重平均価格が前回受信された相場情報に記述された約定価格より大きい関係である。第２の関係は、今回計算された出来高加重平均価格が今回受信された相場情報に記述された約定価格より大きくかつ前回計算された出来高加重平均価格が前回受信された相場情報に記述された約定価格より小さい関係である。【０００９】
そして、注文情報管理部は、注文情報データベースにおいて第１の価格関係または第２の価格関係が成立した銘柄を指定した注文データの約定処理を執行し、約定した注文データの取引価格を今回受信された相場情報に記述された約定価格と同一価格に設定する。【００１０】
また、従来技術として、動的なアルゴリズム取引に用いられるアルゴリズム要素の膨大な組合せに対処し、オンライン取引を行うアルゴリズム取引システムがある。このアルゴリズム取引システムは、個別シミュレーション実行手段と、制御手段と、選別手段と、発注手段とを備える。【００１１】
個別シミュレーション実行手段は、アルゴリズム要素群における一のアルゴリズム要素による取引の個別シミュレーションを実行することにより、一の時間帯の約定結果を得る。制御手段は、一日の取引における全ての時間帯それぞれについてアルゴリズム要素群のそれぞれのアルゴリズム要素を適用し、時間帯数とアルゴリズム要素数との積に相当する回数の個別シミュレーションを行うよう個別シミュレーション実行手段を制御する。【００１２】
選別手段は、制御手段により制御された個別シミュレーション実行手段から得られる時間帯ごとの約定結果に基づいて、アルゴリズム要素の最良の組合せを選別する。発注手段は、選別手段により選別されたアルゴリズム要素の最良の組合せによりオンライン発注を行う。【００１３】
また、従来技術として、商品及び金融商品で構成される品目のグループの中から２つの品目を取引することを容易にするためのシステムがある。このシステムは、品目を取引することを望む少なくとも２つのエージェントと、取引の実行を可能にする該２エージェント間の取引チャンネルと、フロー制限と、中央コンピュータとで構成される。フロー制限には、取引される品目についてのフロー制限及び該取引される品目の精算時に交換されるべき何らかの基礎となる商品についてのフロー制限がある。中央コンピュータは、２エージェントに結合され、該エージェントのフロー制限に合わせて現在取引可能な買値付及び売値付の価格とサイズを各エージェントに通知する。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２０１１−１５０６５２号公報
【特許文献２】特開２０１１−２１５９０８号公報
【特許文献３】特表２００４−５３７０７６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
図２９に示した板寄せには、現在値より高い売り注文と、現在値より安い買い注文と、現在値の売り注文又は現在値の買い注文のいずれかとが決済されずに保留になるため、保留分は板に残ってしまい、約定数が少ないという問題がある。【００１６】
本発明は、１つの側面では、板寄せにおける約定数を増やすことを目的とする。
【課題を解決するための手段】
【００１７】
１つの態様では、取引プログラムは、コンピュータに、売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得する処理を実行させる。そして、取引プログラムは、コンピュータに、取得した売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定させる処理を実行させる。そして、取引プログラムは、コンピュータに、約定ごとに約定価格を決定する処理を実行させる。
【発明の効果】
【００１８】
本発明は、１つの側面では、板寄せにおける約定数を増やすことができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施例１に係る約定装置による板寄せの例を示す図である。
【図２】図２は、図１に示した約定の約定価格の設定例を示す図である。
【図３】図３は、図１に示した約定の次の株価の設定例を示す図である。
【図４】図４は、実施例１に係る取引システムの構成を示す図である。
【図５】図５は、約定装置による処理のフローを示すフローチャートである。
【図６】図６は、第１のマッチング方法によるマッチング例を示す図である。
【図７】図７は、第１のマッチング方法による処理のフローを示すフローチャートである。
【図８】図８は、第２のマッチング方法による約定例を示す図である。
【図９】図９は、第２のマッチング方法による処理のフローを示すフローチャートである。
【図１０】図１０は、第３のマッチング方法を説明するための図である。
【図１１】図１１は、第３のマッチング方法による処理のフローを示すフローチャートである。
【図１２】図１２は、交配ルールの一例を示す図である。
【図１３】図１３は、第４のマッチング方法による処理のフローを示すフローチャートである。
【図１４Ａ】図１４Ａは、ネットワークフローの最大フロー問題を説明するための図である。
【図１４Ｂ】図１４Ｂは、板のネットワークフローとしての定式化を説明するための図である。
【図１４Ｃ】図１４Ｃは、図１４Ｂに示したネットワークフローの最大フローを示す図である。
【図１５】図１５は、第５のマッチング方法による処理のフローを示すフローチャートである。
【図１６】図１６は、不利な価格の注文のより有利な価格の注文への置き換え例を示す図である。
【図１７】図１７は、買い注文を高い方からｋ件に寄せる例を示す図である。
【図１８】図１８は、交差の除去を説明するための図である。
【図１９Ａ】図１９Ａは、実施例２に係るマッチング部が最大約定数を特定する処理のフローを示すフローチャートである。
【図１９Ｂ】図１９Ｂは、ｍ件の約定が可能であるか否かを判定する処理のフローを示すフローチャートである。
【図２０】図２０は、株式取引の二部グラフ表現を説明するための図である。
【図２１】図２１は、最大約定数ｋの特定方法を説明するための図である。
【図２２】図２２は、優先度を満たす最大マッチングを示す図である。
【図２３】図２３は、最大約定数ｋの特定方法を説明するための図である
【図２４】図２４は、優先度を満たす最大マッチングを示す図である。
【図２５】図２５は、実施例３に係るマッチング部による処理のフローを示すフローチャートである。
【図２６】図２６は、実施例１〜実施例３に係るマッチング部による処理時間の例を示す図である。
【図２７】図２７は、実施例に係る約定プログラムを実行するコンピュータのハードウェア構成を示す図である。
【図２８】図２８は、株取引における板情報の一例を示す図である。
【図２９】図２９は、株取引の板寄せを説明するための図である。
【発明を実施するための形態】
【００２０】
以下に、本願の開示する取引プログラム、取引方法及び取引装置の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【実施例１】
【００２１】
まず、実施例１に係る約定装置による板寄せ方式について説明する。実施例１に係る約定装置は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であれば約定させる。ここで、投資家にとって有利な価格とは、売り注文の場合は売り指値より高く、買い注文の場合には買い指値より安い価格である。【００２２】
図１は、実施例１に係る約定装置による板寄せの例を示す図である。図１に示すように、実施例１に係る約定装置は、９８円売りの４件と９８円買いの４件、９９円売りの５件と１００円買いの５件、１００円売りの３件と１０２円買いの３件、１０３円売りの３件と１０４円買いの３件の合計１５件を約定させる。図２９に示した場合と比較して、実施例１に係る約定装置による板寄せ方式では、約定数が３件増える。【００２３】
このように、実施例１に係る約定装置による板寄せでは、どの売り注文とどの買い注文を約定させるかに自由度ができるため、約定数の最大化や約定値段差の最小化などの約定方式の選択が可能になる。また、実施例１に係る約定装置による板寄せでは、約定価格は売り指値以上買い指値以下の任意の値が設定可能である。例えば、売り指値をｓ円、買い指値をｂ（ｓ≦ｂ）円、現在値をｐ円とすると、実施例１に係る約定装置は、区間［ｓ，ｂ］にｐが含まれるなら約定価格もｐ円とし、区間［ｓ，ｂ］にｐが含まれないなら約定価格をｐ円に最も近い値とする。すなわち、実施例１に係る約定装置は、ｐ＜ｓであれば約定価格をｓ円、ｂ＜ｐであれば約定価格をｂ円とする。【００２４】
図２は、図１に示した約定の約定価格の設定例を示す図である。図２に示すように、９８円売りの４件と９８円買いの４件の約定価格は、ｓ＝９８、ｂ＝９８＜ｐ＝１００であるので、９８円であり、９９円売りの５件と１００円買いの５件の約定価格は、ｓ＝９９、ｂ＝１００＝ｐであるので、１００円である。また、１００円売りの３件と１０２円買いの３件の約定価格は、ｓ＝１００＝ｐ、ｂ＝１０２であるので、１００円であり、１０３円売りの３件と１０４円買いの３件の約定価格は、ｐ＜ｓ＝１０３、ｂ＝１０４であるので、１０３円である。【００２５】
また、実施例１に係る約定装置は、全ての約定価格の平均値を次の株価とする。図３は、図１に示した約定の次の株価の設定例を示す図である。図３に示すように、次の株価は、（９８×４＋１００×５＋１００×３＋１０３×３）／１５≒１００．０７円である。【００２６】
次に、実施例１に係る取引システムの構成について説明する。図４は、実施例１に係る取引システムの構成を示す図である。図４に示すように、実施例１に係る取引システム１は、受付装置１１と、注文管理装置１２と、約定装置１３とを有する。受付装置１１と注文管理装置１２と約定装置１３は内部ネットワーク２で接続される。【００２７】
受付装置１１は、注文情報を受け付け、注文管理装置１２に送信する。注文情報には、例えば、注文者を識別する注文者識別子、銘柄、売り買いの区別、指値、株数などが含まれる。受付装置１１は、例えば、外部ネットワークを介して情報処理装置から送信される注文情報を受信する。情報処理装置は、例えば、投資家がマウスやキーボードを用いて入力した注文に基づいて注文情報を送信する。【００２８】
また、受付装置１１は、注文管理装置１２から約定結果を受信して情報処理装置へ送信する。約定結果には、例えば、注文者識別子、銘柄、売り買いの区別、約定価格、約定株数などが含まれる。受付装置１１は、例えば、注文者識別子に対応付けられたＩＰアドレスを用いて、注文情報の送信元の情報処理装置に約定結果を送信する。【００２９】
注文管理装置１２は、注文情報を例えば注文を識別する注文識別子を付加して管理する。注文管理装置１２は、板寄せ開始までに受付装置１１により受け付けられた注文情報を全て記憶し、板寄せ開始時に、銘柄ごとに売り指値と売り注文数、買い指値と買い注文数を約定装置１３に送信する。【００３０】
また、注文管理装置１２は、銘柄ごとに約定情報を約定装置１３から受信し、注文情報を更新する。また、注文管理装置１２は、約定情報に基づいて約定結果を作成し、受付装置１１に送信する。約定情報には、１つ以上の約定について、例えば、売り指値、買い指値、約定価格、約定株数などが含まれる。【００３１】
約定装置１３は、板寄せにおいて、内部ネットワーク２を介して注文管理装置１２から、銘柄ごとに、売り注文と買い注文の情報を受信し、売り注文と買い注文を約定させ、約定価格と次の株価を決定する。各売り注文の情報には、売り指値と売り注文数が含まれ、各買い注文の情報には、買い指値と買い注文数が含まれる。また、約定装置１３は、内部ネットワーク２を介して、銘柄ごとに、約定情報を注文管理装置１２に送信する。【００３２】
約定装置１３は、取得部２１と、マッチング部２２と、価格決定部２３と、出力部２４とを有する。取得部２１は、内部ネットワーク２を介して注文管理装置１２から、銘柄ごとに、売り注文と買い注文の情報を受信する。【００３３】
マッチング部２２は、銘柄ごとに売り注文と買い注文のマッチングを行う。マッチング部２２は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であればマッチングを行う。なお、マッチング部２２によるマッチング方法の詳細については後述する。【００３４】
価格決定部２３は、マッチング部２２によるマッチングに基づいて、マッチングごとの約定価格と銘柄ごとの次の株価を決定する。価格決定部２３は、約定価格決定部３１と次価格決定部３２とを有する。【００３５】
約定価格決定部３１は、売り指値をｓ円、買い指値をｂ（ｓ≦ｂ）円、現在値をｐ円とすると、区間［ｓ，ｂ］にｐが含まれる場合には、約定価格もｐ円とする。一方、区間［ｓ，ｂ］にｐが含まれない場合には、約定価格決定部３１は、約定価格をｐ円に最も近い値、すなわち、ｐ＜ｓであれば約定価格をｓ円、ｂ＜ｐであれば約定価格をｂ円とする。【００３６】
次価格決定部３２は、約定価格決定部３１により決定された約定価格に基づいて、次の株価を決定する。例えば、次価格決定部３２は、全ての約定価格の平均値を次の株価とする。【００３７】
出力部２４は、銘柄ごとに約定情報を注文管理装置１２に内部ネットワーク２を介して送信する。【００３８】
次に、約定装置１３による処理のフローについて説明する。図５は、約定装置１３による処理のフローを示すフローチャートである。なお、約定装置１３は、銘柄ごとに図５に示す処理を行う。図５に示すように、約定装置１３は、板寄せの開始時に注文管理装置１２から売り注文と買い注文の情報を受信する（ステップＳ１）。【００３９】
そして、約定装置１３は、売買のマッチングを決定する（ステップＳ２）。約定装置１３は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であればマッチングを行う。そして、約定装置１３は、マッチングごとに約定価格を決定し（ステップＳ３）、次の株価を決定する（ステップＳ４）。そして、約定装置１３は、注文管理装置１２に、約定情報を送信する（ステップＳ５）。【００４０】
このように、約定装置１３は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であれば売買のマッチングを行い、マッチングごとに約定価格を決定するので、約定数を増やすことができる。【００４１】
次に、マッチング部２２によるマッチング方法の詳細について説明する。マッチング部２２は、以下の５つのマッチング方法のうちのいずれかのマッチング方法を用いて売り注文と買い注文のマッチングを行う。第１のマッチング方法では、マッチング部２２は、全探索によるマッチングを行う。【００４２】
具体的には、マッチング部２２は、売り注文ｊ件のリストＡと買い注文ｊ件のリストＢを作成する。そして、マッチング部２２は、Ａのｊ件とＢのｊ件の組み合わせを１つ選択し、ｊ件全てについて売り指値が買い指値以下である組み合わせをマッチング候補として記録する記録処理を行う。マッチング部２２は、この記録処理を、Ａのｊ件とＢのｊ件の組み合わせを変えながら全組み合わせについて実行する。さらに、マッチング部２２は、この記録処理を、Ａ又はＢを変更しながら、ＡとＢの全組み合わせてについて実行する。さらに、マッチング部２２は、この記録処理を、マッチング件数ｊを１からｕまで変化させながら行う。ここで、ｕは、売り注文数と買い注文数の小さい方である。【００４３】
そして、マッチング部２２は、マッチング候補の中から最適なマッチングを選択する。ここで、最適なマッチングとは、例えば、売り指値の平均が最も安い、買い指値の平均が最も高い、マッチング数が最大である、同一証券会社間のマッチングが少ないなどがある。【００４４】
図６は、第１のマッチング方法によるマッチング例を示す図である。図６では、ｊ＝１２である。図６では、９８円の４件の売り注文と９８円の４件の買い注文、９９円の５件の売り注文と１００円の５件の買い注文、１００円の２件の売り注文と１０１円の２件の買い注文、１０１円の１件の売り注文と１０２円の１件の買い注文が１つのマッチング候補である。【００４５】
図７は、第１のマッチング方法による処理のフローを示すフローチャートである。図７に示すように、マッチング部２２は、ｊを１とし（ステップＳ１１）、売り注文ｊ件のリストＡと買い注文ｊ件のリストＢを作成する（ステップＳ１２）。そして、マッチング部２２は、Ａのｊ件とＢのｊ件の組み合わせを１つ選択し（ステップＳ１３）、ｊ件全てについて売り指値が買い指値以下であるか否かを判定する（ステップＳ１４）。そして、マッチング部２２は、ｊ件全てについて売り指値が買い指値以下である場合には、選択した組み合わせをマッチング候補として記録する（ステップＳ１５）。【００４６】
そして、マッチング部２２は、Ａのｊ件とＢのｊ件の全組み合わせを選択したか否かを判定し（ステップＳ１６）、選択していない組み合わせがある場合には、ステップＳ１３へ戻る。一方、全組み合わせを選択した場合には、マッチング部２２は、ＡとＢの全組み合わせを選択したか否かを判定し（ステップＳ１７）、ＡとＢの組み合わせで選択していないものがある場合には、Ａ又はＢを変更し（ステップＳ１８）、ステップＳ１３へ戻る。【００４７】
一方、ＡとＢの全組み合わせを選択した場合には、マッチング部２２は、ｊに１を加え（ステップＳ１９）、ｊがｕ以下であるか否かを判定する（ステップＳ２０）。そして、マッチング部２２は、ｊがｕ以下である場合には、ステップＳ１２へ戻り、ｊがｕ以下でない場合には、マッチング候補から最適なマッチングを１つ選択する（ステップＳ２１）。【００４８】
このように、マッチング部２２は、全探索によるマッチングを行うことで、マッチング候補を特定することができる。【００４９】
第２のマッチング方法では、マッチング部２２は、ランダムな選択によるマッチングを行うことで売り注文と買い注文を約定させる。具体的には、マッチング部２２は、売り注文ｊ件のリストＡと買い注文ｊ件のリストＢを作成する。そして、マッチング部２２は、ＡとＢからランダムに１件ずつ選択して売り指値が買い指値以下であるかを判定し、ＡとＢのｊ件全てについて売り指値が買い指値以下である組み合わせをマッチング候補として記録する記録処理を行う。マッチング部２２は、この記録処理を、Ａ又はＢを変更しながら、ＡとＢの全組み合わせてについて実行する。さらに、マッチング部２２は、この記録処理を、マッチング件数ｊを１からｕまで変化させながら行う。そして、マッチング部２２は、マッチング候補の中から最適なマッチングを選択する。【００５０】
図８は、第２のマッチング方法による約定例を示す図である。図８では、ｊ＝１１である。図８では、９８円の２件の売り注文と１０１円の２件の買い注文、９９円の５件の売り注文と１００円の５件の買い注文、１００円の３件の売り注文と１０４円の３件の買い注文、１０１円の１件の売り注文と１０２円の１件の買い注文が１つのマッチング候補である。【００５１】
図９は、第２のマッチング方法による処理のフローを示すフローチャートである。図９に示すように、マッチング部２２は、ｊを１とし（ステップＳ３１）、売り注文ｊ件のリストＡと買い注文ｊ件のリストＢを作成する（ステップＳ３２）。そして、マッチング部２２は、Ａの１件とＢの１件をランダムに選択し（ステップＳ３３）、売り指値が買い指値以下であるか否かを判定する（ステップＳ３４）。なお、マッチング部２２は、選択した１件をＡ、Ｂから削除する。【００５２】
そして、マッチング部２２は、売り指値が買い指値以下でない場合には、ステップＳ３７へ進み、売り指値が買い指値以下である場合には、ｊ件全てについて当該判定を行ったか否かを判定する（ステップＳ３５）。そして、マッチング部２２は、当該判定を行っていない売り注文及び買い注文がＡ及びＢそれぞれにある場合には、ステップＳ３３に戻り、ｊ件全てについて当該判定を行った場合には、ランダムに選択したｊ件の組み合わせをマッチング候補として記録する（ステップＳ３６）。【００５３】
そして、マッチング部２２は、ＡとＢの全組み合わせを選択したか否かを判定し（ステップＳ３７）、ＡとＢの組み合わせで選択していないものがある場合には、Ａ又はＢを変更し（ステップＳ３８）、ステップＳ３３へ戻る。【００５４】
一方、ＡとＢの全組み合わせを選択した場合には、マッチング部２２は、ｊに１を加え（ステップＳ３９）、ｊがｕ以下であるか否かを判定する（ステップＳ４０）。そして、マッチング部２２は、ｊがｕ以下である場合には、ステップＳ３２へ戻り、ｊがｕ以下でない場合には、マッチング候補から最適なマッチングを１つ選択する（ステップＳ４１）。【００５５】
このように、マッチング部２２は、ランダムな選択によるマッチングを行うことで、マッチング候補を特定することができる。【００５６】
第３のマッチング方法では、マッチング部２２は、分岐限定法によるマッチングを行う。具体的には、マッチング部２２は、売り注文と買い注文のマッチングにおいて深さ優先探索を行い、ある探索点でより深い探索を行っても最適なマッチングは得られないと判定すると、より深い探索を行わない。【００５７】
図１０は、第３のマッチング方法を説明するための図である。図１０では、マッチング部２２は、１０２円の４件の売り注文と１０４円の４件の買い注文、１０１円の１件の売り注文と１０２円の１件の買い注文、１００円の２件の売り注文と１０１円の２件の買い注文の順に探索を行う。そして、マッチング部２２は、次に９８円の４件の売り注文と１００円の４件の買い注文を探索した際に、これ以上深い探索を行っても最適なマッチングは得られないと判定し、９８円の４件の売り注文と１００円の４件の買い注文を削除する。そして、９９円の５件の売り注文と１００円の５件の買い注文から次の探索を行う。【００５８】
図１１は、第３のマッチング方法による処理のフローを示すフローチャートである。図１１に示すように、マッチング部２２は、空のスタックＳ＝｛｝を作成し（ステップＳ５１）、Ｓの内容を精査して最適解が見つかる可能性があるか否かを判定する（ステップＳ５２）。【００５９】
そして、最適解が見つかる可能性があると判定した場合には、マッチング部２２は、まだマッチングしていない売り注文ｓと買い注文ｂが存在するか否かを判定し（ステップＳ５３）、存在する場合には、Ｓに（ｓ，ｂ）を追加し（ステップＳ５４）、ステップＳ５２へ戻る。一方、まだマッチングしていない売り注文ｓと買い注文ｂが存在しない場合には、マッチング部２２は、Ｓをマッチングと決定する（ステップＳ５５）。【００６０】
また、ステップＳ５２において最適解が見つかる可能性はないと判定した場合には、マッチング部２２は、Ｓの先頭を削除し（ステップＳ５６）、ステップＳ５２へ戻る。【００６１】
このように、マッチング部２２は、枝刈りをすることで探索効率を向上することができる。【００６２】
第４のマッチング方法では、マッチング部２２は、遺伝的アルゴリズムを用いて売り注文と買い注文のマッチングを行う。具体的には、マッチング部２２は、２つのマッチング案の交配ルールを決めておき、交配ルールによって２つのマッチング案を交配させ、次世代のマッチング案を作る。マッチング部２２は、次世代のマッチング案の作成を繰り返すことで、よりよいマッチング案を作成する。マッチング部２２は、例えば、数千世代のマッチング案を作成する。【００６３】
図１２は、交配ルールの一例を示す図である。図１２に示すように、マッチング部２２は、２つのマッチング案をまとめることで次世代のマッチング案を作る。ただし、２つのマッチング案をまとめることでマッチングがかち合う場合には、マッチング部２２は、調整する。例えば、図１２では、交配により、１０２円の４件の売り注文と１０４円の４件の買い注文のマッチングと、１０３円の３件の売り注文と１０４円の３件の買い注文のマッチングがかち合う。このような場合、マッチング部２２は、例えば、かち合わないように各マッチングの注文件数を減らすなどの調整を行う。【００６４】
図１３は、第４のマッチング方法による処理のフローを示すフローチャートである。図１３に示すように、マッチング部２２は、第一世代を生成する（ステップＳ６１）。マッチング部２２は、例えば、売り１件と買い１件によるマッチングを一定の数生成して第一世代とする。【００６５】
そして、マッチング部２２は、前世代の２個体をランダムに選んで交配させて次の世代を生成する（ステップＳ６２）。そして、マッチング部２２は、マッチングを吟味し、より優れたものを残す（ステップＳ６３）。そして、マッチング部２２は、所定の世代に到達したか否かを判定し（ステップＳ６４）、到達していない場合には、ステップＳ６２に戻り、到達した場合には、所定の世代をマッチング結果とする。【００６６】
第５のマッチング方法では、マッチング部２２は、板をネットワークフローとして定式化することで、マッチング数を最大化するマッチングを行う。図１４Ａは、ネットワークフローの最大フロー問題を説明するための図である。図１４Ａに示すように、最大フロー問題とは、グラフの辺に沿って頂点ｓ（ソース）から頂点ｔ（シンク）までできるだけ多く水を流すには、どの辺にどのくらいの量を流すようにすればよいかを求める問題である。ただし、図１４Ａ（ａ）に示すように、各辺には水を流せる最大容量が設定されている。図１４Ａ（ｂ）は、解を示し、各辺の分数は、分母が容量で分子が流量である。図１４Ａ（ｂ）では、ｓからｔまで最大１０の水が流れる。【００６７】
図１４Ｂは、板のネットワークフローとしての定式化を説明するための図である。図１４Ｂに示すように、マッチング部２２は、ｓ（ソース）、ｔ（シンク）、売り指値、買い指値に応じた頂点を作成する。そして、マッチング部２２は、売り頂点と買い頂点との間の容量は∞（制約なし）とし、ｓから売り頂点への辺の容量は、売り頂点の売り指値の売り注文数とし、買い頂点からｔへの辺の容量は、買い頂点の買い指値の買い注文数とする。【００６８】
図１４Ｂでは、ｓから９８円の売り頂点への辺の容量は５でり、ｓから９９円の売り頂点への辺の容量は０であり、ｓから１００円の売り頂点への辺の容量は３である。また、ｓから１０１円の売り頂点への辺の容量は２であり、ｓから１０２円の売り頂点への辺の容量は１である。【００６９】
同様に、９８円の買い頂点からｔへの辺の容量は１であり、９９円の買い頂点からｔへの辺の容量は４であり、１００円の買い頂点からｔへの辺の容量は１０である。また、１０１円の買い頂点からｔへの辺の容量は２であり、１０２円の買い頂点からｔへの辺の容量は３である。【００７０】
図１４Ｃは、図１４Ｂに示したネットワークフローの最大フローを示す図である。図１４Ｃでは、各辺の流量がマッチング数を示し、マッチング数の合計は１１である。例えば、９８円売りの１件と９８円買いの１件、９８円売りの４件と９９円買いの４件、１００円売りの３件と１００円買いの３件、１０１円売りの２件と１０１円買いの２件、１０２円売りの１件と１０２円買いの１件の合計１１件のマッチングが行われる。【００７１】
マッチング部２２は、最大フロー問題を解くアルゴリズムとして、Ｈｏｐｃｒｏｆｔ−Ｋａｒｐ、Ｄｉｎｉｃ、Ｅｄｍｏｎｄｓ−Ｋａｒｐなどのアルゴリズムを用いる。頂点数をＶ、辺数をＥとすると、Ｈｏｐｃｒｏｆｔ−Ｋａｒｐの計算量はＯ（Ｅ√Ｖ）であり、Ｄｉｎｉｃの計算量はＯ（Ｖ2Ｅ）であり、Ｅｄｍｏｎｄｓ−Ｋａｒｐの計算量はＯ（ＶＥ2）である。【００７２】
図１５は、第５のマッチング方法による処理のフローを示すフローチャートである。図１５に示すように、マッチング部２２は、売り注文と買い注文をもとにネットワークフローを作成する（ステップＳ７１）。そして、マッチング部２２は、最大フローを生成し（ステップＳ７２）、最大フローの流量からマッチングを抽出する（ステップＳ７３）。【００７３】
このように、マッチング部２２は、板をネットワークフローとしての定式化することで、マッチング数が最大のマッチングを特定することができる。【００７４】
上述してきたように、実施例１では、約定装置１３の取得部２１が、注文管理装置１２から銘柄ごとに、売り注文と買い注文の情報を取得する。そして、マッチング部２２が、売り注文と買い注文のマッチングを行う。このとき、マッチング部２２は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であればマッチングを行う。そして、約定価格決定部３１が、マッチング部２２によるマッチングに基づいて、マッチングごとに約定価格を決定する。したがって、約定装置１３は、板寄せにおける約定数を増やすことができる。【００７５】
また、実施例では、マッチング部２２は、全探索を行うので、売り注文と買い注文のマッチングを行うことができる。【００７６】
また、実施例では、マッチング部２２は、売り注文と買い注文をランダムに選択してマッチングを行うので、売り注文と買い注文のマッチングを行うことができる。【００７７】
また、実施例では、マッチング部２２は、マッチングの探索において枝刈りを行うので、最適なマッチングを効率よく特定することができる。【００７８】
また、実施例では、マッチング部２２は、遺伝的アルゴリズムを用いてマッチングを行うので、優れた特徴を備えるマッチングを特定することができる。【００７９】
また、実施例では、マッチング部２２は、板をネットワークフローとして定式化することで、マッチングを行うので、マッチング数が最大であるマッチングを特定することができる。
【実施例２】
【００８０】
ところで、売り注文と買い注文のマッチングにおいて、不利な価格の注文が残っている場合、マッチングのペアを構成する注文をより有利な価格の注文に置き換えることができる。ここで、有利な価格とは、売り注文では安い価格を表し、買い注文では高い価格を表す。有利な価格の注文は優先的に約定される。【００８１】
図１６は、不利な価格の注文のより有利な価格の注文への置き換え例を示す図である。図１６（ａ）は、あるマッチングを示し、図１６（ｂ）は、より有利な価格の注文を消化するマッチングを示す。図１６（ａ）に示すマッチングでは、９６円売りの１件と９６円買いの１件のマッチング、９９円売りの１件と９９円買いの１件のマッチングがある。【００８２】
この２件のマッチングは、図１６（ｂ）に示すように、売り注文はより安い売り注文に置き換え、買い注文はより高い買い注文に置き換えることによって、より有利な価格のマッチングに置き換えられる。すなわち、９６円売りの１件と９６円買いの１件のマッチングは、９６円売りの１件と９９円買いの１件のマッチングに置き換えられ、９９円売りの１件と９９円買いの１件のマッチングは、９７円売りの１件と９９円買いの１件のマッチングに置き換えられる。【００８３】
すなわち、マッチングできる最大約定数ｋを特定することができれば、有利な価格を全消化するマッチングを特定することができる。そこで、実施例２では、まずｋを特定し、ｋの特定後に売り注文と買い注文のマッチングを決定するマッチング部２２について説明する。【００８４】
実施例２に係るマッチング部２２は、売り注文を安い方から全てマッチングさせる。マッチング相手の買い注文は、ｓ円の売り注文に対して、ｓ円以上の最小の買い注文とする。そして、実施例２に係るマッチング部２２は、買い注文が尽きてマッチングできなくなったときのマッチング数をｋとする。そして、実施例２に係るマッチング部２２は、買い注文を高い方からｋ件に寄せる。【００８５】
図１７は、買い注文を高い方からｋ件に寄せる例を示す図である。図１７では、ｋ＝２であり、９３円売りの１件とマッチングがとれた９５円買いの１件が、９８円買いの１件に寄せられる。【００８６】
実施例２に係るマッチング部２２は、二分探索を用いてｋを特定する。例えば、ｌ件がマッチングし、ｒ(＞ｌ)件はマッチングしない場合に、実施例２に係るマッチング部２２は、次に（ｌ＋ｒ）／２件がマッチングするかを判定する。そして、実施例２に係るマッチング部２２は、マッチングする場合には、次にｌを（ｌ＋ｒ）／２で置き換え、マッチングしない場合には、ｒを（ｌ＋ｒ）／２で置き換える。このような処理をｌとｒが連続する数になるまで繰り返すことによって、実施例２に係るマッチング部２２は、ｋを特定する。【００８７】
なお、実施例２に係るマッチング部２２は、交差は除去する。図１８は、交差の除去を説明するための図である。交差とは、２つのマッチングｓ1円売りとｂ1円買い、ｓ2円売りとｂ2円買いがあって、ｓ1≦ｓ2、ｂ1≧ｂ2となっている場合である。このような交差がある場合、マッチング部２２は、ｓ1円売りとｂ2円買い、ｓ2円売りとｂ1円買いに変更することで交差を除去する。【００８８】
図１８に示す交差除去が可能であるためには、交差除去後のマッチング成立条件ｓ2≦ｂ1、ｓ1≦ｂ2が成立すればよい。除去前のマッチング成立条件からｓ1≦ｂ1、ｓ2≦ｂ2であるので、ｓ2≦ｂ2≦ｂ1、ｓ1≦ｓ2≦ｂ2が成立し、ｓ1≦ｓ2≦ｂ2≦ｂ1が成立する。すなわち、ｓ2≦ｂ1、ｓ1≦ｂ2が成立する。【００８９】
図１９Ａは、実施例２に係るマッチング部２２が最大約定数を特定する処理のフローを示すフローチャートである。図１９Ａに示すように、実施例２に係るマッチング部２２は、ｌ＝０、ｒ＝（売り注文数と買い注文数の最大値）＋１とする（ステップＳ８１）。【００９０】
そして、実施例２に係るマッチング部２２は、ｒとｌ＋１が等しいか否かを判定し（ステップＳ８２）、ｒとｌ＋１が等しくない場合には、ｍ＝（ｌ＋ｒ）／２とする（ステップＳ８３）。そして、実施例２に係るマッチング部２２は、ｍ件の約定は可能か否かを判定し（ステップＳ８４）、ｍ件の約定が可能である場合には、ｌの値をｍで置き換え（ステップＳ８５）、ｍ件の約定が可能でない場合には、ｒの値をｍで置き換える（ステップＳ８６）。そして、実施例２に係るマッチング部２２は、ステップＳ８２へ戻る。【００９１】
また、ステップＳ８２において、ｒとｌ＋１が等しい場合には、実施例２に係るマッチング部２２は、ｌを最大約定数として特定する（ステップＳ８７）。【００９２】
図１９Ｂは、ｍ件の約定が可能であるか否かを判定する処理のフローを示すフローチャートである。実施例２に係るマッチング部２２は、売り注文のうち安い方からｍ件の売り指値をｓ1≦ｓ2≦・・・≦ｓmとし、買い注文のうち高い方からｍ件の買い指値をｂ1≦ｂ2≦・・・≦ｂmとする（ステップＳ９１）。【００９３】
そして、実施例２に係るマッチング部２２は、ｓiがｂi以下であるか否かを判定する（ステップＳ９２）処理を、ｉを１から１ずつ増加しながら繰り返し、ｓiがｂi以下でないｉを見つけた場合には、ｍ件の約定は可能でないと判定する（ステップＳ９３）。一方、ｉをｍまで増加させてもｓiがｂi以下である場合には、実施例２に係るマッチング部２２は、ｍ件の約定は可能であると判定する（ステップＳ９４）。【００９４】
このように、実施例２に係るマッチング部２２は、二分探索を用いて最大約定数を特定するので、効率よく最大約定数を特定することができる。【００９５】
上述してきたように、実施例２に係るマッチング部２２は、二分探索を用いて最大約定数ｋを特定する。そして、実施例２に係るマッチング部２２は、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、抽出した売り注文と買い注文を安い順にマッチングさせる。したがって、実施例２に係るマッチング部２２は、売り注文と買い注文を高速にマッチングさせて約定させることができる。
【実施例３】
【００９６】
実施例３では、二分探索を用いて最大約定数ｋを特定したが、マッチング部２２は、二部グラフを用いて最大約定数ｋを特定してもよい。そこで、二部グラフを用いて最大約定数ｋを特定するマッチング部２２について説明する。【００９７】
図２０は、株式取引の二部グラフ表現を説明するための図である。図２０（ａ）は板の例を示し、図２０（ｂ）は図２０（ａ）の二部グラフ表現を示し、図２０（ｃ）は指値の重複を重みで表現した場合を示す。【００９８】
図２０（ｂ）に示すように、株式取引の二部グラフ表現は、売り指値を示す頂点集合と買い指値を示す頂点集合から成る。また、株式取引の二部グラフ表現では、売り指値≦買い指値である頂点間にのみ辺が存在する。【００９９】
実施例３に係るマッチング部２２は、各頂点集合から辺を共有する頂点ペアを頂点の重複がないように選択するとき、頂点ペアの数の最大値を最大約定数ｋとして特定する。図２１は、最大約定数ｋの特定方法を説明するための図である。【０１００】
実施例３に係るマッチング部２２は、売り注文、買い注文の最安値を示す頂点から開始し、売り注文、又は、買い注文の頂点がなくなるまで頂点を進める処理を繰り返すことで最大約定数ｋを特定する。頂点を進める処理では、実施例３に係るマッチング部２２は、売り指値と買い指値を比較し、売り指値＞買い指値の場合には買い注文の頂点を進め、売り指値≦買い指値の場合にはｋの値を＋１し、両方の注文の頂点を進める。なお、ｋの初期値は０である。【０１０１】
図２１（ａ）に示すように、実施例３に係るマッチング部２２は、頂点を進める処理を９５円売りと９３円買いから開始する。そして、実施例３に係るマッチング部２２は、売り指値９５円と買い指値９３円を比較し、売り指値＞買い指値であるので、買い注文の頂点を進め、図２１（ｂ）に示すように、買い注文の頂点を９５円買いとする。【０１０２】
そして、実施例３に係るマッチング部２２は、売り指値９５円と買い指値９５円を比較し、売り指値≦買い指値であるので、ｋの値を＋１し、両方の注文の頂点を進め、図２１（ｃ）に示すように、売り注文の頂点を９６円売りとし、買い注文の頂点を次の９５円買いとする。同様の処理を繰り返すことで、図２１（ｄ）に示すように、買い注文の頂点がなくなり、実施例３に係るマッチング部２２は、ｋ＝５を特定する。【０１０３】
そして、実施例３に係るマッチング部２２は、売り注文の頂点を売り指値が安い順にｋ個抽出し、買い注文の頂点を買い指値が高い順にｋ個抽出する。そして、実施例３に係るマッチング部２２は、指値が小さい順に頂点ペアを作成することで優先度を満たす最大マッチングを特定する。ここで、優先度は、売り指値では安いほど高く、買い指値では高いほど高い。【０１０４】
図２２は、優先度を満たす最大マッチングを示す図である。図２２に示すように、売り注文の頂点は９５円から９７円まで安い順に５個抽出され、買い注文の頂点は９９円から９５円まで高い順に５個抽出される。そして、指値が小さい順に、売り指値９５円と買い指値９５円、売り指値９６円と買い指値９６円、売り指値９７円と買い指値９８円、売り指値９７円と買い指値９９円、売り指値９７円と買い指値９９円の５個の頂点ペアが作成される。【０１０５】
図２０（ｃ）に戻って、指値の重複を重みで表現した場合は、二部グラフ表現は、売り指値と重みを示す頂点集合と買い指値と重みを示す頂点集合から成る。この場合にも、売り指値≦買い指値である頂点間にのみ辺が存在する。【０１０６】
実施例３に係るマッチング部２２は、各頂点集合から辺を共有する頂点ペアを頂点の重複が重み以下になるように選択するとき、頂点ペアの数の最大値を最大約定数ｋとして特定する。図２３は、最大約定数ｋの特定方法を説明するための図である。【０１０７】
実施例３に係るマッチング部２２は、売り注文、買い注文の最安値を示す頂点から開始し、売り注文、又は、買い注文の頂点がなくなるまで頂点を進める処理を繰り返すことで最大約定数ｋを特定する。頂点を進める処理では、実施例３に係るマッチング部２２は、売り指値と買い指値を比較し、売り指値＞買い指値の場合には買い注文の頂点を進め、売り指値≦買い指値の場合にはｋの値を＋１し、両方の重みを−１し、重みが０になった場合、注文の頂点を進める。なお、ｋの初期値は０である。【０１０８】
図２３（ａ）に示すように、実施例３に係るマッチング部２２は、頂点を進める処理を９５円売りと９３円買いから開始する。そして、実施例３に係るマッチング部２２は、売り指値９５円と買い指値９３円を比較し、売り指値＞買い指値であるので、買い注文の頂点を進め、図２３（ｂ）に示すように、買い注文の頂点を９５円買いとする。【０１０９】
そして、実施例３に係るマッチング部２２は、売り指値９５円と買い指値９５円を比較し、売り指値≦買い指値であるので、ｋの値を＋１し、両方の重みを−１する。すると、売り指値９５円の重みが０になるので、実施例３に係るマッチング部２２は、売り注文の頂点を進め、図２３（ｃ）に示すように、売り注文の頂点を９６円売りとする。同様の処理を繰り返すことで、図２３（ｄ）に示すように、買い注文の頂点がなくなり、実施例３に係るマッチング部２２は、ｋ＝５を特定する。【０１１０】
そして、実施例３に係るマッチング部２２は、売り注文の頂点を売り指値が安い順に重みの合計がｋになるように抽出し、買い注文の頂点を買い指値が高い順に重みの合計がｋになるように抽出する。そして、実施例３に係るマッチング部２２は、指値が小さい順に重みの制限の下に頂点ペアを作成することで優先度を満たす最大マッチングを特定する。【０１１１】
図２４は、優先度を満たす最大マッチングを示す図である。図２４に示すように、売り注文の頂点は９５円から９７円まで安い順に３個抽出され、買い注文の頂点は９９円から９５円まで高い順に４個抽出される。そして、指値が小さい順に、売り指値９５円と買い指値９５円、売り指値９６円と買い指値９６円、売り指値９７円と買い指値９８円、売り指値９７円と買い指値９９円の４個の頂点ペアが作成される。売り指値９５円と買い指値９５円の頂点ペアの重みは１であり、売り指値９６円と買い指値９６円の頂点ペアの重みは１であり、売り指値９７円と買い指値９８円の頂点ペアの重みは１であり、売り指値９７円と買い指値９９円の頂点ペアの重みは２である。【０１１２】
図２５は、実施例３に係るマッチング部２２による処理のフローを示すフローチャートである。図２５に示すように、実施例３に係るマッチング部２２は、初期化処理を行う（ステップＳ１０１）。初期化処理には、売り注文の指値によるソート、買い注文の指値によるソート、カウンタの初期化（値を０とする）がある。【０１１３】
そして、実施例３に係るマッチング部２２は、売り注文の売り指値と買い注文の買い指値を取得する（ステップＳ１０２）。ここで、実施例３に係るマッチング部２２は、現在参照している注文の指値を取得する。最初は、最も安い売り指値の注文と最も安い買い指値の注文が参照される。【０１１４】
そして、実施例３に係るマッチング部２２は、買い指値は売り指値以上であるか否かを判定し（ステップＳ１０３）、買い指値が売り指値以上でない場合には、ステップＳ１０７へ進む。一方、買い指値が売り指値以上である場合には、実施例３に係るマッチング部２２は、カウンタを１増加し（ステップＳ１０４）、次の売り注文を参照する（ステップＳ１０５）。【０１１５】
そして、実施例３に係るマッチング部２２は、売り注文があるか否かを判定し（ステップＳ１０６）、売り注文がない場合には、ステップＳ１０９へ進み、売り注文がある場合には、次の買い注文を参照する（ステップＳ１０７）。そして、実施例３に係るマッチング部２２は、買い注文があるか否かを判定し（ステップＳ１０８）、買い注文がある場合には、ステップＳ１０２へ戻る。【０１１６】
一方、買い注文がない場合には、実施例３に係るマッチング部２２は、売り注文を安い順にカウンタの値分抽出し（ステップＳ１０９）、買い注文を高い順にカウンタの値分抽出する（ステップＳ１１０）。そして、実施例３に係るマッチング部２２は、抽出した売り注文と買い注文を安い順にマッチングさせる（ステップＳ１１１）。【０１１７】
このように、実施例３に係るマッチング部２２は、カウンタを用いて最大約定数を特定し、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、安い順にマッチングさせる。したがって、実施例３に係るマッチング部２２は、売り注文と買い注文を高速にマッチングさせることができる。【０１１８】
二部グラフに関して一般的な最大マッチングアルゴリズムの計算量はＯ（ＥＶ）であるが、実施例３に係るマッチング部２２によるマッチングの計算量はＯ（Ｖ）である。ここで、Ｅは辺の数であり、Ｖは頂点の数である。また、二部グラフに関して一般的な最大マッチングアルゴリズムでは優先度を含めることはできないが、実施例３に係るマッチング部２２によるマッチングでは優先度を含めることができる。【０１１９】
上述してきたように、実施例３に係るマッチング部２２は、売り注文と買い注文を安い方から順番にどちらかがなくなるまで参照して売り指値が買い指値以下の数を数えることで最大約定数を特定するので、高速に最大約定数を特定することができる。【０１２０】
図２６は、実施例１〜実施例３に係るマッチング部２２による処理時間の例を示す図である。実施例１では、第５のマッチング方法が用いられる。横軸は指値数である。縦軸は、処理時間（秒）であり、基数が１０の対数軸である。図２６に示すように、実施例３に係るマッチング部２２の処理時間が最も短く、実施例２に係るマッチング部２２の処理時間が次に短い。【０１２１】
なお、実施例１〜３では、約定装置１３について説明したが、約定装置１３が有する構成をソフトウェアによって実現することで、同様の機能を有する約定プログラムを得ることができる。そこで、約定プログラムを実行するコンピュータについて説明する。【０１２２】
図２７は、実施例に係る約定プログラムを実行するコンピュータのハードウェア構成を示す図である。図２７に示すように、コンピュータ５０は、メインメモリ５１と、ＣＰＵ（Central  Processing  Unit）５２と、ＬＡＮ（Local  Area  Network）インタフェース５３と、ＨＤＤ（Hard  Disk  Drive）５４とを有する。また、コンピュータ５０は、スーパーＩＯ（Input  Output）５５と、ＤＶＩ（Digital  Visual  Interface）５６と、ＯＤＤ（Optical  Disk  Drive）５７とを有する。【０１２３】
メインメモリ５１は、プログラムやプログラムの実行途中結果等を記憶するメモリである。ＣＰＵ５２は、メインメモリ５１からプログラムを読み出して実行する中央処理装置である。ＣＰＵ５２は、メモリコントローラを有するチップセットを含む。【０１２４】
ＬＡＮインタフェース５３は、コンピュータ５０をＬＡＮ経由で他のコンピュータに接続するためのインタフェースである。ＨＤＤ５４は、プログラムやデータを格納するディスク装置であり、スーパーＩＯ５５は、マウスやキーボード等の入力装置を接続するためのインタフェースである。ＤＶＩ５６は、液晶表示装置を接続するインタフェースであり、ＯＤＤ５７は、ＤＶＤの読み書きを行う装置である。【０１２５】
ＬＡＮインタフェース５３は、ＰＣＩエクスプレス（ＰＣＩｅ）によりＣＰＵ５２に接続され、ＨＤＤ５４及びＯＤＤ５７は、ＳＡＴＡ（Serial  Advanced  Technology  Attachment）によりＣＰＵ５２に接続される。スーパーＩＯ５５は、ＬＰＣ（Low  Pin  Count）によりＣＰＵ５２に接続される。【０１２６】
そして、コンピュータ５０において実行される約定プログラムは、コンピュータ５０により読み出し可能な記録媒体の一例であるＤＶＤに記憶され、ＯＤＤ５７によってＤＶＤから読み出されてコンピュータ５０にインストールされる。あるいは、約定プログラムは、ＬＡＮインタフェース５３を介して接続された他のコンピュータシステムのデータベース等に記憶され、これらのデータベースから読み出されてコンピュータ５０にインストールされる。そして、インストールされた約定プログラムは、ＨＤＤ５４に記憶され、メインメモリ５１に読み出されてＣＰＵ５２によって実行される。【０１２７】
また、実施例では、取引システム１が受付装置１１と注文管理装置１２と約定装置１３とを有する場合について説明したが、受付装置１１と注文管理装置１２と約定装置１３の機能を１つにまとめて取引装置を構成してもよい。あるいは、受付装置１１と注文管理装置１２の機能を１つにまとめるなど、任意の２つの機能を１つにまとめて１つの装置としてもよい。【０１２８】
また、実施例では、株を取引する場合について説明したが、取引システム１は、他の有価証券や品物を取引してもよい。
【符号の説明】
【０１２９】
１    取引システム
２    内部ネットワーク
１１    受付装置
１２    注文管理装置
１３    約定装置
２１    取得部
２２    マッチング部
２３    価格決定部
２４    出力部
３１    約定価格決定部
３２    次価格決定部
５０    コンピュータ
５１    メインメモリ
５２    ＣＰＵ
５３    ＬＡＮインタフェース
５４    ＨＤＤ
５５    スーパーＩＯ
５６    ＤＶＩ
５７    ＯＤＤ
【図１】
2020179072.tif 000003
【図２】
2020179072.tif 000004
【図３】
2020179072.tif 000005
【図４】
2020179072.tif 000006
【図５】
2020179072.tif 000007
【図６】
2020179072.tif 000008
【図７】
2020179072.tif 000009
【図８】
2020179072.tif 000010
【図９】
2020179072.tif 000011
【図１０】
2020179072.tif 000012
【図１１】
2020179072.tif 000013
【図１２】
2020179072.tif 000014
【図１３】
2020179072.tif 000015
【図１４Ａ】
2020179072.tif 000016
【図１４Ｂ】
2020179072.tif 000017
【図１４Ｃ】
2020179072.tif 000018
【図１５】
2020179072.tif 000019
【図１６】
2020179072.tif 000020
【図１７】
2020179072.tif 000021
【図１８】
2020179072.tif 000022
【図１９Ａ】
2020179072.tif 000023
【図１９Ｂ】
2020179072.tif 000024
【図２０】
2020179072.tif 000025
【図２１】
2020179072.tif 000026
【図２２】
2020179072.tif 000027
【図２３】
2020179072.tif 000028
【図２４】
2020179072.tif 000029
【図２５】
2020179072.tif 000030
【図２６】
2020179072.tif 000031
【図２７】
2020179072.tif 000032
【図２８】
2020179072.tif 000033
【図２９】
2020179072.tif 000034
【手続補正書】
【提出日】令和3年6月1日(2021.6.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータに、
売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得し、
取得した売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定させ、
約定ごとに約定価格を決定する
処理を実行させることを特徴とする取引プログラム。
【請求項２】
前記約定させる処理は、約定数及び各約定数における売り注文と買い注文の組み合わせに関して全探索を行うことで売り注文と買い注文とを約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項３】
前記約定させる処理は、約定数に関しては全探索を行い、売り注文と買い注文の組み合わせに関してはランダムな選択を行いながら売り注文と買い注文とを約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項４】
前記約定させる処理は、分岐限定を用いて枝刈りを行いながら売り注文と買い注文とを約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項５】
前記約定させる処理は、売り注文と買い注文の組み合わせを１つ以上有する集合を１つの世代として遺伝的アルゴリズムを用いて売り注文と買い注文とを約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項６】
前記約定させる処理は、各売り指値を売り頂点、各買い指値を買い頂点とし、ソースから売り頂点への辺の容量を該売り頂点の売り指値の売り注文数とし、買い頂点からシンクへの辺の容量を該買い頂点の買い指値の注文数とし、売り頂点と買い頂点の間の辺の容量を無限とするネットワークにおいてソースからシンクに流す水を最大にする場合の各辺の流量を計算して約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項７】
前記約定させる処理は、最大約定数を特定し、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、抽出した売り注文と買い注文を安い順に約定させることを特徴とする請求項１に記載の取引プログラム。
【請求項８】
前記最大約定数を特定する処理は、二分探索を用いて前記最大約定数を特定することを特徴とする請求項７に記載の取引プログラム。
【請求項９】
前記最大約定数を特定する処理は、売り注文と買い注文を安い方から順番にどちらかがなくなるまで参照して売り指値が買い指値以下の数を数えることで前記最大約定数を特定することを特徴とする請求項７に記載の取引プログラム。
【請求項１０】
コンピュータが、
売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得し、
取得した売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定させ、
約定ごとに約定価格を決定する
処理を実行することを特徴とする取引方法。
【請求項１１】
売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得する取得部と、
前記取得部により取得された売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定させる約定部と、
前記約定部により約定された約定ごとに約定価格を決定する決定部と
を有することを特徴とする取引装置。
【国際調査報告】
2020179072.tif 000035
2020179072.tif 000036
2020179072.tif 000037
2020179072.tif 000038