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