JP2023006645A - 約定プログラム、約定方法および情報処理装置 - Google Patents

約定プログラム、約定方法および情報処理装置 Download PDF

Info

Publication number
JP2023006645A
JP2023006645A JP2021109354A JP2021109354A JP2023006645A JP 2023006645 A JP2023006645 A JP 2023006645A JP 2021109354 A JP2021109354 A JP 2021109354A JP 2021109354 A JP2021109354 A JP 2021109354A JP 2023006645 A JP2023006645 A JP 2023006645A
Authority
JP
Japan
Prior art keywords
order
polynomial
orders
sell
buy
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021109354A
Other languages
English (en)
Inventor
俊宏 清水
Toshihiro Shimizu
章仁 中村
Akihito Nakamura
章紘 桑原
Akihiro Kuwahara
資広 小崎
Sukehiro Ozaki
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021109354A priority Critical patent/JP2023006645A/ja
Priority to US17/694,875 priority patent/US20230005058A1/en
Publication of JP2023006645A publication Critical patent/JP2023006645A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Technology Law (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

【課題】取引の約定を求める際の計算コストを低減させる。【解決手段】実施形態の約定プログラムは、多項式とする処理と、表す処理と、特定する処理とをコンピュータに実行させる。多項式とする処理は、約定数の条件が指定された売り注文および買い注文それぞれについて、売り注文および買い注文のうちの一方の注文を指定された条件における約定数を正の次数とする第1の多項式とする。また、多項式とする処理は、売り注文および買い注文のうちの他方の注文を指定された条件における約定数を負の次数とする第2の多項式とする。表す処理は、売り注文および買い注文を組み合わせた注文状況を第1の多項式および第2の多項式の積による有限体上の1つの多項式で表す。特定する処理は、注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する。【選択図】図16

Description

本発明の実施形態は、約定プログラム、約定方法および情報処理装置に関する。
証券市場において、株式取引などの売買が成立することを「約定」と呼ぶ。たとえば、売り注文を行ったユーザと、買い注文を行ったユーザとの条件が合致して、取引が成立した状態を約定という。ユーザは、注文(売りまたは買いの注文)を行う場合に、全量約定、または、一定数の注文数を条件にして、注文を行う場合がある。
注文に設定される条件であって、最低限の約定数を「最低約定数」と表記する。たとえば、最低約定数「M」の条件がついた注文数「N」の売り注文があり、注文数「M」以上の注文数となる買い注文があった場合に、売買が成立する。このような売り注文と買い注文とのマッチングにより約定を求める従来技術がある。
特開2004-213546号公報 特開2001-306821号公報
しかしながら、上記の従来技術では、約定対象の売り注文および買い注文の注文状況を別々に扱っているため、約定のマッチングに多大な計算コストを要するという問題がある。
1つの側面では、取引の約定を求める際の計算コストを低減できる約定プログラム、約定方法および情報処理装置を提供することを目的とする。
1つの案では、約定プログラムは、多項式とする処理と、表す処理と、特定する処理とをコンピュータに実行させる。多項式とする処理は、約定数の条件が指定された売り注文および買い注文それぞれについて、売り注文および買い注文のうちの一方の注文を指定された条件における約定数を正の次数とする第1の多項式とする。また、多項式とする処理は、売り注文および買い注文のうちの他方の注文を指定された条件における約定数を負の次数とする第2の多項式とする。表す処理は、売り注文および買い注文を組み合わせた注文状況を第1の多項式および第2の多項式の積による有限体上の1つの多項式で表す。特定する処理は、注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する。
取引の約定を求める際の計算コストを低減できる。
図1は、動的計画法における売り注文を受け付けた場合の処理を説明する説明図である。 図2は、動的計画法における買い注文を受け付けた場合の処理を説明する説明図である。 図3は、動的計画法における約定数を算出する処理を説明する説明図である。 図4は、動的計画法における売り注文を受け付けた場合の処理を説明する説明図である。 図5は、動的計画法における約定対象の注文を特定する処理を説明する説明図である。 図6は、注文状況を多項式で表す場合を説明する説明図である。 図7は、注文状況を多項式で表す場合を説明する説明図である。 図8は、注文状況を多項式で表す場合の割り算を説明する説明図である。 図9は、第1の実施形態にかかる情報処理装置の機能構成例を示すブロック図である。 図10は、売り注文テーブルのデータ構造の一例を示す説明図である。 図11は、買い注文テーブルのデータ構造の一例を示す説明図である。 図12は、約定結果情報のデータ構造の一例を示す説明図である。 図13は、注文受付・取消処理の一例を示すフローチャートである。 図14は、約定処理の一例を示すフローチャートである。 図15は、第2の実施形態にかかる情報処理装置の動作の一例を示すフローチャートである。 図16は、最大約定の実行例を説明する説明図である。 図17は、最大約定の動作例を示すフローチャートである。 図18は、マージ処理の一例を示すフローチャートである。 図19は、インデックスの圧縮を説明する説明図である。 図20は、実施形態の情報処理装置と同様の機能を実現するコンピュータのハードウエア構成の一例を示すブロック図である。
以下、図面を参照して、実施形態にかかる約定プログラム、約定方法および情報処理装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する約定プログラム、約定方法および情報処理装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
まず、動的計画法により最低約定数が設定された売り注文と買い注文とのマッチングにより約定を求める処理を説明する。動的計画法を用いて約定対象の注文を特定する処理では、売り注文または買い注文をそれぞれ管理するために、Bool(T、F)配列aを用意し、約定数が最大となるような約定対象となる注文を特定する。
Bool(T、F)配列aを「配列a」と表記する。配列aには、0以上のインデックスiが設定され、配列aのインデックスiに対応する要素には「T」または「F」が設定される。配列aのインデックスiに対応する要素が「T」である場合には、注文数iの注文が存在することを意味する。配列aのインデックスiに対応する要素が「F」である場合には、注文数iの注文が存在しないことを意味する。「T」は、登録記号の一例である。
配列aのインデックスiの要素が「T」であることを、a[i]=Tによって示す。配列aのインデックスiの要素が「F」であることを、a[i]=Fによって示す。
ここでは、売り注文に関する情報を格納する配列aを「第1配列a」と表記し、買い注文に関する情報を格納する配列aを「第2配列a」と表記する。
図1は、動的計画法における売り注文を受け付けた場合の処理を説明する説明図であり、売り注文を受け付けた場合の第1配列aの状態を例示している。情報処理装置は、a[i]=Tで、注文数xの売り注文を受け付けた場合、a[i+x]=Tとする。
第1配列aの初期状態を、ステップS10に示すものとする。第1配列aの初期状態では、a[0]=Tとなり、他の要素は全て「F」となる。
注文数3の売り注文を受け付けた場合、第1配列aの状態は、ステップS11に示すものとなる。情報処理装置は、第1配列aが、a[0]=Tとなっているため、a[0+3]=Tに設定する。
注文数5の注文を受け付けた場合、第1配列aの状態は、ステップS12に示すものとなる。情報処理装置は、第1配列aが、a[0]=Tとなっているため、a[0+5]=Tに設定する。情報処理装置は、第1配列aが、a[3]=Tとなっているため、a[3+5]=Tに設定する。
第1配列aの要素がTとなっているインデックスは、マッチング可能な約定数量を示す。たとえば、図1のステップS12の第1配列aの状態では、インデックスi=8の要素が「T」となっており、かかる「8」は、注文数「3」と、注文数「5」とが全量約定する数量である。
図2は、動的計画法における買い注文を受け付けた場合の処理を説明する説明図であり、買い注文を受け付けた場合の第2配列aの状態を例示している。情報処理装置は、図1で説明した売り注文を受けた場合の第1配列aに対する処理と同様にして、a[i]=Tで、注文数xの買い注文を受け付けた場合、a[i+x]=Tとする。また、第2配列aの初期状態では、a[0]=Tとなり、他の要素は全て「F」となる。
たとえば、注文数2の買い注文、注文数3の買い注文、注文数6の買い注文を順に受け付けた場合には、第2配列aの状態は、図2に示すものとなる。すなわち、a[0]=T、a[2]=T、a[3]=T、a[5]=T、a[6]=T、a[8]=T、a[9]=T、a[11]=Tとなり、その他の要素は「F」となる。
情報処理装置は、図1で説明した売り注文の第1配列aと、図2で説明した第2配列aとを比較して、マッチング可能な最大の約定数量を特定する。
図3は、動的計画法における約定数を算出する処理を説明する説明図である。情報処理装置は、第1配列aと、第2配列aとを比較して、第1配列aの要素と、第2配列aの要素とが両方とも「T」となるインデックスのうち、最も大きいインデックスを、最大の約定数として特定する。図3に示す例では、第1配列aの要素と、第2配列aの要素とが両方とも「T」となるインデックスのうち、最も大きいインデックスは「8」となるため、情報処理装置は、マッチング可能な最大の約定数量を「8」として算出する。
続いて、情報処理装置が、約定対象となる注文を特定する処理について説明する。情報処理装置は、注文を受け付けて配列aの要素に「T」を初めて設定する場合に、注文受付順(注文順)および数量(注文数)を示す補助情報を、インデックスごとに登録することで、約定対象となる注文を特定することが可能となる。
図4は、動的計画法における売り注文を受け付けた場合の処理を説明する説明図である。図4では第1配列aの初期状態の図示を省略するが、第1配列aの初期状態は、図1で説明したステップS10の第1配列aの状態に対応する。情報処理装置は、初期状態で「T」となっている要素に対しては、補助情報を付与しない。なお、売り注文の注文受付順が、「第1注文順」に対応し、売り注文の注文数が、「第1注文数」に対応する。
初め(注文受付順=1)に、注文数2の売り注文を受け付けた場合、第1配列aの状態は、ステップS21に示すものとなる。情報処理装置は、初期状態の第1配列aが、a[0]=Tとなっているため、a[0+2]=Tに設定する。また、インデックスi=2に、補助情報sub1-2を登録する。補助情報sub1-2には、順番「1」、数量「2」が設定される。
続いて(注文受付順=2)、注文数3の売り注文を受け付けた場合、第1配列aの状態は、ステップS22に示すものとなる。情報処理装置は、第1配列aが、a[0]=Tとなっているため、a[0+3]=Tに設定し、インデックスi=3に補助情報sub1-3を登録する。補助情報sub1-3には、順番「2」、数量「3」が設定される。
情報処理装置は、第1配列aが、a[2]=Tとなっているため、a[2+3]=Tに設定し、インデックスi=5に補助情報sub1-5を登録する。補助情報sub1-5には、順番「2」、数量「3」が設定される。
図示を省略するが、情報処理装置は、買い注文を受け付けた場合も、第2配列aの要素に「T」を設定すると共に、図4と同様にして、インデックスに補助情報を登録する。なお、買い注文の注文受付順が、「第2注文順」に対応し、買い注文の注文数が、「第2注文数」に対応する。
図5は、動的計画法における約定対象の注文を特定する処理を説明する説明図である。図5では、情報処理装置は、売り注文として、注文Or1-1、Or1-2を順に受け付ける。注文Or1-1は、注文数「3」の注文である。注文Or1-2は、注文数「5」の注文である。情報処理装置は、買い注文として、注文Or2-1、Or2-2、Or2-3を順に受け付ける。注文Or2-1は、注文数「2」の注文である。注文Or2-2は、注文数「3」の注文である。注文Or2-3は、注文数「6」の注文である。
情報処理装置は、注文Or1-1、Or1-2を順に受け付けると、売り注文を受け付けた場合の第1配列aに対する処理を実行することで、第1配列aを、図5に示すような状態に設定する。第1配列aのインデックスi=0,3,5,8の要素が「T」となり、他の要素は「F」となる。インデックスi=0の「T」は、初期状態で設定される。
情報処理装置は、第1配列aのインデックスi=3に補助情報sub1-3を設定する。補助情報sub1-3には、順番「1」、数量「3」が設定される。情報処理装置は、第1配列aのインデックスi=5に補助情報sub1-5を設定する。補助情報sub1-5には、順番「2」、数量「5」が設定される。情報処理装置は、第1配列aのインデックスi=8に補助情報sub1-8を設定する。補助情報sub1-8には、順番「2」、数量「5」が設定される。
情報処理装置は、注文Or2-1、Or2-2、Or2-3を順に受け付けると、買い注文を受け付けた場合の第2配列aに対する処理を実行することで、第2配列aを、図5に示すような状態に設定する。第2配列aのインデックスi=0,2,3,5,6,8,9,11の要素が「T」となり、他の要素は「F」となる。インデックスi=0の「T」は、初期状態で設定される。
情報処理装置は、第2配列aのインデックスi=2に補助情報sub2-2を設定する。補助情報sub2-2には、順番「1」、数量「2」が設定される。情報処理装置は、第2配列aのインデックスi=3に補助情報sub2-3を設定する。補助情報sub2-3には、順番「2」、数量「3」が設定される。情報処理装置は、第2配列aのインデックスi=5に補助情報sub2-5を設定する。補助情報sub2-5には、順番「2」、数量「3」が設定される。
情報処理装置は、第2配列aのインデックスi=6に補助情報sub2-6を設定する。補助情報sub2-6には、順番「3」、数量「6」が設定される。情報処理装置は、第2配列aのインデックスi=8に補助情報sub2-8を設定する。補助情報sub2-8には、順番「3」、数量「6」が設定される。情報処理装置は、第2配列aのインデックスi=9に補助情報sub2-9を設定する。補助情報sub2-9には、順番「3」、数量「6」が設定される。情報処理装置は、第2配列aのインデックスi=11に補助情報sub2-11を設定する。補助情報sub2-11には、順番「3」、数量「6」が設定される。
情報処理装置は、第1配列aと、第2配列aとを比較して、第1配列aの要素と、第2配列aの要素とが両方とも「T」となるインデックスのうち、最も大きいインデックスを、約定数として算出する。図5に示す例では、第1配列aの要素と、第2配列aの要素とが両方とも「T」となるインデックスのうち、最も大きいインデックスは、インデックスi=8である。このため、情報処理装置は、約定数を「8」とする。
情報処理装置は、約定数を算出した後に、配列aに設定された補助情報を基にして、約定対象となる注文を特定する。情報処理装置は、約定数i0で約定する場合、インデックスの初期値i=i0として、以下の処理をi=0となるまで繰り返し実行する。
情報処理装置が繰り返す処理は次に示す処理となる。情報処理装置は、a[i]=Tとなる注文を約定対象とする。次に、情報処理装置は、a[i]に設定された補助情報に含まれる数量αを特定し、i=i-αによって、インデックスiを更新する。
図5の「第1配列a」を基にして、情報処理装置が、約定する売り注文を特定する処理について説明する。
情報処理装置は、約定数「8」に対応するインデックスi=8に設定された補助情報sub1-8に対応する注文を約定対象とする。補助情報1-8は、順番「2」、数量「5」の注文Or1-2に対応する。情報処理装置は、補助情報sub1-8に含まれる数量α=5を取得し、インデックスi=8-5=3に更新する。
情報処理装置は、インデックスi=3に設定された補助情報sub1-3に対応する注文を約定対象とする。補助情報1-3は、順番「1」、数量「3」の注文Or1-1に対応する。情報処理装置は、補助情報sub1-3に含まれる数量α=3を取得し、インデックスi=3-3=0に更新する。情報処理装置は、インデックスi=0となるため、処理を終了する。
図5の「第2配列a」を基にして、情報処理装置が、約定する買い注文を特定する処理について説明する。
情報処理装置は、約定数「8」に対応するインデックスi=8に設定された補助情報sub2-8に対応する注文を約定対象とする。補助情報2-8は、順番「3」、数量「6」の注文Or2-3に対応する。情報処理装置は、補助情報sub2-8に含まれる数量α=6を取得し、インデックスi=8-6=2に更新する。
情報処理装置は、インデックスi=2に設定された補助情報sub2-2に対応する注文を約定対象とする。補助情報2-2は、順番「1」、数量「2」の注文Or2-1に対応する。情報処理装置は、補助情報sub2-2に含まれる数量α=2を取得し、インデックスi=2-2=0に更新する。情報処理装置は、インデックスi=0となるため、処理を終了する。
上記処理によって、約定対象となる売りの注文Or1-1、Or1-2と、買いの注文Or2-1、Or2-3が特定される。
このように動的計画法において約定対象の注文を特定した後、または、注文のキャンセルを行った後の残りの注文に関する注文状況の配列を求める場合、前に作成した配列からは得ることができず、その都度、配列を再構築することとなる。このため、最大約定を構成する注文を特定するためのインデックス分のメモリが消費されるなど、約定対象となる注文を特定する際の効率が悪いという問題がある。
そこで、本実施形態では、動的計画法は多項式の掛け算(乗法)とみなし、動的計画法を多項式に帰着させる。具体的には、本実施形態の情報処理装置では、受け付けた注文それぞれを約定数を次数とする多項式で表し、各注文を組み合わせた注文状況を各注文の多項式の掛け算で表す。
また、本実施形態の情報処理装置では、約定対象の注文を特定した後、または、注文のキャンセルを行った後の残りの注文に関する注文状況を得るための注文の差し引きを多項式の割り算(除法)に対応させる。
本実施形態では、このように多項式演算とみなすことで、各注文を最初から組み合わせて再構築することなく、約定対象の注文を特定した後、または、注文のキャンセルを行った後の残りの注文に関する注文状況を得ることができる。したがって、本実施形態では、効率よく約定対象となる注文を特定していくことができる。
例えば、約定数をk株とする条件の注文については、xで表す。具体的には、1=xは「約定させない」、xは「3株で約定させる」に対応する。そして、3株の注文を約定させるかどうかは(1+x)を掛けることで表現する。同様に、2株の注文を約定させるかどうかは(1+x)を掛けることで表現する。そして、3株と2株の注文の組み合わせは、次のように(1+x)と、(1+x)との掛け算で表し、掛け算後の多項式により、0、2、3、5株で約定が可能と分かる。
(3株と2株の注文の組み合わせ)=(1+x)(1+x)=1+x+x+x
なお、多項式の演算において、1をT、0をFに対応するものとし、加算、乗算を以下のように定義する。
・加算は、0+0=0,1+0=1,0+1=1,1+1=1とする。
・乗算は、0*0=0,1*0=0,0*1=0,1*1=1とする。
図6は、注文状況を多項式で表す場合を説明する説明図である。図6の左側は注文状況の配列aにおいて、約定数をxの次数とする多項式で表す場合に格納されるデータを例示している。図示例では、a[0]~a[8]には、0~8の次数の項における係数が格納される。図6の右側は、注文を表す多項式を例示している。
注文状況の配列aの初期状態を、ステップS31に示すものとする。配列aの初期状態では、「約定させない」ことを表す1=xに対応してa[0]=1となり、他の要素は全て「0」となる。
次いで、注文数3の注文を受け付けた(到着した)場合、配列aの状態は、ステップS32に示すものとなる。情報処理装置は、1に対し、注文数3の注文に対応する多項式の(1+x)を掛け合わせる。情報処理装置は、この掛け合わせで得られた多項式の1+xより、a[0]、a[3]に1を設定する。
次いで、注文数2の注文を受け付けた(到着した)場合、配列aの状態は、ステップS33に示すものとなる。情報処理装置は、(1+x)に、注文数2の注文に対応する多項式の(1+x)を掛け合わせる。情報処理装置は、この掛け合わせで得られた多項式の1+x+x+xより、a[0]、a[2]、a[3]、a[5]に1を設定する。
次いで、注文数3の注文を受け付けた(到着した)場合、配列aの状態は、ステップS34に示すものとなる。情報処理装置は、(1+x+x+x)に、注文数3の多項式の(1+x)を掛け合わせる。情報処理装置は、この掛け合わせで得られた多項式の1+x+x+x+x+xより、a[0]、a[2]、a[3]、a[5]、a[6]、a[8]に1を設定する。
上記の定義では、T/Fの加算(0+0=0,1+0=1,0+1=1,1+1=1)に対する逆の演算(減算)およびT/Fの乗算(0*0=0,1*0=0,0*1=0,1*1=1)に対する逆の演算(除算)がない。そこで、本実施形態では、多項式演算における数体系を変更し、演算に可逆性を待たせるようにする。具体的には、多項式演算における各項の係数については、特定の素数pで割った剰余数(mod p)とする有限体F上の整数に置き換える。これにより、本実施形態の情報処理装置は、注文状況を表す多項式を有限体上の多項式とし、逆の演算(例えば除算)により注文をキャンセルした状態(多項式)が得られるようにする。
一例として、素数pをp=7とする場合(mod 7)は、{0,1,2,3,4,5,6}のいずれかの整数に置き換えることとなる。例えば、加算は3+5=8≡1となる。また、減算は、3-5=-2≡5となる。また、乗算は3*5=15≡1となる。また、除算は3/5=3*3=9≡2となる(3と5を掛けると1になることから、「5で割る」のは「3を掛ける」のと同じである)。このように、加算、減算、乗算、除算ができる有限個の元を持つ集合として扱えるようにする。このように、有限個とすることで、コンピュータ演算で扱いやすくなる。なお、実際の演算に用いる素数pは、組み合わせる注文数に対応するために十分に大きな値であるものとする。
図7は、注文状況を多項式で表す場合を説明する説明図である。図6と同様、図7の左側は注文状況の配列aを例示しており、図7の右側は、注文を表す多項式を例示している。
注文状況の配列aの初期状態を、ステップS41に示すものとする。配列aの初期状態では、「約定させない」ことを表す1=xに対応してa[0]=1となり、他の要素は全て「0」となる。
次いで、注文数3の注文を受け付けた(到着した)場合、配列aの状態は、ステップS42に示すものとなる。情報処理装置は、1に対し、注文数3の注文に対応する多項式の(1+x)を掛け合わせる。なお、情報処理装置は、多項式の演算(例えば掛け合わせ)において、各項の係数については素数pで割った有限体F上の整数に置き換える(mod p)ものとする。情報処理装置は、この掛け合わせで得られた多項式の1+xより、a[0]、a[3]に1を設定する(他の要素は全て0)。
次いで、注文数2の注文を受け付けた(到着した)場合、配列aの状態は、ステップS43に示すものとなる。情報処理装置は、(1+x)に、注文数2の注文に対応する多項式の(1+x)を掛け合わせる。情報処理装置は、この掛け合わせで得られた多項式の1+x+x+xより、a[0]、a[2]、a[3]、a[5]に1を設定する(他の要素は全て0)。
次いで、注文数3の注文を受け付けた(到着した)場合、配列aの状態は、ステップS44に示すものとなる。情報処理装置は、(1+x+x+x)に、注文数3の多項式の(1+x)を掛け合わせる。情報処理装置は、この掛け合わせで得られた多項式の1+x+2x+2x+x+xより、a[0]およびa[2]に1を、a[3]およびa[5]に2を、a[6]およびa[8]に1を設定する(他の要素は全て0)。
図8は、注文状況を多項式で表す場合の割り算を説明する説明図である。図8に示すように、ステップS44の配列aにおける注文の状態から、注文数2の注文をキャンセル(または、約定後の取り消し)する場合、情報処理装置は、(1+x)での除算(割り算)を行う。これにより、情報処理装置は、注文状況を表す有限体上の多項式(配列a)について、注文数2の注文を約定後またはキャンセル後の注文状況を示すものに更新する。
具体的には、情報処理装置は、ステップS44の配列aにおける1+x+2x+2x+x+xに対して(1+x)で割り算を行う。情報処理装置は、この割り算で得られた多項式の1+2x+xより、a[0]およびa[6]に1を、a[3]に2を設定する(他の要素は全て0)。
(第1の実施形態)
図9は、第1の実施形態にかかる情報処理装置の機能構成例を示すブロック図である。図9に示すように、情報処理装置100は、通信部110と、入力部120と、表示部130と、記憶部140と、制御部150とを有する。
通信部110は、有線又は無線で外部装置等に接続され、外部装置等との間で情報の送受信を行う。例えば、通信部110は、NIC(Network Interface Card)等によって実現される。通信部110は、図示しないネットワークに接続されていてもよい。例えば、通信部110は、外部装置から、売り注文の情報を含む売り注文テーブル141の情報、買い注文の情報を含む買い注文テーブル142の情報等を受信する。例えば、外部装置は、株の売り買いを管理し、約定の対象となった注文に関して各種の処理を実行するサーバに対応する。
入力部120は、各種の情報を、情報処理装置100に入力する入力装置である。入力部120は、キーボードやマウス、タッチパネル等に対応する。
表示部130は、制御部150から出力される情報を表示する表示装置である。表示部130は、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、タッチパネル等に対応する。
記憶部140は、売り注文テーブル141、買い注文テーブル142、第1多項式情報143、第2多項式情報144、約定結果情報145を有する。記憶部140は、たとえば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、または、ハードディスク、光ディスク等の記憶装置によって実現される。
売り注文テーブル141は、売り注文の注文順、注文数を保持するテーブルである。図10は、売り注文テーブル141のデータ構造の一例を示す説明図である。図10に示すように、売り注文テーブル141は、識別情報と、注文順と、注文数とを対応付ける。識別情報は、注文を一意に識別する情報である。注文順は、受け付けた売り注文の順番である。注文数は、売り注文の数である。
買い注文テーブル142は、買い注文の注文順、注文数を保持するテーブルである。図11は、買い注文テーブル142のデータ構造の一例を示す説明図である。図11に示すように、買い注文テーブル142は、識別情報と、注文順と、注文数とを対応付ける。識別情報は、注文を一意に識別する情報である。注文順は、受け付けた買い注文の順番である。注文数は、買い注文の数である。
第1多項式情報143は、売り注文に関する注文を組み合わせた注文状況に対応する多項式の情報を保持する配列情報である。具体的には、各売り注文に対応する多項式を掛け合わせて得られた、売り注文の状況を表す有限体上の多項式(配列a)の配列情報である。
第2多項式情報144は、買い注文に関する注文を組み合わせた注文状況に対応する多項式の情報を保持する配列情報である。具体的には、各買い注文に対応する多項式を掛け合わせて得られた、買い注文の状況を表す有限体上の多項式(配列a)の配列情報である。
約定結果情報145は、最大の約定数と、約定対象となる注文の情報を保持する。図12は、約定結果情報145のデータ構造の一例を示す説明図である。図12に示すように、約定結果情報145は、約定売り識別情報と、約定買い識別情報と、最大約定数とを有する。約定売り識別情報は、約定対象となる売り注文を識別する情報である。約定買い識別情報は、約定対象となる買い注文を識別する情報である。最大約定数は、最大の約定数を示す。
制御部150は、注文受付部151と、多項式生成部152と、演算部153と、約定処理部154と、出力制御部155とを有する。制御部150は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)により実現される。また、制御部150は、例えばASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の集積回路により実行されてもよい。
注文受付部151は、約定数の条件が指定された注文を受け付ける処理部である。注文受付部151は、外部装置等から、売り注文テーブル141のデータを取得した場合に、売り注文テーブル141のデータを、記憶部140に格納する。注文受付部151は、売り注文を個別に順に取得し、取得した売り注文の情報を、売り注文テーブル141に登録してもよい。
注文受付部151は、外部装置等から、買い注文テーブル142のデータを取得した場合に、買い注文テーブル142のデータを、記憶部140に格納する。注文受付部151は、買い注文を個別に順に取得し、取得した買い注文の情報を、買い注文テーブル142に登録してもよい。
また、注文受付部151は、キャンセルする注文の情報(識別情報)を受け付けて、売り注文テーブル141または買い注文テーブル142に登録されている売り注文または買い注文の情報を削除してもよい。このとき、注文受付部151は、売り注文テーブル141または買い注文テーブル142より削除する注文の情報を取得し、演算部153に通知する。
多項式生成部152は、受け付けた注文を組み合わせた注文状況を表す有限体上の多項式(以後、既存多項式とも呼ぶ)を生成する処理部である。多項式生成部152は、受け付けた注文それぞれについて、注文で指定された条件における約定数(注文数)を次数とする多項式とする。次いで、多項式生成部152は、受け付けた注文を組み合わせた注文状況を多項式の積による有限体上の多項式(既存多項式)で表す。
具体的には、多項式生成部152は、売り注文に関する売り注文テーブル141をもとに、売り注文それぞれについて、売り注文で指定された注文数を次数とする多項式とする。次いで、多項式生成部152は、受け付けた売り注文を組み合わせた注文状況を、売り注文それぞれの多項式を掛け合わせる。ついで、多項式生成部152は、掛け合わせて得られた多項式の係数を特定の素数(p)の剰余数(mod p)とすることで、売り注文の注文状況に対応する有限体上の多項式(第1の既存多項式)を生成する。次いで、多項式生成部152は、生成した多項式の情報を第1多項式情報143として記憶部140に格納する。
また、多項式生成部152は、買い注文に関する買い注文テーブル142をもとに、買い注文それぞれについて、買い注文で指定された注文数を次数とする多項式とする。次いで、多項式生成部152は、受け付けた買い注文を組み合わせた注文状況を、買い注文それぞれの多項式を掛け合わせる。ついで、多項式生成部152は、掛け合わせて得られた多項式の係数を特定の素数(p)の剰余数(mod p)とすることで、買い注文の注文状況に対応する有限体上の多項式(第2の既存多項式)を生成する。次いで、多項式生成部152は、生成した多項式の情報を第2多項式情報144として記憶部140に格納する。
演算部153は、注文状況を表す有限体上の多項式について、各種演算処理を行う処理部である。具体的には、演算部153は、注文状況を表す有限体上の多項式(既存多項式)について、約定する注文またはキャンセルする注文に対応する多項式で割り算を行い、約定後またはキャンセル後の注文状況を表す既存多項式に更新する。例えば、演算部153は、約定処理部154により約定対象として特定された注文または注文受付部151より通知されたキャンセル(削除)する注文に対応する多項式で第1多項式情報143または第2多項式情報144の既存多項式に対して割り算を行う。次いで、演算部153は、割り算後の既存多項式の情報を第1多項式情報143または第2多項式情報144として記憶部140に格納する。
より具体的には、約定する注文またはキャンセルする注文が売り注文の場合、演算部153は、約定する売り注文またはキャンセルする売り注文に対応する多項式を多項式生成部152と同様の方法で生成する。次いで、演算部153は、第1多項式情報143の第1の既存多項式に対して、生成した多項式で割り算を行い、約定後またはキャンセル後の売り注文の状況に対応する第1の既存多項式を求める。次いで、演算部153は、得られた第1の既存多項式の情報を第1多項式情報143として記憶部140に格納する。
また、約定する注文またはキャンセルする注文が買い注文の場合、演算部153は、約定する買い注文またはキャンセルする買い注文に対応する多項式を多項式生成部152と同様の方法で生成する。次いで、演算部153は、第2多項式情報144の第2の既存多項式に対して、生成した多項式で割り算を行い、約定後またはキャンセル後の買い注文の状況に対応する第2の既存多項式を求める。次いで、演算部153は、得られた第2の既存多項式の情報を第2多項式情報144として記憶部140に格納する。
また、演算部153は、割り算後の既存多項式について、特定の次数の項の係数に基づいて約定後またはキャンセル後の注文状況を表す既存多項式として採用するか否かを決定してもよい。例えば、演算部153は、約定対象またはキャンセル対象の注文に対応する多項式で既存多項式を割って得られた結果、特定の項の係数が0でなければ採用、0であれば不採用とする。
一例として、既存多項式が1+x+2x+2x+x+xである場合の6株の約定(xの係数は0ではないので可能)を考える。この約定に2株の注文は含まれるか否かを判定したい時、元の式(上記の既存多項式)を1+xで割ってみる。次いで、割った結果の1+2x+xにおけるx(6-2=4より4株分)の項の係数は0なので、含まれないと分かる。
このように、演算部153は、割り算後の既存多項式における特定の項の係数をもとに、採用または不採用を決定してもよい。不採用とする場合、演算部153は、エラーを出力制御部155より通知してもよいし、別の注文を約定対象とするように、約定処理部154へ処理を戻してもよい。
例えば、注文を組み合わせた場合の数よりも有限体とする際の素数pが小さい場合には、演算後の既存多項式における係数が偽陽性となることがある。したがって、情報処理装置100では、特定の項の係数をもとに、採用または不採用を決定することで、偽陽性となるケースを排除することができる。
また、演算部153は、注文受付部151より新たに追加する注文を受け付けた場合、その注文の多項式を既存多項式に掛け合わせることで、追加後の注文状況を表す既存多項式に更新してもよい。
例えば、新たに追加する注文が売り注文の場合、演算部153は、追加する売り注文に対応する多項式を多項式生成部152と同様の方法で生成する。次いで、演算部153は、第1多項式情報143の第1の既存多項式に対して、生成した多項式で掛け算を行い、追加後の売り注文の状況に対応する第1の既存多項式を求める。次いで、演算部153は、得られた第1の既存多項式の情報を第1多項式情報143として記憶部140に格納する。
また、新たに追加する注文が買い注文の場合、演算部153は、追加する買い注文に対応する多項式を多項式生成部152と同様の方法で生成する。次いで、演算部153は、第2多項式情報144の第2の既存多項式に対して、生成した多項式で掛け算を行い、追加後の買い注文の状況に対応する第2の既存多項式を求める。次いで、演算部153は、得られた第2の既存多項式の情報を第2多項式情報144として記憶部140に格納する。
約定処理部154は、最大約定数と、第1多項式情報143と、第2多項式情報144とを基にして、約定の対象となる注文を特定する処理部である。約定処理部154の処理は、図5で説明した処理に対応する。
例えば、図5で説明したように、約定処理部154が、第1配列a(第1多項式情報143)に対して上記処理を実行することで、約定対象となる注文の識別情報Or1-1、Or1-2を特定する。約定処理部154が、第2配列a(第2多項式情報144)に対して上記処理を実行することで、約定対象となる注文の識別情報Or2-1、Or2-3を特定する。
次いで、約定処理部154は、上記処理を実行することで特定した約定の対象となる注文の識別情報を、約定結果情報145に登録する。また、約定処理部154は、約定対象の注文の情報を売り注文テーブル141または買い注文テーブル142より取得し、演算部153に通知する。
出力制御部155は、約定結果情報145を、表示部130に出力して表示させる処理部である。出力制御部155は、約定結果情報145を外部装置に送信して、各種の約定処理を依頼してもよい。
図13は、注文受付・取消処理の一例を示すフローチャートである。図13に示すように、処理が開始されると、注文受付部151は、約定数の条件が指定された注文を受け付ける(S101)。S101において受け付ける注文の種別(条件)としては、売り注文または買い注文、注文の追加または取り消し、最低約定数、注文数などが含まれる。
次いで、多項式生成部152は、受け付けた注文の種別(条件)をもとに、注文で指定された条件における約定数(注文数)を次数とする多項式(Po)に変換する(S102)。なお、多項式生成部152は、最低約定数がa株(例えば3株)、注文数がb株(例えば5株)のように約定数の条件に幅がある場合は、a~b株での約定数を次数とする多項式に変換する。具体的には、多項式生成部152は、1+x+xa+1+xa+2+…+xの多項式に変換する。
次いで、演算部153は、受け付けた注文は追加注文であるか否かを判定する(S103)。追加注文である場合(S103:Yes)、演算部153は、追加注文が売り注文の場合は第1多項式情報143、買い注文の場合は第2多項式情報144を読み出して既存多項式(P)を取得する。次いで、演算部153は、取得した既存多項式(P)に多項式(Po)を掛け合わせる(S104)。次いで、演算部153は、掛け合わせ後の既存多項式(P)で第1多項式情報143または第2多項式情報144を更新し、処理を終了する。
追加注文でなく、注文のキャンセルである場合(S103:No)、演算部153は、キャンセルする注文が売り注文の場合は第1多項式情報143、買い注文の場合は第2多項式情報144を読み出して既存多項式(P)を取得する。次いで、演算部153は、取得した既存多項式(P)を多項式(Po)で割る(S105)。次いで、演算部153は、割り算後の既存多項式(P)で第1多項式情報143または第2多項式情報144を更新し、処理を終了する。
図14は、約定処理の一例を示すフローチャートである。図14に示すように、処理が開始されると、約定処理部154は、第1多項式情報143および第2多項式情報144の既存多項式(第1の既存多項式および第2の既存多項式)から約定させる株数を決定する(S111)。具体的には、約定処理部154は、第1の既存多項式と、第2の既存多項式とを比較し、互いにT(0以外の係数が設定されている)となる最大数(最大の次数)を約定させる株数として決定する。ここで、決定した約定数はNとし、既存多項式はPとする。
次いで、約定処理部154は、売り注文および買い注文それぞれについて、約定対象となる注文に対するループ処理(S112~S117)を実行して約定させる注文を特定する。例えば、図5の場合は識別情報Or1-1、Or1-2の売り注文と、Or2-1、Or2-3の買い注文が約定対象となる注文となる。約定処理部154は、これらの各注文をiとするループ処理を行う。
具体的には、約定処理部154は、注文iの条件をもとに、多項式Qを生成する(S113)。次いで、演算部153は、既存多項式P(ただし、注文iが売り注文の場合は第1の既存多項式、買い注文の場合は第2の既存多項式)を多項式Qで割った多項式P’を計算する(S114)。
次いで、約定処理部154は、P、Q、P’の係数を比較することで注文iの約定数Mを決定する(S115)。多項式計算P(x)=Q(x)*P’(x)において、P(x)のxの係数をcとしたとき、cが0でなければ、Q(x)のcN-MとP(x)のcでc≠cとなるものが存在する。約定処理部154は、上述した条件を満たすようなMを決定する。なお、Mが0のときは0株約定、つまり、注文iは約定させないことを表す。
次いで、約定処理部154は、Nから決定した約定数Mを引き、既存多項式PをP’で置き換える(S116)。
ループ処理(S112~S117)に次いで、約定処理部154は、特定した約定させる注文を出力し(S118)、処理を終了する。
以上のように、情報処理装置100は、約定数の条件が指定された注文を受け付ける。情報処理装置100は、受け付けた注文それぞれについて、指定された条件における約定数を次数とする多項式とする。情報処理装置100は、受け付けた注文を組み合わせた注文状況を多項式の積による有限体上の多項式で表す。情報処理装置100は、注文状況を表す有限体上の多項式について、約定する注文またはキャンセルする注文に対応する多項式で割り算を行い、約定後またはキャンセル後の注文状況を表す有限体上の多項式に更新する。
これにより、情報処理装置100では、各注文を最初から組み合わせて再構築することなく、約定対象の注文を特定した後、または、注文のキャンセルを行った後の残りの注文に関する注文状況を得ることができる。したがって、情報処理装置100では、効率よく約定対象となる注文を特定していくことができる。
また、情報処理装置100は、受け付けた買い注文を組み合わせた買い注文状況を多項式の積による有限体上の第1の多項式で表す。情報処理装置100は、受け付けた売り注文を組み合わせた売り注文状況を多項式の積による有限体上の第2の多項式で表す。これにより、情報処理装置100では、買い注文を組み合わせた買い注文状況および売り注文を組み合わせた売り注文状況のそれぞれについて、約定対象の注文を特定した後、または、注文のキャンセルを行った後の注文状況を効率よく得ることができる。
また、情報処理装置100は、割り算後の有限体上の多項式について、特定の次数の項の係数に基づいて約定後またはキャンセル後の注文状況を表す有限体上の多項式として採用するか否かを決定する。このように、情報処理装置100は、割り算後の有限体上ついて、特定の次数の項の係数により採用/不採用とすることができる。これにより、情報処理装置100は、例えば、演算後の既存多項式における係数が偽陽性となるケースを排除することができる。
(第2の実施形態)
第1の実施形態では、売り注文を組み合わせた売り注文状況と、買い注文を組み合わせた買い注文状況とを別々の多項式で扱っている。このため、第1の実施形態では、注文件数が多くなると、約定の探索に要する計算時間やメモリ領域などの計算コストが増大する。
そこで、第2の実施形態では、売り注文および買い注文のうちの一方の注文について、多項式生成部152は、指定された条件における約定数を正の次数とする多項式とする。また、売り注文および買い注文のうちの他方の注文について、多項式生成部152は指定された条件における約定数を負の次数とする多項式とする。一例として、売り注文については正の次数、買い注文については負の次数とするが、次数の正負は逆であってもよい。
例えば、多項式生成部152は、a株の売り注文は1+x(a株での売りの約定:x、または約定しない:1)と表す。また、多項式生成部152は、a株の買い注文は1+x-a(a株での買いの約定:x-a、または約定しない:1)と表す。一例として、多項式生成部152は、1株の売り注文を1+xとする。また、多項式生成部152は、3株の買い注文を1+x-3とする。また、多項式生成部152は、2株の売り注文を1+xとする。
ついで、多項式生成部152は、売り注文および買い注文について正負の次数で表した各多項式の積による有限体上の1つの多項式として、売り注文および買い注文を組み合わせた注文状況を表す。多項式生成部152は、生成した多項式の情報を多項式情報143aとして記憶部140に格納する。
例えば、多項式生成部152は、1株の売り注文(1+x)と、3株の買い注文(1+x-3)とが到着した場合はその積により、売り注文および買い注文を組み合わせた注文状況の多項式を次のように求める。
(1+x)×(1+x-3)=x-3+x-2+1+x
ついで、多項式生成部152は、2株の売り注文(1+x)が到着した場合はその積により、売り注文および買い注文を組み合わせた注文状況の多項式を次のように更新する。
(x-3+x-2+1+x)×(1+x)=x-3+x-2+x-1+2+x+x+x
第2の実施形態において、演算部153は、売り注文または買い注文それぞれの注文状況に対応する多項式演算と同様、記憶部140に格納された多項式情報143aに基づく各種演算処理を行う。約定処理部154は、多項式情報143aを基にして、約定の対象となる注文を特定する。
売り注文および買い注文を組み合わせた注文状況を表す有限体上の1つの多項式では、定数項が1以外の値になった時に約定可能と判断できる。この多項式における定数項は、売りと買いとが釣り合っている位置(組み合わせ数)を表しており、例えば、定数項が1の場合は1つも約定させない組が1通りあることを表している。そして、定数項が1以外の値になったときには、約定させない組以外の組み合わせとして約定させる組み合わせが少なくとも1通りは存在((定数項の値)-1の組み合わせ数)していることを表している。このため、約定処理部154は、多項式情報143aが示す多項式における定数項をもとに、約定可能か否かを判断する。
ここで、約定処理部154が約定可能と判断した場合、多項式情報143aが示す多項式をもとに、約定処理部154が約定させる注文を特定する方法について、図15を参照して説明する。図15は、第2の実施形態にかかる情報処理装置の動作の一例を示すフローチャートである。
図15に示すように、約定処理部154が約定可能と判断したことで注文を特定する処理が開始されると、約定処理部154は、入力として多項式情報143aが示す注文をまとめた多項式P(x)を得る(S201)。
ついで、約定処理部154は、注文数(株数)の総和(売り数-買い数)を表す変数(n)と、約定させる注文を示す配列(A)を初期化(0または空の配列)する(S202)。
ついで、約定処理部154は、各注文(i)における注文数(株数)をaとして各注文のループ処理(S203~S210)を実行する。
具体的には、約定処理部154は、処理の対象とする注文(i)は売り注文であるか否かを判定する(S204)。売り注文である場合(S204:Yes)、約定処理部154は、p(x)を1+xai、n’=n-aとする(S205)。
売り注文でなく買い注文である場合(S204:No)、約定処理部154は、p(x)を1+x-ai、n’=n+aとする(S206)。
ついで、約定処理部154は、P’(x)=P(x)/p(x)を計算して元の多項式が表す注文状況から処理の対象とする注文を差し引いた多項式を求める(S207)。
ついで、約定処理部154は、P’(x)のxn’の係数が0か否かを判定る(S208)。xn’の係数が0でない場合(S208:Yes)、約定処理部154は、配列Aに注文(i)を加え、P(x)=P’(x)、n=n’とし(S209)、次のループ処理に戻す。xn’の係数が0である場合(S208:No)、約定処理部154は、P(x)、nはそのままとして次のループ処理に戻す(S210)。
ループ処理についで、約定処理部154は、n=0かつAは空でないかを判定する(S211)。n=0かつAが空である場合(S211:No)、約定処理部154は、S203へ処理を戻す。n=0かつAが空でない場合(S211:Yes)、約定処理部154は、約定させる注文を示す配列(A)を出力し(S212)、処理を終了する。
なお、上記のループ処理において、処理の対象とする注文(i)は、受付順としてもよい。これにより、約定処理部154は、約定させる優先順位を受付順とすることができる。
上記の処理は、売り注文および買い注文の注文数を最大に約定させるように注文を特定するものではない。そこで、売り注文および買い注文の注文数を最大に約定させるように注文を特定する処理を説明する。
まず、最大約定を求めるため、多項式生成部152は、1つの多項式の各項において、組み合わせた注文数の和の最大数と、組み合わせた注文の識別情報(例えば注文番号)とを示すラベルをインデックスとして多項式情報143aに含める。
約定処理部154は、多項式情報143aに含められた各項のインデックスをもとに、注文数を最大とする注文を特定する。具体的には、売り注文および買い注文を組み合わせた注文状況を示す多項式に含まれる定数項のラベルには、注文数を最大とするケース(注文数の和の最大数および注文の組み合わせ)が示されている。したがって、約定処理部154は、多項式情報143aに含まれる定数項のラベル(インデックス)に基づいて約定する売り注文および買い注文を特定する。
図16は、最大約定の実行例を説明する説明図である。例えば、多項式生成部152は、1株の売り注文(1+x)と、3株の買い注文(1+x-3)との積により、売り注文および買い注文を組み合わせた注文状況の多項式を求める。
ここで、多項式生成部152は、各項について、組み合わせた注文数の和の最大数と、組み合わせた注文の識別情報(注文番号)のインデックスを[]として付与する。図示例では、各項のインデックスを[組み合わせた注文数の和の最大数,(注文番号)]としている。
ついで、多項式生成部152は、2株の売り注文(1+x)が到着した場合はその積により、売り注文および買い注文を組み合わせた注文状況の多項式および各項のインデックスを更新する。
ここで、約定処理部154は、定数項が2であることから約定可能と判断し、この定数項のインデックスより約定する注文を特定する。図示例では、約定処理部154は、注文番号が(1)、(2)、(3)の売り注文および買い注文を、最大注文数6での約定を行うものとして特定する。
ここで、最大約定を求めるためにインデックス付きの多項式を求める多項式生成部152の動作について、図17、図18を参照して説明する。図17は、最大約定の動作例を示すフローチャートである。図18は、マージ処理の一例を示すフローチャートである。
図17に示すように、処理が開始されると、多項式生成部152は、多項式情報143aが示すラベル付き多項式P(x)と、n株の新規注文(O)の入力を受け付ける(S221)。
ついで、多項式生成部152は、P(x)をコピー(複製)したQ(x)を作成し(S222)、P(x)の各項cx[s,v]のループ処理を実行する(S223~S228)。ここで、[]は各項のインデックスを示し、sは注文数の最大値、vは計s株を達成する注文(注文番号)の列を示す。
ループ処理が開始されると、多項式生成部152は、v’としてvの後ろに新規注文(O)をつなげた注文のリストを用意する(S224)。ついで、多項式生成部152は、新規注文(O)は売り注文であるか否かを判定する(S225)。
新規注文(O)が売り注文である場合(S225:Yes)、多項式生成部152は、Q(x)にcxk+n[s+n,v’]を足すマージ処理を行い(S226)、次のループに処理を進める。新規注文(O)が売り注文でなく買い注文である場合(S225:No)、多項式生成部152は、Q(x)にcxk-n[s+n,v’]を足すマージ処理を行い(S227)、次のループに処理を進める。
図18に示すように、マージ処理が開始されると、多項式生成部152は、ラベル付き多項式Q(x)と、マージしたい項の情報(cx[s,v])の入力を受け付ける(S231)。
ついで、多項式生成部152は、Q(x)にxの項目が存在するか否かを判定する(S232)。Q(x)にxの項目が存在しない場合(S232:No)、多項式生成部152は、S237へ処理を進める。
Q(x)にxの項目が存在する場合(S232:Yes)、多項式生成部152は、Q(x)のxの項をc’x[s’,v’]とする(S233)。
ついで、多項式生成部152は、s≧s’であるか否かを判定し(S234)、s≧s’である場合(S234:Yes)はQ(x)のxの項を(c+c’)x[s,v]で置き換える(S235)。s≧s’でない場合(S234:No)、多項式生成部152は、Q(x)のxの項を(c+c’)x[s’,v’]で置き換える(S236)。
ついで、多項式生成部152は、上記の処理(S231~S236)で得られたQ(x)を処理結果として出力し(S237)、処理を終了する。
上記のループ処理の後、多項式生成部152は、得られたQ(x)を新たなインデックス付きの多項式として出力し(S229)、処理を終了する。、すなわち、多項式生成部152は、Q(x)をもとに多項式情報143aを更新する。
各項のインデックスは注文の羅列でありそのまま持っているとメモリ使用量が増大するが、上記の処理では、末尾に追加するという処理しか行わないため、トライ木のようなメモリ構造でインデックス保持が可能(トライ木のノードがインデックスに対応)である。すなわち、インデックスの圧縮でメモリ使用量の増加を抑えることができる。
図19は、インデックスの圧縮を説明する説明図である。図19に示すように、各項のインデックスのメモリ構造は、トライ木のノードがインデックスに対応したものと言える。したがって、注文番号(1)、(3)を組み合わせたノードn1に注文番号(2)を追加する場合には、注文番号(1)、(3)、(2)のノードn2となる。
以上のように、情報処理装置100は、約定数の条件が指定された売り注文および買い注文それぞれについて、売り注文および買い注文のうちの一方の注文を指定された条件における約定数を正の次数とする第1の多項式とする。また、情報処理装置100は、約定数の条件が指定された売り注文および買い注文それぞれについて、売り注文および買い注文のうちの他方の注文を指定された条件における約定数を負の次数とする第2の多項式とする。情報処理装置100は、売り注文および買い注文を組み合わせた注文状況を第1の多項式および第2の多項式の積による有限体上の1つの多項式で表す。情報処理装置100は、注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する。
このように、情報処理装置100は、売り注文および買い注文を組み合わせた注文状況を有限体上の1つの多項式で表すことから、売り注文および買い注文を同時に扱えるため、別々に扱う場合と比べてメモリ効率がよい。したがって、情報処理装置100は、取引の約定を求める際の処理における計算コストを低減することができる。
また、情報処理装置100は、1つの多項式に含まれる定数項が1以外の整数となった場合に、約定する売り注文および買い注文の特定を行う。1つの多項式に含まれる定数項は、約定させないケース(定数項が1となる)を含む、売り注文と買い注文とが釣り合っているケースを表している。つまり、定数項が1以外の整数となった場合には、約定させないケース以外に約定させるケース(売り注文、買い注文の組み合わせ)が少なくとも1通りあることとなる。したがって、情報処理装置100は、定数項が1以外の整数となった場合に、約定する売り注文および買い注文の特定を行うことで、約定の条件を満たす売り注文と買い注文の組み合わせを特定できる。
また、情報処理装置100は、1つの多項式の各項において、組み合わせた注文数の和の最大数と、組み合わせた注文の識別情報とを示すラベルを付与し、このラベルに基づいて約定する売り注文および買い注文を特定する。これにより、情報処理装置100は、1つの多項式の各項に付与したラベルをもとに、約定する売り注文および買い注文を容易に特定できる。
また、情報処理装置100は、1つの多項式に含まれる定数項のラベルに基づいて約定する売り注文および買い注文を特定する。1つの多項式に含まれる定数項のラベルには、約定の条件を満たす売り注文と買い注文の組み合わせにおいて、注文数を最大とするケースが示されている。したがって、情報処理装置100は、定数項のラベルに基づいて約定する売り注文および買い注文を特定することで、約定の注文数を最大化することができる。
なお、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、本実施形態では証券取引市場における株取引で全量約定、または、一定数の注文数を条件にして、注文を行う場合に適用するケースを例示したが、株取引への適用に限定するものではない。例えば、先物取引市場などの株取引以外の取引に適用してもよい。
また、情報処理装置100で行われる各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)あるいはGPU(Graphics Processing Unit)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)あるいはGPUで解析実行されるプログラム上、またはワイヤードロジックによるハードウエア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。また、情報処理装置100で行われる各種処理機能は、クラウドコンピューティングにより、複数のコンピュータが協働して実行してもよい。
次に、上記実施例に示した情報処理装置100と同様の機能を実現するコンピュータのハードウエア構成の一例について説明する。図20は、実施形態の情報処理装置100と同様の機能を実現するコンピュータのハードウエア構成の一例を示す図である。
図20に示すように、コンピュータ300は、各種演算処理を実行するCPU301と、ユーザからのデータの入力を受け付ける入力装置302と、ディスプレイ303とを有する。また、コンピュータ300は、有線または無線ネットワークを介して、外部装置等との間でデータの授受を行う通信装置304と、インタフェース装置305とを有する。また、コンピュータ300は、各種情報を一時記憶するRAM306と、ハードディスク装置307とを有する。そして、各装置301~307は、バス308に接続される。
ハードディスク装置307は、注文受付プログラム307a、多項式生成プログラム307b、演算プログラム307c、約低処理プログラム307d、出力制御プログラム307eを有する。また、CPU301は、各プログラム307a~307eを読み出してRAM306に展開する。
注文受付プログラム307aは、注文受付プロセス306aとして機能する。多項式生成プログラム307bは、多項式生成プロセス306bとして機能する。演算プログラム307cは、演算プロセス306cとして機能する。約低処理プログラム307dは、約低処理プロセス306dとして機能する。出力制御プログラム307eは、出力制御プロセス306eとして機能する。
注文受付プロセス306aの処理は、注文受付部151の処理に対応する。多項式生成プロセス306bの処理は、多項式生成部152の処理に対応する。演算プロセス306cの処理は、演算部153の処理に対応する。約低処理プロセス306dの処理は、約定処理部154の処理に対応する。出力制御プロセス306eの処理は、出力制御部155の処理に対応する。
なお、各プログラム307a~307eについては、必ずしも最初からハードディスク装置307に記憶させておかなくてもよい。例えば、コンピュータ300に挿入されるフレキシブルディスク(FD)、CD-ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ300が各プログラム307a~307eを読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN等のネットワークに接続された外部装置に各プログラム307a~307eを記憶させておき、コンピュータ300がネットワークに接続された外部装置から各プログラム307a~307eを読み出して実行するようにしてもよい。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)約定数の条件が指定された売り注文および買い注文それぞれについて、前記売り注文および前記買い注文のうちの一方の注文を指定された前記条件における約定数を正の次数とする第1の多項式とし、前記売り注文および前記買い注文のうちの他方の注文を指定された前記条件における約定数を負の次数とする第2の多項式とし、
前記売り注文および前記買い注文を組み合わせた注文状況を前記第1の多項式および前記第2の多項式の積による有限体上の1つの多項式で表し、
前記注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する、
処理をコンピュータに実行させることを特徴とする約定プログラム。
(付記2)前記特定する処理は、前記1つの多項式に含まれる定数項が1以外の整数となった場合に、前記約定する売り注文および買い注文の特定を行う、
ことを特徴とする付記1に記載の約定プログラム。
(付記3)前記表す処理は、前記1つの多項式の各項において、組み合わせた注文数の和の最大数と、組み合わせた注文の識別情報とを示すラベルを付与し、
前記特定する処理は、付与された前記ラベルに基づいて前記約定する売り注文および買い注文を特定する、
ことを特徴とする付記2に記載の約定プログラム。
(付記4)前記約定する処理は、前記1つの多項式に含まれる前記定数項のラベルに基づいて前記約定する売り注文および買い注文を特定する、
ことを特徴とする付記3に記載の約定プログラム。
(付記5)約定数の条件が指定された売り注文および買い注文それぞれについて、前記売り注文および前記買い注文のうちの一方の注文を指定された前記条件における約定数を正の次数とする第1の多項式とし、前記売り注文および前記買い注文のうちの他方の注文を指定された前記条件における約定数を負の次数とする第2の多項式とし、
前記売り注文および前記買い注文を組み合わせた注文状況を前記第1の多項式および前記第2の多項式の積による有限体上の1つの多項式で表し、
前記注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する、
処理をコンピュータが実行することを特徴とする約定方法。
(付記6)前記特定する処理は、前記1つの多項式に含まれる定数項が1以外の整数となった場合に、前記約定する売り注文および買い注文の特定を行う、
ことを特徴とする付記5に記載の約定方法。
(付記7)前記表す処理は、前記1つの多項式の各項において、組み合わせた注文数の和の最大数と、組み合わせた注文の識別情報とを示すラベルを付与し、
前記特定する処理は、付与された前記ラベルに基づいて前記約定する売り注文および買い注文を特定する、
ことを特徴とする付記6に記載の約定方法。
(付記8)前記約定する処理は、前記1つの多項式に含まれる前記定数項のラベルに基づいて前記約定する売り注文および買い注文を特定する、
ことを特徴とする付記7に記載の約定方法。
(付記9)約定数の条件が指定された売り注文および買い注文それぞれについて、前記売り注文および前記買い注文のうちの一方の注文を指定された前記条件における約定数を正の次数とする第1の多項式とし、前記売り注文および前記買い注文のうちの他方の注文を指定された前記条件における約定数を負の次数とする第2の多項式とし、
前記売り注文および前記買い注文を組み合わせた注文状況を前記第1の多項式および前記第2の多項式の積による有限体上の1つの多項式で表し、
前記注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する、
処理を実行する制御部を含むことを特徴とする情報処理装置。
(付記10)前記特定する処理は、前記1つの多項式に含まれる定数項が1以外の整数となった場合に、前記約定する売り注文および買い注文の特定を行う、
ことを特徴とする付記9に記載の情報処理装置。
(付記11)前記表す処理は、前記1つの多項式の各項において、組み合わせた注文数の和の最大数と、組み合わせた注文の識別情報とを示すラベルを付与し、
前記特定する処理は、付与された前記ラベルに基づいて前記約定する売り注文および買い注文を特定する、
ことを特徴とする付記10に記載の情報処理装置。
(付記12)前記約定する処理は、前記1つの多項式に含まれる前記定数項のラベルに基づいて前記約定する売り注文および買い注文を特定する、
ことを特徴とする付記11に記載の情報処理装置。
100…情報処理装置
110…通信部
120…入力部
130…表示部
140…記憶部
141…売り注文テーブル
142…買い注文テーブル
143…第1多項式情報
143a…多項式情報
144…第2多項式情報
145…約定結果情報
150…制御部
151…注文受付部
152…多項式生成部
153…演算部
154…約定処理部
155…出力制御部
300…コンピュータ
301…CPU
302…入力装置
303…ディスプレイ
304…通信装置
305…インタフェース装置
306…RAM
306a…注文受付プロセス
306b…多項式生成プロセス
306c…演算プロセス
306d…約低処理プロセス
306e…出力制御プロセス
307…ハードディスク装置
307a…注文受付プログラム
307b…多項式生成プログラム
307c…演算プログラム
307d…約低処理プログラム
307e…出力制御プログラム
308…バス
n1、n2…ノード

