IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-16
(45)【発行日】2023-01-24
(54)【発明の名称】取引プログラム、取引方法及び取引装置
(51)【国際特許分類】
   G06Q 40/04 20120101AFI20230117BHJP
【FI】
G06Q40/04
【請求項の数】 13
(21)【出願番号】P 2021503382
(86)(22)【出願日】2019-03-07
(86)【国際出願番号】 JP2019009197
(87)【国際公開番号】W WO2020179072
(87)【国際公開日】2020-09-10
【審査請求日】2021-06-01
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】清水 俊宏
(72)【発明者】
【氏名】本田 巧
(72)【発明者】
【氏名】中村 章仁
(72)【発明者】
【氏名】小崎 資広
(72)【発明者】
【氏名】桑原 章紘
【審査官】山内 裕史
(56)【参考文献】
【文献】特開2007-206962(JP,A)
【文献】国際公開第2008/087834(WO,A1)
【文献】特開2007-164783(JP,A)
【文献】特開2015-232795(JP,A)
【文献】特開2002-269349(JP,A)
【文献】特開2001-319064(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00 - 99/00
(57)【特許請求の範囲】
【請求項1】
コンピュータに、売り注文と買い注文との組および約定価格を決定する取引処理を複数回実行させるプログラムであって、
前記取引処理は、
売り指値を示す第1の価格ごとの売り注文数と買い指値を示す第2の価格ごとの買い注文数を取得する処理と
取得した前記第1の価格ごとの売り注文数と前記第2の価格ごとの買い注文数に基づいて、売り注文と買い注文の組のうち前記第1の価格前記第2の価格以下である組を約定する処理と
約定ごとに約定価格を決定する処理と
決定された複数の前記約定価格の加重平均値を求め、求められた前記加重平均値を用いて、現在値を更新する処理と、
を含み、
前記プログラムは前記コンピュータに、更新した前記現在値を用いて次に実行される前記取引処理を実行させる
ことを特徴とする取引プログラム。
【請求項2】
前記約定価格を決定する処理において、
現在値を示す第3の価格が前記第1の価格と前記第2の価格との間に含まれる場合には、前記第3の価格が前記約定価格として決定し、
前記第3の価格が前記第1の価格と前記第2の価格との間に含まれない場合には、前記第1の価格と前記第2の価格とのうち、前記第3の価格に最も近い価格が前記約定価格として決定する
ことを特徴とする請求項1に記載の取引プログラム。
【請求項3】
前記約定する処理は、約定数及び各約定数における売り注文と買い注文の組み合わせに関して全探索を行うことで売り注文と買い注文とを約定させることを特徴とする請求項1に記載の取引プログラム。
【請求項4】
前記約定る処理は、約定数に関しては全探索を行い、売り注文と買い注文の組み合わせに関してはランダムな選択を行いながら売り注文と買い注文とを約定させることを特徴とする請求項1に記載の取引プログラム。
【請求項5】
前記約定する処理は、分岐限定を用いて枝刈りを行いながら売り注文と買い注文とを約定させることを特徴とする請求項1に記載の取引プログラム。
【請求項6】
前記約定る処理は、売り注文と買い注文の組み合わせを1つ以上有する集合を1つの世代として遺伝的アルゴリズムを用いて売り注文と買い注文とを約定させることを特徴とする請求項1に記載の取引プログラム。
【請求項7】
前記約定る処理は、各売り指値を売り頂点、各買い指値を買い頂点とし、ソースから売り頂点への辺の容量を該売り頂点の売り指値の売り注文数とし、買い頂点からシンクへの辺の容量を該買い頂点の買い指値の注文数とし、売り頂点と買い頂点の間の辺の容量を無限とするネットワークにおいてソースからシンクに流す水を最大にする場合の各辺の流量を計算して約定させることを特徴とする請求項1に記載の取引プログラム。
【請求項8】
前記約定る処理は、最大約定数を特定し、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、抽出した売り注文と買い注文を安い順に約定させることを特徴とする請求項1に記載の取引プログラム。
【請求項9】
前記最大約定数を特定する処理は、二分探索を用いて前記最大約定数を特定することを特徴とする請求項に記載の取引プログラム。
【請求項10】
前記最大約定数を特定する処理は、売り注文と買い注文を安い方から順番にどちらかがなくなるまで参照して売り指値が買い指値以下の数を数えることで前記最大約定数を特定することを特徴とする請求項に記載の取引プログラム。
【請求項11】
コンピュータに、
売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得し、
取得した売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定する処理と、
約定ごとに約定価格を決定する処理とを実行させ、
前記約定する処理は、
各売り指値を売り頂点、各買い指値を買い頂点とし、ソースから売り頂点への辺の容量を該売り頂点の売り指値の売り注文数とし、買い頂点からシンクへの辺の容量を該買い頂点の買い指値の注文数とし、売り頂点と買い頂点の間の辺の容量を無限とするネットワークにおいてソースからシンクに流す水を最大にする場合の各辺の流量を計算して約定させる
ことを特徴とする取引プログラム。
【請求項12】
コンピュータが、売り注文と買い注文との組および約定価格を決定する取引処理を複数回実行する方法であって、
前記取引処理は、
売り指値を示す第1の価格ごとの売り注文数と買い指値を示す第2の価格ごとの買い注文数を取得する処理と、
取得した前記第1の価格ごとの売り注文数と前記第2の価格ごとの買い注文数に基づいて、売り注文と買い注文の組のうち前記第1の価格が前記第2の価格以下である組を約定する処理と、
約定ごとに約定価格を決定する処理と、
決定された複数の前記約定価格の加重平均値を求め、求められた前記加重平均値を用いて、現在値を更新する処理と、
を含み、
前記方法は前記コンピュータが、更新した前記現在値を用いて次に実行される前記取引処理を実行する
ことを特徴とする取引方法
【請求項13】
売り注文と買い注文との組および約定価格を決定する取引処理を複数回実行する装置であって、
前記取引処理は、
売り指値を示す第1の価格ごとの売り注文数と買い指値を示す第2の価格ごとの買い注文数を取得する取得部と、
取得した前記第1の価格ごとの売り注文数と前記第2の価格ごとの買い注文数に基づいて、売り注文と買い注文の組のうち前記第1の価格が前記第2の価格以下である組を約定する約定部と、
約定ごとに約定価格を決定する約定価格決定部と、
決定された複数の前記約定価格の加重平均値を求め、求められた前記加重平均値を用いて、現在値を更新する更新部と、
により実行され、
前記装置は、更新した前記現在値を用いて次に実行される前記取引処理を実行する
ことを特徴とする取引装置
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、取引プログラム、取引方法及び取引装置に関する。
【背景技術】
【0002】
株などの取引においては、板寄せとザラ場がある。板寄せとは、注文を受け付けてから売買開始までの注文をまとめ、売買を成立させて始値を決定する取引である。ザラ場とは、すでに発注されている注文と新たに発注された注文、あるいは、新たに発注された注文同士で売買を成立させる取引である。
【0003】
取引には、売り注文の売り指値及び売り注文数と買い注文の買い指値及び買い注文数を示す板情報が用いられる。図28は、株取引における板情報の一例を示す図である。図28において、中列は指値の価格、左列は価格に対応する売り注文の枚数、右列は価格に対応する買い注文の枚数を示す。ここで、1枚は単位株数である。例えば、102円を売り指値とする売り注文の枚数は4であり、102円を買い指値とする買い注文の枚数は3である。
【0004】
株取引の板寄せでは、約定装置は、売り注文の安い順、買い注文の高い順に順番に売り注文と買い注文を約定させる。そして、約定装置は、売り注文と買い注文が同一価格となったところで約定をやめ、この時の価格を現在値とする。そして、約定した全ての取引は全て現在値で行われる。
【0005】
図29は、株取引の板寄せを説明するための図である。図29に示すように、約定装置は、まず、98円の売り4件と104円の買い4件を約定させる。次に、約定装置は、99円の売り3件と102円の買い3件を約定させる。次に、約定装置は、99円の売り2件と101円の買い2件を約定させる。そして、約定装置は、100円の売り3件と100円の買い3件を約定させ、約定を終了する。この場合、約定装置は、合計で12件を100円で約定させ、現在値を100円とする。
【0006】
なお、従来技術として、投資家の利便性を改善し、オークション取引市場におけるシステムの負荷を低減する取引システムがある。この取引システムは、注文情報データベースと、オークション相場報道インタフェースと、価格情報データベースと、価格情報管理部と、注文情報管理部とを備える。
【0007】
注文情報データベースは、取引参加者識別情報と、金融商品の銘柄と、注文数量と、売買区分と、を指定した注文データを記憶する。オークション相場報道インタフェースは、オークション取引市場における金融商品の取引を管理するオークション取引市場システムから、オークション取引市場で約定した金融商品の銘柄と約定価格と数量とを記述した相場情報を受信する。価格情報データベースは、オークション相場報道インタフェースにより受信された相場情報を蓄積する。
【0008】
価格情報管理部は、相場情報が受信されるごとに受信された相場情報に記述された銘柄の金融商品の出来高加重平均価格を価格情報データベースに基づき計算する。そして、価格情報管理部は、第1の価格関係及び第2の関係のうちいずれか一方が成立するか否かを判定する。ここで、第1の関係は、今回計算された出来高加重平均価格が今回受信された相場情報に記述された約定価格より小さくかつ前回計算された出来高加重平均価格が前回受信された相場情報に記述された約定価格より大きい関係である。第2の関係は、今回計算された出来高加重平均価格が今回受信された相場情報に記述された約定価格より大きくかつ前回計算された出来高加重平均価格が前回受信された相場情報に記述された約定価格より小さい関係である。
【0009】
そして、注文情報管理部は、注文情報データベースにおいて第1の価格関係または第2の価格関係が成立した銘柄を指定した注文データの約定処理を執行し、約定した注文データの取引価格を今回受信された相場情報に記述された約定価格と同一価格に設定する。
【0010】
また、従来技術として、動的なアルゴリズム取引に用いられるアルゴリズム要素の膨大な組合せに対処し、オンライン取引を行うアルゴリズム取引システムがある。このアルゴリズム取引システムは、個別シミュレーション実行手段と、制御手段と、選別手段と、発注手段とを備える。
【0011】
個別シミュレーション実行手段は、アルゴリズム要素群における一のアルゴリズム要素による取引の個別シミュレーションを実行することにより、一の時間帯の約定結果を得る。制御手段は、一日の取引における全ての時間帯それぞれについてアルゴリズム要素群のそれぞれのアルゴリズム要素を適用し、時間帯数とアルゴリズム要素数との積に相当する回数の個別シミュレーションを行うよう個別シミュレーション実行手段を制御する。
【0012】
選別手段は、制御手段により制御された個別シミュレーション実行手段から得られる時間帯ごとの約定結果に基づいて、アルゴリズム要素の最良の組合せを選別する。発注手段は、選別手段により選別されたアルゴリズム要素の最良の組合せによりオンライン発注を行う。
【0013】
また、従来技術として、商品及び金融商品で構成される品目のグループの中から2つの品目を取引することを容易にするためのシステムがある。このシステムは、品目を取引することを望む少なくとも2つのエージェントと、取引の実行を可能にする該2エージェント間の取引チャンネルと、フロー制限と、中央コンピュータとで構成される。フロー制限には、取引される品目についてのフロー制限及び該取引される品目の精算時に交換されるべき何らかの基礎となる商品についてのフロー制限がある。中央コンピュータは、2エージェントに結合され、該エージェントのフロー制限に合わせて現在取引可能な買値付及び売値付の価格とサイズを各エージェントに通知する。
【先行技術文献】
【特許文献】
【0014】
【文献】特開2011-150652号公報
【文献】特開2011-215908号公報
【文献】特表2004-537076号公報
【発明の概要】
【発明が解決しようとする課題】
【0015】
図29に示した板寄せには、現在値より高い売り注文と、現在値より安い買い注文と、現在値の売り注文又は現在値の買い注文のいずれかとが決済されずに保留になるため、保留分は板に残ってしまい、約定数が少ないという問題がある。
【0016】
本発明は、1つの側面では、板寄せにおける約定数を増やすことを目的とする。
【課題を解決するための手段】
【0017】
1つの態様では、取引プログラムは、コンピュータに、売り指値ごとの売り注文数と買い指値ごとの買い注文数を取得する処理を実行させる。そして、取引プログラムは、コンピュータに、取得した売り指値ごとの売り注文数と買い指値ごとの買い注文数に基づいて、売り注文と買い注文の組のうち該売り注文の売り指値が該買い注文の買い指値以下である組を約定させる処理を実行させる。そして、取引プログラムは、コンピュータに、約定ごとに約定価格を決定する処理を実行させる。
【発明の効果】
【0018】
本発明は、1つの側面では、板寄せにおける約定数を増やすことができる。
【図面の簡単な説明】
【0019】
図1図1は、実施例1に係る約定装置による板寄せの例を示す図である。
図2図2は、図1に示した約定の約定価格の設定例を示す図である。
図3図3は、図1に示した約定の次の株価の設定例を示す図である。
図4図4は、実施例1に係る取引システムの構成を示す図である。
図5図5は、約定装置による処理のフローを示すフローチャートである。
図6図6は、第1のマッチング方法によるマッチング例を示す図である。
図7図7は、第1のマッチング方法による処理のフローを示すフローチャートである。
図8図8は、第2のマッチング方法による約定例を示す図である。
図9図9は、第2のマッチング方法による処理のフローを示すフローチャートである。
図10図10は、第3のマッチング方法を説明するための図である。
図11図11は、第3のマッチング方法による処理のフローを示すフローチャートである。
図12図12は、交配ルールの一例を示す図である。
図13図13は、第4のマッチング方法による処理のフローを示すフローチャートである。
図14A図14Aは、ネットワークフローの最大フロー問題を説明するための図である。
図14B図14Bは、板のネットワークフローとしての定式化を説明するための図である。
図14C図14Cは、図14Bに示したネットワークフローの最大フローを示す図である。
図15図15は、第5のマッチング方法による処理のフローを示すフローチャートである。
図16図16は、不利な価格の注文のより有利な価格の注文への置き換え例を示す図である。
図17図17は、買い注文を高い方からk件に寄せる例を示す図である。
図18図18は、交差の除去を説明するための図である。
図19A図19Aは、実施例2に係るマッチング部が最大約定数を特定する処理のフローを示すフローチャートである。
図19B図19Bは、m件の約定が可能であるか否かを判定する処理のフローを示すフローチャートである。
図20図20は、株式取引の二部グラフ表現を説明するための図である。
図21図21は、最大約定数kの特定方法を説明するための図である。
図22図22は、優先度を満たす最大マッチングを示す図である。
図23図23は、最大約定数kの特定方法を説明するための図である
図24図24は、優先度を満たす最大マッチングを示す図である。
図25図25は、実施例3に係るマッチング部による処理のフローを示すフローチャートである。
図26図26は、実施例1~実施例3に係るマッチング部による処理時間の例を示す図である。
図27図27は、実施例に係る約定プログラムを実行するコンピュータのハードウェア構成を示す図である。
図28図28は、株取引における板情報の一例を示す図である。
図29図29は、株取引の板寄せを説明するための図である。
【発明を実施するための形態】
【0020】
以下に、本願の開示する取引プログラム、取引方法及び取引装置の実施例を図面に基づいて詳細に説明する。なお、実施例は開示の技術を限定するものではない。
【実施例1】
【0021】
まず、実施例1に係る約定装置による板寄せ方式について説明する。実施例1に係る約定装置は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であれば約定させる。ここで、投資家にとって有利な価格とは、売り注文の場合は売り指値より高く、買い注文の場合には買い指値より安い価格である。
【0022】
図1は、実施例1に係る約定装置による板寄せの例を示す図である。図1に示すように、実施例1に係る約定装置は、98円売りの4件と98円買いの4件、99円売りの5件と100円買いの5件、100円売りの3件と102円買いの3件、103円売りの3件と104円買いの3件の合計15件を約定させる。図29に示した場合と比較して、実施例1に係る約定装置による板寄せ方式では、約定数が3件増える。
【0023】
このように、実施例1に係る約定装置による板寄せでは、どの売り注文とどの買い注文を約定させるかに自由度ができるため、約定数の最大化や約定値段差の最小化などの約定方式の選択が可能になる。また、実施例1に係る約定装置による板寄せでは、約定価格は売り指値以上買い指値以下の任意の値が設定可能である。例えば、売り指値をs円、買い指値をb(s≦b)円、現在値をp円とすると、実施例1に係る約定装置は、区間[s,b]にpが含まれるなら約定価格もp円とし、区間[s,b]にpが含まれないなら約定価格をp円に最も近い値とする。すなわち、実施例1に係る約定装置は、p<sであれば約定価格をs円、b<pであれば約定価格をb円とする。
【0024】
図2は、図1に示した約定の約定価格の設定例を示す図である。図2に示すように、98円売りの4件と98円買いの4件の約定価格は、s=98、b=98<p=100であるので、98円であり、99円売りの5件と100円買いの5件の約定価格は、s=99、b=100=pであるので、100円である。また、100円売りの3件と102円買いの3件の約定価格は、s=100=p、b=102であるので、100円であり、103円売りの3件と104円買いの3件の約定価格は、p<s=103、b=104であるので、103円である。
【0025】
また、実施例1に係る約定装置は、全ての約定価格の平均値を次の株価とする。図3は、図1に示した約定の次の株価の設定例を示す図である。図3に示すように、次の株価は、(98×4+100×5+100×3+103×3)/15≒100.07円である。
【0026】
次に、実施例1に係る取引システムの構成について説明する。図4は、実施例1に係る取引システムの構成を示す図である。図4に示すように、実施例1に係る取引システム1は、受付装置11と、注文管理装置12と、約定装置13とを有する。受付装置11と注文管理装置12と約定装置13は内部ネットワーク2で接続される。
【0027】
受付装置11は、注文情報を受け付け、注文管理装置12に送信する。注文情報には、例えば、注文者を識別する注文者識別子、銘柄、売り買いの区別、指値、株数などが含まれる。受付装置11は、例えば、外部ネットワークを介して情報処理装置から送信される注文情報を受信する。情報処理装置は、例えば、投資家がマウスやキーボードを用いて入力した注文に基づいて注文情報を送信する。
【0028】
また、受付装置11は、注文管理装置12から約定結果を受信して情報処理装置へ送信する。約定結果には、例えば、注文者識別子、銘柄、売り買いの区別、約定価格、約定株数などが含まれる。受付装置11は、例えば、注文者識別子に対応付けられたIPアドレスを用いて、注文情報の送信元の情報処理装置に約定結果を送信する。
【0029】
注文管理装置12は、注文情報を例えば注文を識別する注文識別子を付加して管理する。注文管理装置12は、板寄せ開始までに受付装置11により受け付けられた注文情報を全て記憶し、板寄せ開始時に、銘柄ごとに売り指値と売り注文数、買い指値と買い注文数を約定装置13に送信する。
【0030】
また、注文管理装置12は、銘柄ごとに約定情報を約定装置13から受信し、注文情報を更新する。また、注文管理装置12は、約定情報に基づいて約定結果を作成し、受付装置11に送信する。約定情報には、1つ以上の約定について、例えば、売り指値、買い指値、約定価格、約定株数などが含まれる。
【0031】
約定装置13は、板寄せにおいて、内部ネットワーク2を介して注文管理装置12から、銘柄ごとに、売り注文と買い注文の情報を受信し、売り注文と買い注文を約定させ、約定価格と次の株価を決定する。各売り注文の情報には、売り指値と売り注文数が含まれ、各買い注文の情報には、買い指値と買い注文数が含まれる。また、約定装置13は、内部ネットワーク2を介して、銘柄ごとに、約定情報を注文管理装置12に送信する。
【0032】
約定装置13は、取得部21と、マッチング部22と、価格決定部23と、出力部24とを有する。取得部21は、内部ネットワーク2を介して注文管理装置12から、銘柄ごとに、売り注文と買い注文の情報を受信する。
【0033】
マッチング部22は、銘柄ごとに売り注文と買い注文のマッチングを行う。マッチング部22は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であればマッチングを行う。なお、マッチング部22によるマッチング方法の詳細については後述する。
【0034】
価格決定部23は、マッチング部22によるマッチングに基づいて、マッチングごとの約定価格と銘柄ごとの次の株価を決定する。価格決定部23は、約定価格決定部31と次価格決定部32とを有する。
【0035】
約定価格決定部31は、売り指値をs円、買い指値をb(s≦b)円、現在値をp円とすると、区間[s,b]にpが含まれる場合には、約定価格もp円とする。一方、区間[s,b]にpが含まれない場合には、約定価格決定部31は、約定価格をp円に最も近い値、すなわち、p<sであれば約定価格をs円、b<pであれば約定価格をb円とする。
【0036】
次価格決定部32は、約定価格決定部31により決定された約定価格に基づいて、次の株価を決定する。例えば、次価格決定部32は、全ての約定価格の平均値を次の株価とする。
【0037】
出力部24は、銘柄ごとに約定情報を注文管理装置12に内部ネットワーク2を介して送信する。
【0038】
次に、約定装置13による処理のフローについて説明する。図5は、約定装置13による処理のフローを示すフローチャートである。なお、約定装置13は、銘柄ごとに図5に示す処理を行う。図5に示すように、約定装置13は、板寄せの開始時に注文管理装置12から売り注文と買い注文の情報を受信する(ステップS1)。
【0039】
そして、約定装置13は、売買のマッチングを決定する(ステップS2)。約定装置13は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であればマッチングを行う。そして、約定装置13は、マッチングごとに約定価格を決定し(ステップS3)、次の株価を決定する(ステップS4)。そして、約定装置13は、注文管理装置12に、約定情報を送信する(ステップS5)。
【0040】
このように、約定装置13は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であれば売買のマッチングを行い、マッチングごとに約定価格を決定するので、約定数を増やすことができる。
【0041】
次に、マッチング部22によるマッチング方法の詳細について説明する。マッチング部22は、以下の5つのマッチング方法のうちのいずれかのマッチング方法を用いて売り注文と買い注文のマッチングを行う。第1のマッチング方法では、マッチング部22は、全探索によるマッチングを行う。
【0042】
具体的には、マッチング部22は、売り注文j件のリストAと買い注文j件のリストBを作成する。そして、マッチング部22は、Aのj件とBのj件の組み合わせを1つ選択し、j件全てについて売り指値が買い指値以下である組み合わせをマッチング候補として記録する記録処理を行う。マッチング部22は、この記録処理を、Aのj件とBのj件の組み合わせを変えながら全組み合わせについて実行する。さらに、マッチング部22は、この記録処理を、A又はBを変更しながら、AとBの全組み合わせてについて実行する。さらに、マッチング部22は、この記録処理を、マッチング件数jを1からuまで変化させながら行う。ここで、uは、売り注文数と買い注文数の小さい方である。
【0043】
そして、マッチング部22は、マッチング候補の中から最適なマッチングを選択する。ここで、最適なマッチングとは、例えば、売り指値の平均が最も安い、買い指値の平均が最も高い、マッチング数が最大である、同一証券会社間のマッチングが少ないなどがある。
【0044】
図6は、第1のマッチング方法によるマッチング例を示す図である。図6では、j=12である。図6では、98円の4件の売り注文と98円の4件の買い注文、99円の5件の売り注文と100円の5件の買い注文、100円の2件の売り注文と101円の2件の買い注文、101円の1件の売り注文と102円の1件の買い注文が1つのマッチング候補である。
【0045】
図7は、第1のマッチング方法による処理のフローを示すフローチャートである。図7に示すように、マッチング部22は、jを1とし(ステップS11)、売り注文j件のリストAと買い注文j件のリストBを作成する(ステップS12)。そして、マッチング部22は、Aのj件とBのj件の組み合わせを1つ選択し(ステップS13)、j件全てについて売り指値が買い指値以下であるか否かを判定する(ステップS14)。そして、マッチング部22は、j件全てについて売り指値が買い指値以下である場合には、選択した組み合わせをマッチング候補として記録する(ステップS15)。
【0046】
そして、マッチング部22は、Aのj件とBのj件の全組み合わせを選択したか否かを判定し(ステップS16)、選択していない組み合わせがある場合には、ステップS13へ戻る。一方、全組み合わせを選択した場合には、マッチング部22は、AとBの全組み合わせを選択したか否かを判定し(ステップS17)、AとBの組み合わせで選択していないものがある場合には、A又はBを変更し(ステップS18)、ステップS13へ戻る。
【0047】
一方、AとBの全組み合わせを選択した場合には、マッチング部22は、jに1を加え(ステップS19)、jがu以下であるか否かを判定する(ステップS20)。そして、マッチング部22は、jがu以下である場合には、ステップS12へ戻り、jがu以下でない場合には、マッチング候補から最適なマッチングを1つ選択する(ステップS21)。
【0048】
このように、マッチング部22は、全探索によるマッチングを行うことで、マッチング候補を特定することができる。
【0049】
第2のマッチング方法では、マッチング部22は、ランダムな選択によるマッチングを行うことで売り注文と買い注文を約定させる。具体的には、マッチング部22は、売り注文j件のリストAと買い注文j件のリストBを作成する。そして、マッチング部22は、AとBからランダムに1件ずつ選択して売り指値が買い指値以下であるかを判定し、AとBのj件全てについて売り指値が買い指値以下である組み合わせをマッチング候補として記録する記録処理を行う。マッチング部22は、この記録処理を、A又はBを変更しながら、AとBの全組み合わせてについて実行する。さらに、マッチング部22は、この記録処理を、マッチング件数jを1からuまで変化させながら行う。そして、マッチング部22は、マッチング候補の中から最適なマッチングを選択する。
【0050】
図8は、第2のマッチング方法による約定例を示す図である。図8では、j=11である。図8では、98円の2件の売り注文と101円の2件の買い注文、99円の5件の売り注文と100円の5件の買い注文、100円の3件の売り注文と104円の3件の買い注文、101円の1件の売り注文と102円の1件の買い注文が1つのマッチング候補である。
【0051】
図9は、第2のマッチング方法による処理のフローを示すフローチャートである。図9に示すように、マッチング部22は、jを1とし(ステップS31)、売り注文j件のリストAと買い注文j件のリストBを作成する(ステップS32)。そして、マッチング部22は、Aの1件とBの1件をランダムに選択し(ステップS33)、売り指値が買い指値以下であるか否かを判定する(ステップS34)。なお、マッチング部22は、選択した1件をA、Bから削除する。
【0052】
そして、マッチング部22は、売り指値が買い指値以下でない場合には、ステップS37へ進み、売り指値が買い指値以下である場合には、j件全てについて当該判定を行ったか否かを判定する(ステップS35)。そして、マッチング部22は、当該判定を行っていない売り注文及び買い注文がA及びBそれぞれにある場合には、ステップS33に戻り、j件全てについて当該判定を行った場合には、ランダムに選択したj件の組み合わせをマッチング候補として記録する(ステップS36)。
【0053】
そして、マッチング部22は、AとBの全組み合わせを選択したか否かを判定し(ステップS37)、AとBの組み合わせで選択していないものがある場合には、A又はBを変更し(ステップS38)、ステップS33へ戻る。
【0054】
一方、AとBの全組み合わせを選択した場合には、マッチング部22は、jに1を加え(ステップS39)、jがu以下であるか否かを判定する(ステップS40)。そして、マッチング部22は、jがu以下である場合には、ステップS32へ戻り、jがu以下でない場合には、マッチング候補から最適なマッチングを1つ選択する(ステップS41)。
【0055】
このように、マッチング部22は、ランダムな選択によるマッチングを行うことで、マッチング候補を特定することができる。
【0056】
第3のマッチング方法では、マッチング部22は、分岐限定法によるマッチングを行う。具体的には、マッチング部22は、売り注文と買い注文のマッチングにおいて深さ優先探索を行い、ある探索点でより深い探索を行っても最適なマッチングは得られないと判定すると、より深い探索を行わない。
【0057】
図10は、第3のマッチング方法を説明するための図である。図10では、マッチング部22は、102円の4件の売り注文と104円の4件の買い注文、101円の1件の売り注文と102円の1件の買い注文、100円の2件の売り注文と101円の2件の買い注文の順に探索を行う。そして、マッチング部22は、次に98円の4件の売り注文と100円の4件の買い注文を探索した際に、これ以上深い探索を行っても最適なマッチングは得られないと判定し、98円の4件の売り注文と100円の4件の買い注文を削除する。そして、99円の5件の売り注文と100円の5件の買い注文から次の探索を行う。
【0058】
図11は、第3のマッチング方法による処理のフローを示すフローチャートである。図11に示すように、マッチング部22は、空のスタックS={}を作成し(ステップS51)、Sの内容を精査して最適解が見つかる可能性があるか否かを判定する(ステップS52)。
【0059】
そして、最適解が見つかる可能性があると判定した場合には、マッチング部22は、まだマッチングしていない売り注文sと買い注文bが存在するか否かを判定し(ステップS53)、存在する場合には、Sに(s,b)を追加し(ステップS54)、ステップS52へ戻る。一方、まだマッチングしていない売り注文sと買い注文bが存在しない場合には、マッチング部22は、Sをマッチングと決定する(ステップS55)。
【0060】
また、ステップS52において最適解が見つかる可能性はないと判定した場合には、マッチング部22は、Sの先頭を削除し(ステップS56)、ステップS52へ戻る。
【0061】
このように、マッチング部22は、枝刈りをすることで探索効率を向上することができる。
【0062】
第4のマッチング方法では、マッチング部22は、遺伝的アルゴリズムを用いて売り注文と買い注文のマッチングを行う。具体的には、マッチング部22は、2つのマッチング案の交配ルールを決めておき、交配ルールによって2つのマッチング案を交配させ、次世代のマッチング案を作る。マッチング部22は、次世代のマッチング案の作成を繰り返すことで、よりよいマッチング案を作成する。マッチング部22は、例えば、数千世代のマッチング案を作成する。
【0063】
図12は、交配ルールの一例を示す図である。図12に示すように、マッチング部22は、2つのマッチング案をまとめることで次世代のマッチング案を作る。ただし、2つのマッチング案をまとめることでマッチングがかち合う場合には、マッチング部22は、調整する。例えば、図12では、交配により、102円の4件の売り注文と104円の4件の買い注文のマッチングと、103円の3件の売り注文と104円の3件の買い注文のマッチングがかち合う。このような場合、マッチング部22は、例えば、かち合わないように各マッチングの注文件数を減らすなどの調整を行う。
【0064】
図13は、第4のマッチング方法による処理のフローを示すフローチャートである。図13に示すように、マッチング部22は、第一世代を生成する(ステップS61)。マッチング部22は、例えば、売り1件と買い1件によるマッチングを一定の数生成して第一世代とする。
【0065】
そして、マッチング部22は、前世代の2個体をランダムに選んで交配させて次の世代を生成する(ステップS62)。そして、マッチング部22は、マッチングを吟味し、より優れたものを残す(ステップS63)。そして、マッチング部22は、所定の世代に到達したか否かを判定し(ステップS64)、到達していない場合には、ステップS62に戻り、到達した場合には、所定の世代をマッチング結果とする。
【0066】
第5のマッチング方法では、マッチング部22は、板をネットワークフローとして定式化することで、マッチング数を最大化するマッチングを行う。図14Aは、ネットワークフローの最大フロー問題を説明するための図である。図14Aに示すように、最大フロー問題とは、グラフの辺に沿って頂点s(ソース)から頂点t(シンク)までできるだけ多く水を流すには、どの辺にどのくらいの量を流すようにすればよいかを求める問題である。ただし、図14A(a)に示すように、各辺には水を流せる最大容量が設定されている。図14A(b)は、解を示し、各辺の分数は、分母が容量で分子が流量である。図14A(b)では、sからtまで最大10の水が流れる。
【0067】
図14Bは、板のネットワークフローとしての定式化を説明するための図である。図14Bに示すように、マッチング部22は、s(ソース)、t(シンク)、売り指値、買い指値に応じた頂点を作成する。そして、マッチング部22は、売り頂点と買い頂点との間の容量は∞(制約なし)とし、sから売り頂点への辺の容量は、売り頂点の売り指値の売り注文数とし、買い頂点からtへの辺の容量は、買い頂点の買い指値の買い注文数とする。
【0068】
図14Bでは、sから98円の売り頂点への辺の容量は5でり、sから99円の売り頂点への辺の容量は0であり、sから100円の売り頂点への辺の容量は3である。また、sから101円の売り頂点への辺の容量は2であり、sから102円の売り頂点への辺の容量は1である。
【0069】
同様に、98円の買い頂点からtへの辺の容量は1であり、99円の買い頂点からtへの辺の容量は4であり、100円の買い頂点からtへの辺の容量は10である。また、101円の買い頂点からtへの辺の容量は2であり、102円の買い頂点からtへの辺の容量は3である。
【0070】
図14Cは、図14Bに示したネットワークフローの最大フローを示す図である。図14Cでは、各辺の流量がマッチング数を示し、マッチング数の合計は11である。例えば、98円売りの1件と98円買いの1件、98円売りの4件と99円買いの4件、100円売りの3件と100円買いの3件、101円売りの2件と101円買いの2件、102円売りの1件と102円買いの1件の合計11件のマッチングが行われる。
【0071】
マッチング部22は、最大フロー問題を解くアルゴリズムとして、Hopcroft-Karp、Dinic、Edmonds-Karpなどのアルゴリズムを用いる。頂点数をV、辺数をEとすると、Hopcroft-Karpの計算量はO(E√V)であり、Dinicの計算量はO(V2E)であり、Edmonds-Karpの計算量はO(VE2)である。
【0072】
図15は、第5のマッチング方法による処理のフローを示すフローチャートである。図15に示すように、マッチング部22は、売り注文と買い注文をもとにネットワークフローを作成する(ステップS71)。そして、マッチング部22は、最大フローを生成し(ステップS72)、最大フローの流量からマッチングを抽出する(ステップS73)。
【0073】
このように、マッチング部22は、板をネットワークフローとしての定式化することで、マッチング数が最大のマッチングを特定することができる。
【0074】
上述してきたように、実施例1では、約定装置13の取得部21が、注文管理装置12から銘柄ごとに、売り注文と買い注文の情報を取得する。そして、マッチング部22が、売り注文と買い注文のマッチングを行う。このとき、マッチング部22は、現在値にとらわれず、指値又は指値より投資家にとって有利な価格であればマッチングを行う。そして、約定価格決定部31が、マッチング部22によるマッチングに基づいて、マッチングごとに約定価格を決定する。したがって、約定装置13は、板寄せにおける約定数を増やすことができる。
【0075】
また、実施例では、マッチング部22は、全探索を行うので、売り注文と買い注文のマッチングを行うことができる。
【0076】
また、実施例では、マッチング部22は、売り注文と買い注文をランダムに選択してマッチングを行うので、売り注文と買い注文のマッチングを行うことができる。
【0077】
また、実施例では、マッチング部22は、マッチングの探索において枝刈りを行うので、最適なマッチングを効率よく特定することができる。
【0078】
また、実施例では、マッチング部22は、遺伝的アルゴリズムを用いてマッチングを行うので、優れた特徴を備えるマッチングを特定することができる。
【0079】
また、実施例では、マッチング部22は、板をネットワークフローとして定式化することで、マッチングを行うので、マッチング数が最大であるマッチングを特定することができる。
【実施例2】
【0080】
ところで、売り注文と買い注文のマッチングにおいて、不利な価格の注文が残っている場合、マッチングのペアを構成する注文をより有利な価格の注文に置き換えることができる。ここで、有利な価格とは、売り注文では安い価格を表し、買い注文では高い価格を表す。有利な価格の注文は優先的に約定される。
【0081】
図16は、不利な価格の注文のより有利な価格の注文への置き換え例を示す図である。図16(a)は、あるマッチングを示し、図16(b)は、より有利な価格の注文を消化するマッチングを示す。図16(a)に示すマッチングでは、96円売りの1件と96円買いの1件のマッチング、99円売りの1件と99円買いの1件のマッチングがある。
【0082】
この2件のマッチングは、図16(b)に示すように、売り注文はより安い売り注文に置き換え、買い注文はより高い買い注文に置き換えることによって、より有利な価格のマッチングに置き換えられる。すなわち、96円売りの1件と96円買いの1件のマッチングは、96円売りの1件と99円買いの1件のマッチングに置き換えられ、99円売りの1件と99円買いの1件のマッチングは、97円売りの1件と99円買いの1件のマッチングに置き換えられる。
【0083】
すなわち、マッチングできる最大約定数kを特定することができれば、有利な価格を全消化するマッチングを特定することができる。そこで、実施例2では、まずkを特定し、kの特定後に売り注文と買い注文のマッチングを決定するマッチング部22について説明する。
【0084】
実施例2に係るマッチング部22は、売り注文を安い方から全てマッチングさせる。マッチング相手の買い注文は、s円の売り注文に対して、s円以上の最小の買い注文とする。そして、実施例2に係るマッチング部22は、買い注文が尽きてマッチングできなくなったときのマッチング数をkとする。そして、実施例2に係るマッチング部22は、買い注文を高い方からk件に寄せる。
【0085】
図17は、買い注文を高い方からk件に寄せる例を示す図である。図17では、k=2であり、93円売りの1件とマッチングがとれた95円買いの1件が、98円買いの1件に寄せられる。
【0086】
実施例2に係るマッチング部22は、二分探索を用いてkを特定する。例えば、l件がマッチングし、r(>l)件はマッチングしない場合に、実施例2に係るマッチング部22は、次に(l+r)/2件がマッチングするかを判定する。そして、実施例2に係るマッチング部22は、マッチングする場合には、次にlを(l+r)/2で置き換え、マッチングしない場合には、rを(l+r)/2で置き換える。このような処理をlとrが連続する数になるまで繰り返すことによって、実施例2に係るマッチング部22は、kを特定する。
【0087】
なお、実施例2に係るマッチング部22は、交差は除去する。図18は、交差の除去を説明するための図である。交差とは、2つのマッチングs1円売りとb1円買い、s2円売りとb2円買いがあって、s1≦s2、b1≧b2となっている場合である。このような交差がある場合、マッチング部22は、s1円売りとb2円買い、s2円売りとb1円買いに変更することで交差を除去する。
【0088】
図18に示す交差除去が可能であるためには、交差除去後のマッチング成立条件s2≦b1、s1≦b2が成立すればよい。除去前のマッチング成立条件からs1≦b1、s2≦b2であるので、s2≦b2≦b1、s1≦s2≦b2が成立し、s1≦s2≦b2≦b1が成立する。すなわち、s2≦b1、s1≦b2が成立する。
【0089】
図19Aは、実施例2に係るマッチング部22が最大約定数を特定する処理のフローを示すフローチャートである。図19Aに示すように、実施例2に係るマッチング部22は、l=0、r=(売り注文数と買い注文数の最大値)+1とする(ステップS81)。
【0090】
そして、実施例2に係るマッチング部22は、rとl+1が等しいか否かを判定し(ステップS82)、rとl+1が等しくない場合には、m=(l+r)/2とする(ステップS83)。そして、実施例2に係るマッチング部22は、m件の約定は可能か否かを判定し(ステップS84)、m件の約定が可能である場合には、lの値をmで置き換え(ステップS85)、m件の約定が可能でない場合には、rの値をmで置き換える(ステップS86)。そして、実施例2に係るマッチング部22は、ステップS82へ戻る。
【0091】
また、ステップS82において、rとl+1が等しい場合には、実施例2に係るマッチング部22は、lを最大約定数として特定する(ステップS87)。
【0092】
図19Bは、m件の約定が可能であるか否かを判定する処理のフローを示すフローチャートである。実施例2に係るマッチング部22は、売り注文のうち安い方からm件の売り指値をs1≦s2≦・・・≦smとし、買い注文のうち高い方からm件の買い指値をb1≦b2≦・・・≦bmとする(ステップS91)。
【0093】
そして、実施例2に係るマッチング部22は、siがbi以下であるか否かを判定する(ステップS92)処理を、iを1から1ずつ増加しながら繰り返し、siがbi以下でないiを見つけた場合には、m件の約定は可能でないと判定する(ステップS93)。一方、iをmまで増加させてもsiがbi以下である場合には、実施例2に係るマッチング部22は、m件の約定は可能であると判定する(ステップS94)。
【0094】
このように、実施例2に係るマッチング部22は、二分探索を用いて最大約定数を特定するので、効率よく最大約定数を特定することができる。
【0095】
上述してきたように、実施例2に係るマッチング部22は、二分探索を用いて最大約定数kを特定する。そして、実施例2に係るマッチング部22は、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、抽出した売り注文と買い注文を安い順にマッチングさせる。したがって、実施例2に係るマッチング部22は、売り注文と買い注文を高速にマッチングさせて約定させることができる。
【実施例3】
【0096】
実施例3では、二分探索を用いて最大約定数kを特定したが、マッチング部22は、二部グラフを用いて最大約定数kを特定してもよい。そこで、二部グラフを用いて最大約定数kを特定するマッチング部22について説明する。
【0097】
図20は、株式取引の二部グラフ表現を説明するための図である。図20(a)は板の例を示し、図20(b)は図20(a)の二部グラフ表現を示し、図20(c)は指値の重複を重みで表現した場合を示す。
【0098】
図20(b)に示すように、株式取引の二部グラフ表現は、売り指値を示す頂点集合と買い指値を示す頂点集合から成る。また、株式取引の二部グラフ表現では、売り指値≦買い指値である頂点間にのみ辺が存在する。
【0099】
実施例3に係るマッチング部22は、各頂点集合から辺を共有する頂点ペアを頂点の重複がないように選択するとき、頂点ペアの数の最大値を最大約定数kとして特定する。図21は、最大約定数kの特定方法を説明するための図である。
【0100】
実施例3に係るマッチング部22は、売り注文、買い注文の最安値を示す頂点から開始し、売り注文、又は、買い注文の頂点がなくなるまで頂点を進める処理を繰り返すことで最大約定数kを特定する。頂点を進める処理では、実施例3に係るマッチング部22は、売り指値と買い指値を比較し、売り指値>買い指値の場合には買い注文の頂点を進め、売り指値≦買い指値の場合にはkの値を+1し、両方の注文の頂点を進める。なお、kの初期値は0である。
【0101】
図21(a)に示すように、実施例3に係るマッチング部22は、頂点を進める処理を95円売りと93円買いから開始する。そして、実施例3に係るマッチング部22は、売り指値95円と買い指値93円を比較し、売り指値>買い指値であるので、買い注文の頂点を進め、図21(b)に示すように、買い注文の頂点を95円買いとする。
【0102】
そして、実施例3に係るマッチング部22は、売り指値95円と買い指値95円を比較し、売り指値≦買い指値であるので、kの値を+1し、両方の注文の頂点を進め、図21(c)に示すように、売り注文の頂点を96円売りとし、買い注文の頂点を次の95円買いとする。同様の処理を繰り返すことで、図21(d)に示すように、買い注文の頂点がなくなり、実施例3に係るマッチング部22は、k=5を特定する。
【0103】
そして、実施例3に係るマッチング部22は、売り注文の頂点を売り指値が安い順にk個抽出し、買い注文の頂点を買い指値が高い順にk個抽出する。そして、実施例3に係るマッチング部22は、指値が小さい順に頂点ペアを作成することで優先度を満たす最大マッチングを特定する。ここで、優先度は、売り指値では安いほど高く、買い指値では高いほど高い。
【0104】
図22は、優先度を満たす最大マッチングを示す図である。図22に示すように、売り注文の頂点は95円から97円まで安い順に5個抽出され、買い注文の頂点は99円から95円まで高い順に5個抽出される。そして、指値が小さい順に、売り指値95円と買い指値95円、売り指値96円と買い指値96円、売り指値97円と買い指値98円、売り指値97円と買い指値99円、売り指値97円と買い指値99円の5個の頂点ペアが作成される。
【0105】
図20(c)に戻って、指値の重複を重みで表現した場合は、二部グラフ表現は、売り指値と重みを示す頂点集合と買い指値と重みを示す頂点集合から成る。この場合にも、売り指値≦買い指値である頂点間にのみ辺が存在する。
【0106】
実施例3に係るマッチング部22は、各頂点集合から辺を共有する頂点ペアを頂点の重複が重み以下になるように選択するとき、頂点ペアの数の最大値を最大約定数kとして特定する。図23は、最大約定数kの特定方法を説明するための図である。
【0107】
実施例3に係るマッチング部22は、売り注文、買い注文の最安値を示す頂点から開始し、売り注文、又は、買い注文の頂点がなくなるまで頂点を進める処理を繰り返すことで最大約定数kを特定する。頂点を進める処理では、実施例3に係るマッチング部22は、売り指値と買い指値を比較し、売り指値>買い指値の場合には買い注文の頂点を進め、売り指値≦買い指値の場合にはkの値を+1し、両方の重みを-1し、重みが0になった場合、注文の頂点を進める。なお、kの初期値は0である。
【0108】
図23(a)に示すように、実施例3に係るマッチング部22は、頂点を進める処理を95円売りと93円買いから開始する。そして、実施例3に係るマッチング部22は、売り指値95円と買い指値93円を比較し、売り指値>買い指値であるので、買い注文の頂点を進め、図23(b)に示すように、買い注文の頂点を95円買いとする。
【0109】
そして、実施例3に係るマッチング部22は、売り指値95円と買い指値95円を比較し、売り指値≦買い指値であるので、kの値を+1し、両方の重みを-1する。すると、売り指値95円の重みが0になるので、実施例3に係るマッチング部22は、売り注文の頂点を進め、図23(c)に示すように、売り注文の頂点を96円売りとする。同様の処理を繰り返すことで、図23(d)に示すように、買い注文の頂点がなくなり、実施例3に係るマッチング部22は、k=5を特定する。
【0110】
そして、実施例3に係るマッチング部22は、売り注文の頂点を売り指値が安い順に重みの合計がkになるように抽出し、買い注文の頂点を買い指値が高い順に重みの合計がkになるように抽出する。そして、実施例3に係るマッチング部22は、指値が小さい順に重みの制限の下に頂点ペアを作成することで優先度を満たす最大マッチングを特定する。
【0111】
図24は、優先度を満たす最大マッチングを示す図である。図24に示すように、売り注文の頂点は95円から97円まで安い順に3個抽出され、買い注文の頂点は99円から95円まで高い順に4個抽出される。そして、指値が小さい順に、売り指値95円と買い指値95円、売り指値96円と買い指値96円、売り指値97円と買い指値98円、売り指値97円と買い指値99円の4個の頂点ペアが作成される。売り指値95円と買い指値95円の頂点ペアの重みは1であり、売り指値96円と買い指値96円の頂点ペアの重みは1であり、売り指値97円と買い指値98円の頂点ペアの重みは1であり、売り指値97円と買い指値99円の頂点ペアの重みは2である。
【0112】
図25は、実施例3に係るマッチング部22による処理のフローを示すフローチャートである。図25に示すように、実施例3に係るマッチング部22は、初期化処理を行う(ステップS101)。初期化処理には、売り注文の指値によるソート、買い注文の指値によるソート、カウンタの初期化(値を0とする)がある。
【0113】
そして、実施例3に係るマッチング部22は、売り注文の売り指値と買い注文の買い指値を取得する(ステップS102)。ここで、実施例3に係るマッチング部22は、現在参照している注文の指値を取得する。最初は、最も安い売り指値の注文と最も安い買い指値の注文が参照される。
【0114】
そして、実施例3に係るマッチング部22は、買い指値は売り指値以上であるか否かを判定し(ステップS103)、買い指値が売り指値以上でない場合には、ステップS107へ進む。一方、買い指値が売り指値以上である場合には、実施例3に係るマッチング部22は、カウンタを1増加し(ステップS104)、次の売り注文を参照する(ステップS105)。
【0115】
そして、実施例3に係るマッチング部22は、売り注文があるか否かを判定し(ステップS106)、売り注文がない場合には、ステップS109へ進み、売り注文がある場合には、次の買い注文を参照する(ステップS107)。そして、実施例3に係るマッチング部22は、買い注文があるか否かを判定し(ステップS108)、買い注文がある場合には、ステップS102へ戻る。
【0116】
一方、買い注文がない場合には、実施例3に係るマッチング部22は、売り注文を安い順にカウンタの値分抽出し(ステップS109)、買い注文を高い順にカウンタの値分抽出する(ステップS110)。そして、実施例3に係るマッチング部22は、抽出した売り注文と買い注文を安い順にマッチングさせる(ステップS111)。
【0117】
このように、実施例3に係るマッチング部22は、カウンタを用いて最大約定数を特定し、売り注文を安い順に最大約定数抽出し、買い注文を高い順に最大約定数抽出して、安い順にマッチングさせる。したがって、実施例3に係るマッチング部22は、売り注文と買い注文を高速にマッチングさせることができる。
【0118】
二部グラフに関して一般的な最大マッチングアルゴリズムの計算量はO(EV)であるが、実施例3に係るマッチング部22によるマッチングの計算量はO(V)である。ここで、Eは辺の数であり、Vは頂点の数である。また、二部グラフに関して一般的な最大マッチングアルゴリズムでは優先度を含めることはできないが、実施例3に係るマッチング部22によるマッチングでは優先度を含めることができる。
【0119】
上述してきたように、実施例3に係るマッチング部22は、売り注文と買い注文を安い方から順番にどちらかがなくなるまで参照して売り指値が買い指値以下の数を数えることで最大約定数を特定するので、高速に最大約定数を特定することができる。
【0120】
図26は、実施例1~実施例3に係るマッチング部22による処理時間の例を示す図である。実施例1では、第5のマッチング方法が用いられる。横軸は指値数である。縦軸は、処理時間(秒)であり、基数が10の対数軸である。図26に示すように、実施例3に係るマッチング部22の処理時間が最も短く、実施例2に係るマッチング部22の処理時間が次に短い。
【0121】
なお、実施例1~3では、約定装置13について説明したが、約定装置13が有する構成をソフトウェアによって実現することで、同様の機能を有する約定プログラムを得ることができる。そこで、約定プログラムを実行するコンピュータについて説明する。
【0122】
図27は、実施例に係る約定プログラムを実行するコンピュータのハードウェア構成を示す図である。図27に示すように、コンピュータ50は、メインメモリ51と、CPU(Central Processing Unit)52と、LAN(Local Area Network)インタフェース53と、HDD(Hard Disk Drive)54とを有する。また、コンピュータ50は、スーパーIO(Input Output)55と、DVI(Digital Visual Interface)56と、ODD(Optical Disk Drive)57とを有する。
【0123】
メインメモリ51は、プログラムやプログラムの実行途中結果等を記憶するメモリである。CPU52は、メインメモリ51からプログラムを読み出して実行する中央処理装置である。CPU52は、メモリコントローラを有するチップセットを含む。
【0124】
LANインタフェース53は、コンピュータ50をLAN経由で他のコンピュータに接続するためのインタフェースである。HDD54は、プログラムやデータを格納するディスク装置であり、スーパーIO55は、マウスやキーボード等の入力装置を接続するためのインタフェースである。DVI56は、液晶表示装置を接続するインタフェースであり、ODD57は、DVDの読み書きを行う装置である。
【0125】
LANインタフェース53は、PCIエクスプレス(PCIe)によりCPU52に接続され、HDD54及びODD57は、SATA(Serial Advanced Technology Attachment)によりCPU52に接続される。スーパーIO55は、LPC(Low Pin Count)によりCPU52に接続される。
【0126】
そして、コンピュータ50において実行される約定プログラムは、コンピュータ50により読み出し可能な記録媒体の一例であるDVDに記憶され、ODD57によってDVDから読み出されてコンピュータ50にインストールされる。あるいは、約定プログラムは、LANインタフェース53を介して接続された他のコンピュータシステムのデータベース等に記憶され、これらのデータベースから読み出されてコンピュータ50にインストールされる。そして、インストールされた約定プログラムは、HDD54に記憶され、メインメモリ51に読み出されてCPU52によって実行される。
【0127】
また、実施例では、取引システム1が受付装置11と注文管理装置12と約定装置13とを有する場合について説明したが、受付装置11と注文管理装置12と約定装置13の機能を1つにまとめて取引装置を構成してもよい。あるいは、受付装置11と注文管理装置12の機能を1つにまとめるなど、任意の2つの機能を1つにまとめて1つの装置としてもよい。
【0128】
また、実施例では、株を取引する場合について説明したが、取引システム1は、他の有価証券や品物を取引してもよい。
【符号の説明】
【0129】
1 取引システム
2 内部ネットワーク
11 受付装置
12 注文管理装置
13 約定装置
21 取得部
22 マッチング部
23 価格決定部
24 出力部
31 約定価格決定部
32 次価格決定部
50 コンピュータ
51 メインメモリ
52 CPU
53 LANインタフェース
54 HDD
55 スーパーIO
56 DVI
57 ODD
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14A
図14B
図14C
図15
図16
図17
図18
図19A
図19B
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29