Claims (6)

  1. 約定数の条件が指定された売り注文および買い注文それぞれについて、前記売り注文および前記買い注文のうちの一方の注文を指定された前記条件における約定数を正の次数とする第1の多項式とし、前記売り注文および前記買い注文のうちの他方の注文を指定された前記条件における約定数を負の次数とする第2の多項式とし、
    前記売り注文および前記買い注文を組み合わせた注文状況を前記第1の多項式および前記第2の多項式の積による有限体上の1つの多項式で表し、
    前記注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する、
    処理をコンピュータに実行させることを特徴とする約定プログラム。
  2. 前記特定する処理は、前記1つの多項式に含まれる定数項が1以外の整数となった場合に、前記約定する売り注文および買い注文の特定を行う、
    ことを特徴とする請求項1に記載の約定プログラム。
  3. 前記表す処理は、前記1つの多項式の各項において、組み合わせた注文数の和の最大数と、組み合わせた注文の識別情報とを示すラベルを付与し、
    前記特定する処理は、付与された前記ラベルに基づいて前記約定する売り注文および買い注文を特定する、
    ことを特徴とする請求項2に記載の約定プログラム。
  4. 前記約定する処理は、前記1つの多項式に含まれる前記定数項のラベルに基づいて前記約定する売り注文および買い注文を特定する、
    ことを特徴とする請求項3に記載の約定プログラム。
  5. 約定数の条件が指定された売り注文および買い注文それぞれについて、前記売り注文および前記買い注文のうちの一方の注文を指定された前記条件における約定数を正の次数とする第1の多項式とし、前記売り注文および前記買い注文のうちの他方の注文を指定された前記条件における約定数を負の次数とする第2の多項式とし、
    前記売り注文および前記買い注文を組み合わせた注文状況を前記第1の多項式および前記第2の多項式の積による有限体上の1つの多項式で表し、
    前記注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する、
    処理をコンピュータが実行することを特徴とする約定方法。
  6. 約定数の条件が指定された売り注文および買い注文それぞれについて、前記売り注文および前記買い注文のうちの一方の注文を指定された前記条件における約定数を正の次数とする第1の多項式とし、前記売り注文および前記買い注文のうちの他方の注文を指定された前記条件における約定数を負の次数とする第2の多項式とし、
    前記売り注文および前記買い注文を組み合わせた注文状況を前記第1の多項式および前記第2の多項式の積による有限体上の1つの多項式で表し、
    前記注文状況を表す有限体上の1つの多項式に基づいて約定する売り注文および買い注文を特定する、
    処理を実行する制御部を含むことを特徴とする情報処理装置。
JP2021109354A 2021-06-30 2021-06-30 約定プログラム、約定方法および情報処理装置 Pending JP2023006645A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2021109354A JP2023006645A (ja) 2021-06-30 2021-06-30 約定プログラム、約定方法および情報処理装置
US17/694,875 US20230005058A1 (en) 2021-06-30 2022-03-15 Computer-readable recording medium storing contract program, contract method, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021109354A JP2023006645A (ja) 2021-06-30 2021-06-30 約定プログラム、約定方法および情報処理装置

Publications (1)

Publication Number Publication Date
JP2023006645A true JP2023006645A (ja) 2023-01-18

Family

ID=84786498

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021109354A Pending JP2023006645A (ja) 2021-06-30 2021-06-30 約定プログラム、約定方法および情報処理装置

Country Status (2)

Country Link
US (1) US20230005058A1 (ja)
JP (1) JP2023006645A (ja)

Also Published As

Publication number Publication date
US20230005058A1 (en) 2023-01-05

Similar Documents

Publication Publication Date Title
Chica et al. A multiobjective model and evolutionary algorithms for robust time and space assembly line balancing under uncertain demand
EP3796166B1 (en) Graph data-based task scheduling method, device, storage medium and apparatus
US9223900B2 (en) Machine optimization devices, methods, and systems
JP2021517295A (ja) レコメンダシステムのための高効率畳み込みネットワーク
US20110040619A1 (en) Belief propagation for generalized matching
US7668728B2 (en) Time polynomial arrow-debreu market equilibrium
JP2011138470A (ja) 特許評価方法及びそのコンピュータ読み取り可能な保存媒体
Arunachaleswaran et al. Fair and efficient cake division with connected pieces
CN113283671B (zh) 一种预测补货量的方法、装置、计算机设备及存储介质
Breskovic et al. Cost-efficient utilization of public sla templates in autonomic cloud markets
Nazemi et al. Bi-objective facility location under uncertainty with an application in last-mile disaster relief
JP2022108055A (ja) 約定プログラム、約定方法および情報処理装置
US8086520B2 (en) Constraint satisfaction for solutions to an auction winner-determination problem
CN112102043B (zh) 物品推荐页面生成方法、装置、电子设备和可读介质
JP2023006645A (ja) 約定プログラム、約定方法および情報処理装置
JP2023006585A (ja) 約定プログラム、約定方法および情報処理装置
JP2022108187A (ja) 約定プログラム、約定方法および情報処理装置
Maurer et al. Cost and benefit of the SLA mapping approach for defining standardized goods in cloud computing markets
CN115222338A (zh) 一种物料采购系统,一种采购清单生成方法及组件
Xu et al. A multi-attribute rating based trust model: improving the personalized trust modeling framework
Cruz-Mencia et al. Parallelisation and application of ad 3 as a method for solving large scale combinatorial auctions
Ren et al. A dynamic, optimal approach for multi-issue negotiation under time constraints
Kumar et al. Resource management through fuzzy assignment problem in cloud computing environment
WO2022222882A1 (zh) 信息处理方法及计算设备
JP2022087836A (ja) ビッグ・データにより機械学習モデルを訓練するためのシャッフル型勾配法、コンピュータ実施方法、コンピューティング・デバイス、非一時的コンピュータ可読記憶媒体(ビッグ・データにより機械学習モデルを訓練するためのシャッフル型勾配法)