Agreement Program, Agreement Method, and Information Processing Apparatus

The matching program uses a Bool(T, F) array to efficiently manage sell and buy orders, reducing computational cost by maximizing matches through strategic order quantity handling.

JP7714939B2Active Publication Date: 2025-07-30FUJITSU LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2021112910
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Filing Date
2021-07-07
Publication Date
2025-07-30
Estimated Expiration
2041-07-07

AI Technical Summary

Technical Problem

Existing systems require significant computational cost to match sell and buy orders due to separate handling of order statuses, leading to inefficiencies in transaction processing.

Method used

A matching program that utilizes a Bool(T, F) array to manage sell and buy orders, setting and specifying orders to maximize matches by counting order quantities as positive or negative, and identifying orders based on array information.

Benefits of technology

Reduces computational cost in seeking transaction agreements by optimizing the matching process.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007714939000001
    Figure 0007714939000001
  • Figure 0007714939000002
    Figure 0007714939000002
  • Figure 0007714939000003
    Figure 0007714939000003
Patent Text Reader

Abstract

To reduce calculation costs when demanding a contract of transaction.SOLUTION: A contract program causes a computer to execute setting processing and specifying processing. The setting processing, about a selling order and a purchase order accepted, sets information based on the selling order and the purchase order accepted with respect to an element of one array specified by adding the number of orders in one order of the selling order and the purchase order, and subtracting the number of orders in the other order. The specifying processing specifies the order which becomes a contract object from among the selling order and the purchase order accepted, on the basis of the information set in the one array.SELECTED DRAWING: Figure 36
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments of the present invention relate to a contract program, a contract method, and an information processing apparatus.

Background Art

[0002] In the securities market, the establishment of a transaction such as a stock transaction is called "contract". For example, when the conditions of a user who places a sell order and a user who places a buy order match and the transaction is established, this state is called a contract. When a user places an order (a sell or buy order), the order may be placed under the condition of full contract or a certain number of order quantities.

[0003] In the following description, among the conditions set for an order, the minimum number of contracts is denoted as the "minimum contract number". For example, when there is a sell order with an order quantity "N" with a condition of a minimum contract number "M", a buy order with an order quantity of "M" or more causes the transaction to be established.

[0004] FIG. 40 is a diagram showing an example of matching between a sell order and a buy order with a minimum contract number set. In the example shown in FIG. 40, as sell orders, orders Or1 and Or2 exist. Order Or1 is an order with an order quantity of "10" and a minimum contract number of "5". Order Or2 is an order with an order quantity of "18" and a minimum contract number of "13".

[0005] As buy orders, orders Or3, Or4, and Or5 exist. Order Or3 is an order with an order quantity of "14" and a minimum contract number of "5". Order Or4 is an order with an order quantity of "21" and a minimum contract number of "21". Order Or5 is an order with an order quantity of "10" and a minimum contract number of "0".

[0006] When maximizing the number of matches according to the conditions of sell orders and buy orders shown in Fig. 40, the matching results are as follows. For example, between order Or1 and order Or3, the order quantity "5" is matched, and between order Or1 and order Or4, the order quantity "5" is matched. Also, between order Or2 and order Or3, the order quantity "2" is matched, and between order Or2 and order Or4, the order quantity "16" is matched.

Prior Art Documents

Patent Documents

[0007]

Patent Document 1

Patent Document 2

Summary of the Invention

Problems to be Solved by the Invention

[0008] However, in the above prior art, since the order statuses of sell orders and buy orders to be matched are handled separately, there is a problem that a great deal of computational cost is required for match matching.

[0009] In one aspect, an object is to provide a matching program, a matching method, and an information processing apparatus that can reduce the computational cost when seeking a match in a transaction.

Means for Solving the Problems

[0010] In one proposal, the matching program causes a computer to execute a setting process and a specifying process. The setting process counts the order quantity in one of the sell order and the buy order as positive and the order quantity in the other order as negative for each element of a specific array, and sets information based on the received sell order and buy order for the element. The specifying process specifies the orders to be matched from among the received sell orders and buy orders based on the information set in one array.

Advantages of the Invention

[0011] The calculation cost when seeking a transaction agreement can be reduced.

Brief Description of the Drawings

[0012]

Figure 1

Figure 2

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Figure 16

Figure 17

Figure 18

Figure 19

Figure 20

Figure 21

Figure 22

Figure 23

Figure 24

Figure 25

Figure 26

Figure 27

Figure 28

Figure 29

Figure 30

Figure 31

Figure 32

Figure 33

Figure 34

Figure 35

Figure 36

Figure 37

Figure 38

Figure 39

Figure 40

MODE FOR CARRYING OUT THE INVENTION

[0013] Hereinafter, with reference to the drawings, a commitment program, a commitment method, and an information processing apparatus according to an embodiment will be described. In the embodiment, components having the same function are denoted by the same reference numerals, and redundant descriptions are omitted. Note that the commitment program, the commitment method, and the information processing apparatus described in the following embodiments are merely examples and do not limit the embodiments. Also, the following embodiments may be appropriately combined within a non - conflicting range.

Example

[0014] The information processing apparatus according to the first embodiment prepares a Bool(T, F) array a to manage sell orders or buy orders respectively, and identifies an order to be committed such that the number of commitments is maximized.

[0015] The Bool(T, F) array a is denoted as "array a". An index i of 0 or more is set for array a, and "T" or "F" is set for the element corresponding to index i of array a. When the element corresponding to index i of array a is "T", it means that there is an order with order number i. When the element corresponding to index i of array a is "F", it means that there is no order with order number i. "T" is an example of a registration symbol.

[0016] That the element of index i of array a is "T" is indicated by a[i]=T. That the element of index i of array a is "F" is indicated by a[i]=F.

[0017] In the first embodiment, the array a storing information related to sell orders is denoted as "the first array a", and the array a storing information related to buy orders is denoted as "the second array a".

[0018] First, the process of the information processing apparatus according to the first embodiment calculating the maximum number of matchable commitments will be described. FIG. 1 is a diagram for explaining the process for the first array a when a sell order is received. When the information processing apparatus receives a sell order with order number x where a[i]=T, it sets a[i + x]=T.

[0019] Let the initial state of the first array a be as shown in step S10. In the initial state of the first array a, a[0] = T, and all other elements are "F".

[0020] When a sell order with an order quantity of 3 is received, the state of the first array a becomes as shown in step S11. Since the information processing device determines that a[0] = T in the first array a, it sets a[0 + 3] = T.

[0021] When an order with an order quantity of 5 is received, the state of the first array a becomes as shown in step S12. Since the information processing device determines that a[0] = T in the first array a, it sets a[0 + 5] = T. Since the information processing device determines that a[3] = T in the first array a, it sets a[3 + 5] = T.

[0022] The index at which the element of the first array a is T indicates the matchable contract quantity. For example, in the state of the first array a in step S12 of FIG. 1, the element at index i = 8 is "T", and such "8" is the quantity at which the order quantity "3" and the order quantity "5" are fully contracted.

[0023] FIG. 2 is a diagram showing an example of the second array a when a buy order is received. The information processing device sets a[i + x] = T when a buy order with an order quantity of x is received with a[i] = T, in the same manner as the processing for the first array a when a sell order is received as described in FIG. 1. Also, in the initial state of the second array a, a[0] = T, and all other elements are "F".

[0024] For example, when buy orders with order quantities of 2, 3, and 6 are received in sequence, the state of the second array a becomes as shown in FIG. 2. That is, a[0] = T, a[2] = T, a[3] = T, a[5] = T, a[6] = T, a[8] = T, a[9] = T, a

[11] = T, and all other elements are "F".

[0025] The information processing device compares the first array a of sell orders described in FIG. 1 with the second array a described in FIG. 2, and identifies the maximum contract quantity that can be matched.

[0026] FIG. 3 is a diagram showing an example of a process for calculating the contract number according to the first embodiment. The information processing device compares the first array a with the second array a, and identifies the largest index among the indices where both the element of the first array a and the element of the second array a are "T" as the maximum contract number. In the example shown in FIG. 3, since the largest index among the indices where both the element of the first array a and the element of the second array a are "T" is "8", the information processing device calculates the maximum contract quantity that can be matched as "8".

[0027] Subsequently, a process in which the information processing device according to the first embodiment identifies an order to be contracted will be described. When the information processing device receives an order and sets "T" for the first time in the element of the array a, it can identify an order to be contracted by registering auxiliary information indicating the order reception order (order order) and quantity (order quantity) for each index.

[0028] FIG. 4 is a diagram (2) for explaining the process for the first array a when a sell order is received. In FIG. 4, the illustration of the initial state of the first array a is omitted, but the initial state of the first array a corresponds to the state of the first array a in step S10 described in FIG. 1. The information processing device does not give auxiliary information to elements that are "T" in the initial state. Note that the order reception order of the sell order corresponds to the "first order order", and the order quantity of the sell order corresponds to the "first order quantity".

[0029] First (order reception order = 1), when a sell order with an order quantity of 2 is received, the state of the first array a becomes as shown in step S21. Since the first array a in the initial state has a[0]=T, the information processing device sets a[0 + 2]=T. Also, auxiliary information sub1-2 is registered at index i = 2. In the auxiliary information sub1-2, the order "1" and the quantity "2" are set.

[0030] Subsequently (order reception sequence = 2), when a sell order with an order quantity of 3 is received, the state of the first array a becomes as shown in step S22. Since the first array a has a[0] = T, the information processing device sets a[0 + 3] = T and registers auxiliary information sub1-3 at index i = 3. The auxiliary information sub1-3 is set with the order number "2" and the quantity "3".

[0031] Since the first array a has a[2] = T, the information processing device sets a[2 + 3] = T and registers auxiliary information sub1-5 at index i = 5. The auxiliary information sub1-5 is set with the order number "2" and the quantity "3".

[0032] Although not shown in the figure, when the information processing device receives a buy order, it also sets "T" in the elements of the second array a and registers auxiliary information at the index in the same manner as in FIG. 4. Note that the order reception sequence of the buy order corresponds to the "second order sequence", and the order quantity of the buy order corresponds to the "second order quantity".

[0033] FIG. 5 is a diagram (1) for explaining the process of specifying orders to be matched according to the first embodiment. In FIG. 5, the information processing device sequentially receives sell orders Or1-1 and Or1-2. The order Or1-1 is an order with an order quantity of "3". The order Or1-2 is an order with an order quantity of "5". The information processing device sequentially receives buy orders Or2-1, Or2-2, and Or2-3. The order Or2-1 is an order with an order quantity of "2". The order Or2-2 is an order with an order quantity of "3". The order Or2-3 is an order with an order quantity of "6".

[0034] When the information processing device sequentially receives orders Or1-1 and Or1-2, it executes the process for the first array a when a sell order is received, thereby setting the first array a to the state as shown in FIG. 5. The elements of the first array a at indices i = 0, 3, 5, 8 become "T", and the other elements become "F". The "T" at index i = 0 is set in the initial state.

[0035] The information processing device sets auxiliary information sub1-3 at index i = 3 of the first array a. In the auxiliary information sub1-3, the order "1" and the quantity "3" are set. The information processing device sets auxiliary information sub1-5 at index i = 5 of the first array a. In the auxiliary information sub1-5, the order "2" and the quantity "5" are set. The information processing device sets auxiliary information sub1-8 at index i = 8 of the first array a. In the auxiliary information sub1-8, the order "2" and the quantity "5" are set.

[0036] When the information processing device receives order Or2-1, Or2-2, Or2-3 in sequence, it executes the process for the second array a when a buy order is received, and sets the second array a to the state as shown in FIG. 5. The elements at indexes i = 0, 2, 3, 5, 6, 8, 9, 11 of the second array a become "T", and the other elements become "F". The "T" at index i = 0 is set in the initial state.

[0037] The information processing device sets auxiliary information sub2-2 at index i = 2 of the second array a. In the auxiliary information sub2-2, the order "1" and the quantity "2" are set. The information processing device sets auxiliary information sub2-3 at index i = 3 of the second array a. In the auxiliary information sub2-3, the order "2" and the quantity "3" are set. The information processing device sets auxiliary information sub2-5 at index i = 5 of the second array a. In the auxiliary information sub2-5, the order "2" and the quantity "3" are set.

[0038] The information processing device sets the auxiliary information sub2-6 at the index i = 6 of the second array a. In the auxiliary information sub2-6, the order "3" and the quantity "6" are set. The information processing device sets the auxiliary information sub2-8 at the index i = 8 of the second array a. In the auxiliary information sub2-8, the order "3" and the quantity "6" are set. The information processing device sets the auxiliary information sub2-9 at the index i = 9 of the second array a. In the auxiliary information sub2-9, the order "3" and the quantity "6" are set. The information processing device sets the auxiliary information sub2-11 at the index i = 11 of the second array a. In the auxiliary information sub2-11, the order "3" and the quantity "6" are set.

[0039] The information processing device compares the first array a and the second array a, and calculates the largest index among the indices where both the elements of the first array a and the elements of the second array a are "T" as the agreed constant. In the example shown in FIG. 5, among the indices where both the elements of the first array a and the elements of the second array a are "T", the largest index is the index i = 8. Therefore, the information processing device sets the agreed constant to "8".

[0040] [[ID=�]] After calculating the agreed constant, the information processing device identifies the order to be agreed based on the auxiliary information set in the array a. When the information processing device agrees at the agreed constant i0, with the initial value of the index i = i0, the following processing is repeatedly executed until i = 0.

[0041] The processing that the information processing device repeats is as follows. The information processing device targets the order where a[i]=T for agreement. Next, the information processing device identifies the quantity α included in the auxiliary information set in a[i], and updates the index i by i = i - α.

[0042] Based on the "first array a" in FIG. 5, the processing for the information processing device to identify the sell order to be agreed is described.

[0043] The information processing device targets for settlement the order corresponding to the auxiliary information sub1-8 set at the index i = 8 corresponding to the settlement number "8". The auxiliary information 1-8 corresponds to the order Or1-2 with the order number "2" and the quantity "5". The information processing device acquires the quantity α = 5 included in the auxiliary information sub1-8 and updates the index i = 8 - 5 = 3.

[0044] The information processing device targets for settlement the order corresponding to the auxiliary information sub1-3 set at the index i = 3. The auxiliary information 1-3 corresponds to the order Or1-1 with the order number "1" and the quantity "3". The information processing device acquires the quantity α = 3 included in the auxiliary information sub1-3 and updates the index i = 3 - 3 = 0. Since the index i = 0, the information processing device ends the process.

[0045] Based on the "second array a" in FIG. 5, the process by which the information processing device identifies the buy order to be settled will be described.

[0046] The information processing device targets for settlement the order corresponding to the auxiliary information sub2-8 set at the index i = 8 corresponding to the settlement number "8". The auxiliary information 2-8 corresponds to the order Or2-3 with the order number "3" and the quantity "6". The information processing device acquires the quantity α = 6 included in the auxiliary information sub2-8 and updates the index i = 8 - 6 = 2.

[0047] The information processing device targets for settlement the order corresponding to the auxiliary information sub2-2 set at the index i = 2. The auxiliary information 2-2 corresponds to the order Or2-1 with the order number "1" and the quantity "2". The information processing device acquires the quantity α = 2 included in the auxiliary information sub2-2 and updates the index i = 2 - 2 = 0. Since the index i = 0, the information processing device ends the process.

[0048] By the above process, the sell orders Or1-1, Or1-2 and the buy orders Or2-1, Or2-3 to be settled are identified.

[0049] FIG. 6 is a diagram (2) for explaining a process of specifying an order to be an agreement target according to the first embodiment. In FIG. 6, an information processing apparatus sequentially receives orders Or1-1, Or1-2, Or1-3, and Or1-4 as sell orders. Order Or1-1 is an order with an order quantity of "2". Order Or1-2 is an order with an order quantity of "3". Order Or1-3 is an order with an order quantity of "2". Order Or1-4 is an order with an order quantity of "6".

[0050] The information processing apparatus sequentially receives orders Or2-1, Or2-2, Or2-3, and Or2-4 as buy orders. Order Or2-1 is an order with an order quantity of "5". Order Or2-2 is an order with an order quantity of "1". Order Or2-3 is an order with an order quantity of "4". Order Or2-4 is an order with an order quantity of "2".

[0051] When the information processing apparatus sequentially receives orders Or1-1, Or1-2, Or1-3, and Or1-4, the information processing apparatus executes a process on the first array a when a buy order is received, and sets the first array a to the state as shown in FIG. 6. The elements at indexes i = 0, 2 to 11, 13 of the first array a become "T", and the other elements become "F". The "T" at index i = 0 is set in the initial state.

[0052] The information processing apparatus sets auxiliary information sub1-2 at index i = 2 of the first array a. The order "1" and the quantity "2" are set in the auxiliary information sub1-2. The information processing apparatus sets auxiliary information sub1-3 at index i = 3 of the first array a. The order "2" and the quantity "3" are set in the auxiliary information sub1-3. The information processing apparatus sets auxiliary information sub1-4 at index i = 4 of the first array a. The order "3" and the quantity "2" are set in the auxiliary information sub1-4.

[0053] The information processing device sets auxiliary information sub1-5 at index i = 5 of the first array a. In the auxiliary information sub1-5, the order "2" and the quantity "3" are set. The information processing device sets auxiliary information sub1-6 at index i = 6 of the first array a. In the auxiliary information sub1-6, the order "4" and the quantity "6" are set. The information processing device sets auxiliary information sub1-7 at index i = 7 of the first array a. In the auxiliary information sub1-7, the order "3" and the quantity "2" are set.

[0054] The information processing device sets auxiliary information sub1-8 at index i = 8 of the first array a. In the auxiliary information sub1-8, the order "4" and the quantity "6" are set. The information processing device sets auxiliary information sub1-9 at index i = 9 of the first array a. In the auxiliary information sub1-9, the order "4" and the quantity "6" are set. The information processing device sets auxiliary information sub1-10 at index i = 10 of the first array a. In the auxiliary information sub1-10, the order "4" and the quantity "6" are set.

[0055] The information processing device sets auxiliary information sub1-11 at index i = 11 of the first array a. In the auxiliary information sub1-11, the order "4" and the quantity "6" are set. The information processing device sets auxiliary information sub1-13 at index i = 13 of the first array a. In the auxiliary information sub1-13, the order "4" and the quantity "6" are set.

[0056] When the information processing device receives order Or2-1, Or2-2, Or2-3, Or2-4 in sequence, it executes the processing for the second array a when a buy order is received, thereby setting the second array a to the state as shown in FIG. 6. The elements of the second array a with indexes i = 0 to 12 become "T", and the other elements become "F". The "T" at index i = 0 is set in the initial state.

[0057] The information processing device sets the auxiliary information sub2-1 at the index i = 1 of the second array a. In the auxiliary information sub2-1, the order "2" and the quantity "1" are set. The information processing device sets the auxiliary information sub2-2 at the index i = 2 of the second array a. In the auxiliary information sub2-2, the order "4" and the quantity "2" are set. The information processing device sets the auxiliary information sub2-3 at the index i = 3 of the second array a. In the auxiliary information sub2-3, the order "4" and the quantity "2" are set.

[0058] The information processing device sets the auxiliary information sub2-4 at the index i = 4 of the second array a. In the auxiliary information sub2-4, the order "3" and the quantity "4" are set. The information processing device sets the auxiliary information sub2-5 at the index i = 5 of the second array a. In the auxiliary information sub2-5, the order "1" and the quantity "5" are set. The information processing device sets the auxiliary information sub2-6 at the index i = 6 of the second array a. In the auxiliary information sub2-6, the order "2" and the quantity "1" are set.

[0059] The information processing device sets the auxiliary information sub2-7 at the index i = 7 of the second array a. In the auxiliary information sub2-7, the order "4" and the quantity "2" are set. The information processing device sets the auxiliary information sub2-8 at the index i = 8 of the second array a. In the auxiliary information sub2-8, the order "4" and the quantity "2" are set. The information processing device sets the auxiliary information sub2-9 at the index i = 9 of the second array a. In the auxiliary information sub2-9, the order "3" and the quantity "4" are set.

[0060] The information processing device sets the auxiliary information sub2-10 at the index i = 10 of the second array a. In the auxiliary information sub2-10, the order "3" and the quantity "4" are set. The information processing device sets the auxiliary information sub2-11 at the index i = 11 of the second array a. In the auxiliary information sub2-11, the order "4" and the quantity "2" are set. The information processing device sets the auxiliary information sub2-12 at the index i = 12 of the second array a. In the auxiliary information sub2-12, the order "4" and the quantity "2" are set.

[0061] The information processing apparatus compares the first array a with the second array a, and calculates, as a convention constant, the largest index among the indices at which both the element of the first array a and the element of the second array a are "T". In the example shown in FIG. 6, the largest index among the indices at which both the element of the first array a and the element of the second array a are "T" is index i = 11. Therefore, the information processing apparatus sets the convention constant to "11".

[0062] Based on the "first array a" in FIG. 6, a process for the information processing apparatus to identify a confirmed sell order will be described.

[0063] The information processing apparatus targets, for confirmation, the order corresponding to the auxiliary information sub1-11 set at index i = 11 corresponding to the convention constant "11". The auxiliary information 1-11 corresponds to the order Or1-4 with the order number "4" and the quantity "6". The information processing apparatus acquires the quantity α = 6 included in the auxiliary information sub1-11, and updates the index to i = 11 - 6 = 5.

[0064] The information processing apparatus targets, for confirmation, the order corresponding to the auxiliary information sub1-5 set at index i = 5. The auxiliary information 1-5 corresponds to the order Or1-2 with the order number "2" and the quantity "3". The information processing apparatus acquires the quantity α = � included in the auxiliary information sub1-5, and updates the index to i = 5 - 3 = 2.

[0065] The information processing apparatus targets, for confirmation, the order corresponding to the auxiliary information sub1-2 set at index i = 2. The auxiliary information 1-2 corresponds to the order Or1-1 with the order number "1" and the quantity "2". The information processing apparatus acquires the quantity α = 2 included in the auxiliary information sub1-2, and updates the index to i = 2 - 2 = 0. Since the index i = 0, the information processing apparatus ends the process.

[0066] Based on the "second array a" in FIG. 6, a process for the information processing apparatus to identify a confirmed buy order will be described.

[0067] The information processing device sets the order corresponding to the auxiliary information sub2-11 set to the index i = 11 corresponding to the agreed number "11" as the agreement target. The auxiliary information 2-11 corresponds to the order Or2-4 with the order "4" and the quantity "2". The information processing device acquires the quantity α = 2 included in the auxiliary information sub2-11 and updates the index i = 11 - 2 = 9.

[0068] The information processing device sets the order corresponding to the auxiliary information sub2-9 set to the index i = 9 as the agreement target. The auxiliary information 2-9 corresponds to the order Or2-3 with the order "3" and the quantity "4". The information processing device acquires the quantity α = 4 included in the auxiliary information sub2-9 and updates the index i = 9 - 4 = 5.

[0069] The information processing device sets the order corresponding to the auxiliary information sub2-5 set to the index i = 5 as the agreement target. The auxiliary information 2-5 corresponds to the order Or2-1 with the order "1" and the quantity "5". The information processing device acquires the quantity α = 5 included in the auxiliary information sub2-1 and updates the index i = 5 - 5 = 0. Since the index i = 0, the information processing device ends the process.

[0070] By the above processing, the sell orders Or1-1, Or1-2, Or1-4 and the buy orders Or2-1, Or2-3, Or2-4 that are the agreement targets are specified.

[0071] As described above, when the information processing device according to the first embodiment receives a sell order, it sets the information based on the order sequence and the number of orders of the sell order in the first array a, and when it receives a buy order, it sets the information based on the order sequence and the number of orders of the buy order in the second array a. The information processing device calculates the maximum agreed number based on the information set in the first array a and the information set in the second array a. Then, the information processing device specifies the order to be the agreement target based on the calculated maximum agreed number, the information set in the first array a, and the information set in the second array a. That is, according to the information processing device according to the first embodiment, it is possible to specify the order to be the agreement target such that the agreed number is maximized.

[0072] Next, an example of the configuration of an information processing apparatus that executes the processes described with reference to FIGS. 1 to 6 will be described. FIG. 7 is a diagram showing the configuration of the information processing apparatus according to the first embodiment. As shown in FIG. 7, this information processing apparatus 100 includes a communication unit 110, an input unit 120, a display unit 130, a storage unit 140, and a control unit 150.

[0073] The communication unit 110 is connected to an external device or the like by wire or wirelessly, and transmits and receives information to and from the external device or the like. For example, the communication unit 110 is realized by a NIC (Network Interface Card) or the like. The communication unit 110 may be connected to a network (not shown). For example, the communication unit 110 receives information of a sell order table 141 including sell order information, information of a buy order table 142 including buy order information, and the like from an external device. For example, the external device corresponds to a server that manages stock buying and selling and executes various processes for orders that have become the subject of a transaction.

[0074] The input unit 120 is an input device that inputs various types of information into the information processing apparatus 100. The input unit 120 corresponds to a keyboard, a mouse, a touch panel, or the like.

[0075] The display unit 130 is a display device that displays information output from the control unit 150. The display unit 130 corresponds to a liquid crystal display, an organic EL (Electro Luminescence) display, a touch panel, or the like.

[0076] The storage unit 140 includes a sell order table 141, a buy order table 142, first array information 143, second array information 144, and trade result information 145. The storage unit 140 is realized by, for example, a semiconductor memory element such as a RAM (Random Access Memory) or a flash memory, or a storage device such as a hard disk or an optical disk.

[0077] The sell order table 141 is a table that holds the order sequence and order quantity of sell orders. FIG. 8 is a diagram showing an example of the data structure of the sell order table according to the first embodiment. As shown in FIG. 8, this sell order table 141 associates identification information, order sequence, and order quantity. The identification information is information that uniquely identifies an order. The order sequence is the order in which the orders were received. The order quantity is the number of orders.

[0078] The buy order table 142 is a table that holds the order sequence and order quantity of buy orders. FIG. 9 is a diagram showing an example of the data structure of the buy order table 142 according to the first embodiment. As shown in FIG. 9, this buy order table 142 associates identification information, order sequence, and order quantity. The identification information is information that uniquely identifies an order. The order sequence is the order in which the orders were received. The order quantity is the number of orders.

[0079] The first array information 143 is array information that holds information based on the order sequence and order quantity related to sell orders. The first array information 143 corresponds to the first array a described above. FIG. 10 is a diagram showing an example of the data structure of the first array information according to the first embodiment. As shown in FIG. 10, this first array information 143 has an index, an element, and auxiliary information. The index corresponds to the index i of the array a. The element is an element of the array a, and "T" or "F" is set. The auxiliary information is information indicating the order reception sequence (order sequence) and quantity (order quantity).

[0080] The second array information 144 is array information that holds information based on the order sequence and order quantity related to buy orders. The second array information 144 corresponds to the second array a described above. FIG. 11 is a diagram showing an example of the data structure of the second array information according to the first embodiment. As shown in FIG. 11, this second array information 144 has an index, an element, and auxiliary information. The index corresponds to the index i of the array a. The element is an element of the array a, and "T" or "F" is set. The auxiliary information is information indicating the order reception sequence (order sequence) and quantity (order quantity).

[0081] The trade result information 145 holds the maximum number of trades and the information of the orders to be traded. FIG. 12 is a diagram showing an example of the data structure of the trade result information according to the first embodiment. As shown in FIG. 12, this trade result information 145 has sell trade identification information, buy trade identification information, and a maximum number of trades. The sell trade identification information is information for identifying sell orders to be traded. The buy trade identification information is information for identifying buy orders to be traded. The maximum number of trades indicates the maximum number of trades.

[0082] Returning to the description of FIG. 7. The control unit 150 includes an acquisition unit 151, a setting unit 152, a trade number calculation unit 153, an order specifying unit 154, and an output control unit 155. The control unit 150 is realized, for example, by a CPU (Central Processing Unit) or an MPU (Micro Processing Unit). Further, the control unit 150 may be executed by an integrated circuit such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array).

[0083] When the acquisition unit 151 acquires the data of the sell order table 141 from an external device or the like, the acquisition unit 151 stores the data of the sell order table 141 in the storage unit 140. The acquisition unit 151 may sequentially acquire sell orders individually and register the information of the acquired sell orders in the sell order table 141.

[0084] When the acquisition unit 151 acquires the data of the buy order table 142 from an external device or the like, the acquisition unit 151 stores the data of the buy order table 142 in the storage unit 140. The acquisition unit 151 may sequentially acquire buy orders individually and register the information of the acquired buy orders in the buy order table 142.

[0085] Based on the sell order table 141, the setting unit 152 sets information based on the order sequence and order quantity related to the sell order in the first array information 143 (first array a). Also, based on the buy order table 142, the setting unit 152 sets information based on the order sequence and order quantity related to the buy order in the second array information 144 (second array a).

[0086] The process in which the setting unit 152 sets, based on the sell order table 141, information based on the order sequence and order quantity related to the sell order in the first array information 143 corresponds to the process of the first array a described in FIG. 4. When the setting unit 152 receives a sell order with an order quantity x where the first array a[i]=T, it sets a[i+x]=T.

[0087] For example, for the first array information 143, the setting unit 152 sets the element at index i=i+x to "T", and sets the auxiliary information with the order reception sequence and quantity set as the auxiliary information at index i=i+x. The setting unit 152 repeatedly executes the above process for each sell order in the sell order table 141.

[0088] The process in which the setting unit 152 sets, based on the buy order table 142, information based on the order sequence and order quantity related to the buy order in the second array information 144 corresponds to the process obtained by replacing the process described in FIG. 4 with the second array a. When the setting unit 152 receives a sell order with an order quantity x where the second array a[i]=T, it sets a[i+x]=T.

[0089] For example, for the second array information 144, the setting unit 152 sets the element at index i=i+x to "T", and sets the auxiliary information with the order reception sequence and quantity set as the auxiliary information at index i=i+x. The setting unit 152 repeatedly executes the above process for each buy order in the buy order table 142.

[0090] The agreed quantity calculation unit 153 is a processing unit that calculates the maximum agreed quantity between sell orders and buy orders based on the first array information 143 and the second array information 144. The processing of the agreed quantity calculation unit 153 corresponds to the processing described in FIG. 3. The agreed quantity calculation unit 153 compares the first array information 143 and the second array information 144, and calculates the largest index among the indices where both the element of the first array information 143 and the element of the second array information 144 are "T" as the maximum agreed quantity. The agreed quantity calculation unit 153 registers the calculated maximum agreed quantity in the agreement result information 145.

[0091] The agreed quantity calculation unit 153 may execute the above processing at the timing when it receives a determination instruction for the agreed quantity from the input unit 120 or an external device or the like. The agreed quantity calculation unit 153 may execute the above processing at the timing when a predetermined time has elapsed after the setting unit 152 sets the first array information 143 and the second array information 144.

[0092] The order identification unit 154 is a processing unit that identifies orders to be agreed upon based on the maximum agreed quantity, the first array information 143, and the second array information 144. The processing of the order identification unit 154 corresponds to the processing described in FIGS. 5 and 6. When the order identification unit 154 agrees with the agreed quantity (maximum agreed quantity) i0, with the initial value of the index i = i0, the following processing is repeatedly executed until i = 0.

[0093] The processing repeatedly executed by the order identification unit 154 is as follows. The order identification unit 154 sets an order where a[i]=T as the agreement target. Next, the order identification unit 154 identifies the quantity α included in the auxiliary information set in a[i], and updates the index i by i = i - α.

[0094] For example, as described in FIG. 5, by the order identification unit 154 executing the above processing on the first array a (first array information 143), the identification information Or1-1 and Or1-2 of the orders to be agreed upon are identified. By the order identification unit 154 executing the above processing on the second array a (second array information 144), the identification information Or2-1 and Or2-3 of the orders to be agreed upon are identified.

[0095] As described with reference to FIG. 6, by executing the above processing on the first array a (first array information 143), the order specifying unit 154 specifies the identification information Or1-1, Or1-2, Or1-4 of the orders to be traded. By executing the above processing on the second array a (second array information 144), the order specifying unit 154 specifies the identification information Or2-1, Or2-3, Or2-4 of the orders to be traded.

[0096] The order specifying unit 154 registers the identification information of the orders to be traded specified by executing the above processing in the trade result information 145.

[0097] The output control unit 155 is a processing unit that outputs the trade result information 145 to the display unit 130 for display. The output control unit 155 may transmit the trade result information 145 to an external device to request various trade processes.

[0098] Next, an example of the processing procedure of the information processing apparatus 100 according to the first embodiment will be described. FIG. 13 is a flowchart showing the processing procedure of the information processing apparatus according to the first embodiment. As shown in FIG. 13, the setting unit 152 of the information processing apparatus 100 sets the first array a related to the sell order and the second array a related to the buy order (step S101). The information of the first array a corresponds to the first array information 143. The information of the second array a corresponds to the second array information 144.

[0099] The setting unit 152 updates the first array a when a sell order is received, and updates the second array a when a buy order is received (step S102). If the information processing apparatus 100 does not execute a trade for an order (step S103, No), it proceeds to step S102. If the information processing apparatus 100 executes a trade for an order (step S103, Yes), it proceeds to step S104.

[0100] The trade count calculation unit 153 of the information processing apparatus 100 calculates the maximum number of trades (step S104). The order specifying unit 154 of the information processing apparatus 100 executes an order specifying process (step S105).

[0101] The output control unit 155 of the information processing apparatus 100 notifies the external device or the like of the agreement result information and requests the agreement process (step S106). When the information processing apparatus 100 continues the process (step S107, Yes), it proceeds to step S108. The setting unit 152 discards the first array a and the second array a (step S108) and proceeds to step S101.

[0102] On the other hand, when the information processing apparatus 100 does not continue the process (step S107, No), it ends the process.

[0103] Next, the processing procedure of the order specifying process described in step S105 of FIG. 13 will be described. FIG. 14 is a flowchart showing the processing procedure of the order specifying process according to the first embodiment. The order specifying unit 154 of the information processing apparatus 100 sets the maximum number of agreements as the initial value of the index i (step S201).

[0104] When the index i = 0 (step S202, Yes), the order specifying unit 154 ends the order specifying process. When the index i ≠ 0 (step S202, No), the order specifying unit 154 proceeds to step S203.

[0105] The order specifying unit 154 refers to the auxiliary information corresponding to the index i of the array a and specifies the order to be the subject of the agreement (step S203). The order specifying unit 154 acquires the quantity α of the auxiliary information corresponding to the index i of the array a (step S204).

[0106] The order specifying unit 154 updates the index i with the value obtained by subtracting α from the index i (step S205) and proceeds to step S202.

[0107] The order specifying unit 154 specifies sell orders that are subject to execution by performing the process shown in FIG. 14 on the first array a. The order specifying unit 154 specifies buy orders that are subject to execution by performing the process shown in FIG. 14 on the second array a.

[0108] Next, the effects of the information processing apparatus 100 according to the first embodiment will be described. When the information processing apparatus 100 receives a sell order, it sets information based on the order sequence and order quantity of the sell order in the first array a. When the information processing apparatus 100 receives a buy order, it sets information based on the order sequence and order quantity of the buy order in the second array a. The information processing apparatus 100 calculates the maximum number of executions based on the information set in the first array a and the information set in the second array a. Then, the information processing apparatus 100 specifies the orders that are subject to execution based on the calculated maximum number of executions, the information set in the first array a, and the information set in the second array a. That is, according to the information processing apparatus 100 according to the first embodiment, it is possible to specify the orders that are subject to execution such that the number of executions is maximized.

[0109] When the information processing apparatus 100 receives information on the sell order sequence and order quantity, it sets the registration symbol "T" in the element of the index of the first array a specified based on the order quantity, and sets auxiliary information on the order sequence and the order quantity per order in association with the index. When the information processing apparatus 100 receives information on the buy order sequence and order quantity, it sets the registration symbol "T" in the element of the index of the second array a specified based on the order quantity, and sets auxiliary information on the order sequence and the order quantity in association with the index. As a result, the maximum number of executions can be easily specified by comparing the first array a and the second array a. Also, by using the auxiliary information, it is possible to trace the indexes of the first array a and the second array a and specify the orders that are subject to execution.

[0110] Incidentally, in the processing of the information processing apparatus 100 described above, the case of guaranteeing the full amount of the contract has been described. However, even in the case of guaranteeing the minimum number of contracts, it is possible to specify the maximum number of contracts in the same manner. In the following description, the process of specifying the maximum number of contracts when the information processing apparatus 100 receives an order with the minimum number of contracts specified will be described.

[0111] The information processing apparatus 100 prepares a queue in the storage unit 140 to store the index intervals for setting "T" in the array a. When the setting unit 152 of the information processing apparatus 100 receives an order with the minimum number of contracts S and the number of orders E set, it executes the setting process shown in FIG. 15.

[0112] FIG. 15 is a flowchart showing the processing procedure of the setting process when guaranteeing the minimum number of contracts. As shown in FIG. 15, the setting unit 152 of the information processing apparatus 100 acquires an order with the minimum number of contracts S and the number of orders E specified (step S301).

[0113] The setting unit 152 sets the index i to the initial value 0 (step S302). When "T" is set in a[i] (step S303, Yes), the setting unit 152 inserts the interval [i + S, i + E] into the queue (step S304) and proceeds to step S306.

[0114] Here, in step S304, when the interval at the end of the queue and the interval to be inserted are connected, the setting unit 152 merges the intervals. For example, if the interval at the end of the queue is [4, 6] and the interval to be inserted is [4, 9], the setting unit 152 merges the intervals into [4, 9].

[0115] On the other hand, when "T" is not set in a[i] (step S303, No), the setting unit 152 proceeds to step S305. When i is included in the interval stored at the head of the queue, the setting unit 152 sets "T" in a[i] (step S305) and proceeds to step S306.

[0116] When i is the end of the section stored at the head of the queue, the setting unit 152 deletes such a section from the queue (step S306). The setting unit 152 updates the index i with the value obtained by adding 1 to the index i (step S307).

[0117] If i is not greater than or equal to the threshold value (step S308, No), the setting unit 152 proceeds to step S303. On the other hand, if i is greater than or equal to the threshold value (step S308, Yes), the setting unit 152 proceeds to step S309.

[0118] If the setting unit 152 continues the process (step S309, Yes), it proceeds to step S301. On the other hand, if the setting unit 152 does not continue the process (step S309, No), it ends the process.

[0119] Note that when the setting unit 152 receives a sell order with the minimum commitment number S and the order quantity E set, it executes the process described in FIG. 15 on the first array a (first array information 143). When the setting unit 152 receives a buy order with the minimum commitment number S and the order quantity E set, it executes the process described in FIG. 15 on the second array a (second array information 144).

[0120] Next, an example of the setting process when performing minimum commitment guarantee will be described. FIGS. 16 to 19 are diagrams for explaining the setting process when performing minimum commitment guarantee. In FIGS. 16 to 19, the description regarding the auxiliary information is omitted. Here, as an example, the case where the setting unit 152 receives a sell order with the minimum commitment number S = 6 and the order quantity E = 7 set and updates the first array a will be described. The state of the first array a is a[0]=T, a[3]=T, a[5]=T, a[8]=T as shown in step S30 of FIG. 16, and the other elements are "F".

[0121] Explanation of step S31. The setting unit 152 sets the index i = 0. Since a[i]=T, the setting unit 152 inserts the section [6, 7](=[0 + 6, 0 + 7]) into the queue 50.

[0122] Step 32 will be described. The setting unit 152 sets the index i = 1. Since a[i]=F and i is not included in the leading interval [6, 7] of the queue 50, no particular processing is executed. The setting unit 152 sets the index i = 2. Since a[i]=F and i is not included in the leading interval [6, 7] of the queue 50, no particular processing is executed.

[0123] Proceed to the description of FIG. 17. Step S33 will be described. The setting unit 152 sets the index i = 3. Since a[i]=T, the setting unit 152 inserts the interval [9, 10](=[3 + 6, 3 + 7]) into the queue 50.

[0124] Step S34 will be described. The setting unit 152 sets the index i = 4. Since a[i]=F and i is not included in the leading interval [6, 7] of the queue 50, no particular processing is executed.

[0125] Step S35 will be described. The setting unit 152 sets the index i = 5. Since a[i]=T, the setting unit 152 inserts the interval [11, 12](=[5 + 6, 5 + 7]) into the queue 50. The setting unit 152 sets the merged interval [9, 12] of the interval [9, 10] and the interval [11, 12] at the end of the queue 50.

[0126] Proceed to the description of FIG. 18. Step S36 will be described. The setting unit 152 sets the index i = 6. Since a[i]=F and i is included in the leading interval [6, 7] of the queue 50, a[i] is set to T.

[0127] Step S37 will be described. The setting unit 152 sets the index i = 7. Since a[i]=F and i is included in the leading interval [6, 7] of the queue 50, a[i] is set to T. Since i is the end of the leading interval [6, 7], the interval [6, 7] is deleted from the queue 50.

[0128] The setting unit 152 also repeatedly executes the above process for indexes i = 8 to 14. The description of the process of the setting unit 152 when indexes i = 8 to 14 are set is omitted.

[0129] Proceed to the description of FIG. 19. Describe step S38. The setting unit 152 sets index i = 15. Since a[i] = F and i is included in the head section [14, 15] of the queue 50, a[i] is set to T. Since the setting unit 152 is at the end of the head section [14, 15], the section [14, 15] is deleted from the queue 50.

[0130] Describe step S39. For the first array a, since the queue 50 becomes empty beyond the largest index i = 8 for which T was set, the setting unit 152 ends the process.

[0131] In the above descriptions of FIGS. 16 to 19, the case where the setting unit 152 receives a sell order with a minimum contract quantity and an order quantity set and updates the first array a was described. The setting unit 152 also updates the second array a in the same manner as the processes in FIGS. 16 to 19 when receiving a buy order with a minimum contract quantity and an order quantity set.

[0132] The contract quantity calculation unit 153 of the information processing apparatus 100 calculates the maximum contract quantity based on the first array a (first array information 143) updated by the setting unit 152 and the second array a (second array information 144). That is, the contract quantity calculation unit 153 compares the first array information 143 and the second array information 144, and calculates the largest index among the indexes for which both the elements of the first array information 143 and the elements of the second array information 144 are "T" as the maximum contract quantity. Such a maximum contract quantity is a contract quantity that guarantees the minimum contract quantity.

Example

[0133] Before explaining the information processing apparatus according to the second embodiment, consider a market in the securities market where an all-or-none order specifying an amount is placed. The conditions for execution are as follows: conditions (1), (2), and (3).

[0134] Any sell order is executed at or above the offered price, and partial execution is not allowed... condition (1) Any buy order is executed at or below the offered price, and partial execution is not allowed... condition (2) The stock exchange does not incur a loss: (from the perspective of the stock exchange) the total amount obtained from buy orders must be less than or equal to the total amount to be transferred by sell orders... condition (3)

[0135] FIG. 20 is a diagram showing an example of matching between sell orders and buy orders for an all-or-none order specifying an amount. In the example shown in FIG. 38, there are sell orders Or1, Or2, Or3, Or4, and Or5. Order Or1 is an order with an order quantity of "3" and a delivery amount of "60,000 yen". Order Or2 is an order with an order quantity of "2" and a delivery amount of "50,000 yen". Order Or3 is an order with an order quantity of "5" and a delivery amount of "120,000 yen". Order Or4 is an order with an order quantity of "3" and a delivery amount of "70,000 yen". Order Or5 is an order with an order quantity of "4" and a delivery amount of "130,000 yen".

[0136] There are buy orders Or6, Or7, and Or8. Order Or6 is an order with an order quantity of "4" and a delivery amount of "80,000 yen". Order Or7 is an order with an order quantity of "2" and a delivery amount of "50,000 yen". Order Or8 is an order with an order quantity of "6" and a delivery amount of "170,000 yen". The delivery amount of each sell order and buy order indicates the delivery amount per order quantity.

[0137] Under conditions (1) to (3), when maximizing the number of matches for the sell orders and buy orders shown in FIG. 20, the matching result is as follows. For example, the orders to be matched are sell orders Or1, Or2, Or3 and buy orders Or6, Or8. The total number of orders for sell orders Or1, Or2, Or3 is "10", and the total delivery amount is "23". The total number of orders for buy orders Or6, Or8 is "10", and the total delivery amount is "25", so conditions (1) to (3) are satisfied.

[0138] However, when performing the matching described in FIG. 20, it becomes a knapsack problem, so it is difficult to solve without imposing certain conditions.

[0139] Next, the information processing apparatus according to the second embodiment will be described. The information processing apparatus according to the second embodiment prepares an amount array in order to manage sell orders or buy orders respectively. Let the amount array of sell orders be array a, and the amount array of buy orders be array b. Array a corresponds to the first array, and array b corresponds to the second array.

[0140] An index i of 0 or more is set for arrays a and b. Index i corresponds to the number of matches (number of orders). The minimum value of the delivery amount among the matches is set in the element corresponding to index i of the array. As the initial value of array a, the information processing apparatus sets a[0]=0, and for index i>0, a[i]=∞ (a sufficiently large value). As the initial value of array b, the information processing apparatus sets b[0]=0, and for index i>0, b[i]=∞ (a sufficiently large value).

[0141] First, the process in which the information processing apparatus according to the second embodiment calculates the maximum number of matches that can be made will be described. FIGS. 21 and 22 are diagrams for explaining the process for array a when a sell order is received. When an order with an order number x and an amount p comes in and a[i]<∞, if a[i+x]>a[i]+p, the information processing apparatus sets a[i+x]=a[i]+p (update if the value of the element becomes smaller).

[0142] A description will be given of FIG. 21. Let the initial state of the array a be as shown in step S50. In the initial state of the array a, a[0] = 0, and all other elements are "∞".

[0143] When a sell order with an order quantity of 3 and an amount of 6 (in ten thousands of yen, hereinafter omitted) is received, the state of the array a becomes as shown in step S51. Since a[0 + 3] = ∞ and a[0] + p = 6, a[0 + 3] > a[0] + p. Therefore, the information processing device sets a[0 + 3] = 6.

[0144] When a sell order with an order quantity of 2 and an amount of 5 is received, the state of the array a becomes as shown in step S52. Since a[0 + 2] = ∞ and a[0] + p = 5, a[0 + 2] > a[0] + p. Therefore, the information processing device sets a[0 + 2] = 5. Since a[3 + 2] = ∞ and a[3] + p = 11, a[3 + 2] > a[3] + p. Therefore, the information processing device sets a[3 + 2] = 11.

[0145] Proceeding to the description of FIG. 22. When a sell order with an order quantity of 5 and an amount of 12 is received, the state of the array a becomes as shown in step S53. Since a[0 + 5] = 11 and a[0] + p = 12, a[0 + 5] < a[0] + p. Therefore, the information processing device leaves a[0 + 5] = 11 (without updating).

[0146] Since a[2 + 5] = ∞ and a[2] + p = 17, a[2 + 5] > a[2] + p. Therefore, the information processing device sets a[2 + 5] = 17. Since a[3 + 5] = ∞ and a[3] + p = 18, a[3 + 5] > a[3] + p. Therefore, the information processing device sets a[3 + 5] = 18.

[0147] Since a[5 + 5] = ∞ and a[5] + p = 13, a[5 + 5] > a[5] + p. Therefore, the information processing device sets a[5 + 5] = 23.

[0148] When a sell order with an order quantity of 3 and an amount of 7 is received, the state of array a becomes as shown in step S54. Since array a[0 + 3] = 6 and a[0] + p = 7, array a[0 + 3] < a[0] + p. Therefore, the information processing device leaves array a[0 + 3] = 6 as it is (without updating). Since array a[2 + 3] = 11 and a[2] + p = 12, array a[2 + 3] < a[2] + p. Therefore, the information processing device leaves array a[2 + 3] = 11 as it is (without updating).

[0149] Since array a[3 + 3] = ∞ and a[3] + p = 13, array a[3 + 3] > a[3] + p. Therefore, the information processing device sets array a[3 + 3] = 13. Since array a[3 + 5] = 18 and a[5] + p = 18, array a[3 + 5] = a[5] + p. Therefore, the information processing device leaves array a[3 + 5] = 18 as it is.

[0150] Since array a[7 + 3] = 23 and a[7] + p = 24, array a[7 + 3] < a[7] + p. Therefore, the information processing device leaves array a[7 + 3] = 13 as it is (without updating). Since array a[8 + 3] = ∞ and a[8] + p = 25, array a[8 + 3] > a[8] + p. Therefore, the information processing device sets array a[8 + 3] = 25.

[0151] When a sell order with an order quantity of 4 and an amount of 13 is received, the state of array a becomes as shown in step S55. Since array a[0 + 4] = ∞ and a[0] + p = 13, array a[0 + 4] > a[0] + p. Therefore, the information processing device sets array a[0 + 4] = 13. Since array a[2 + 4] = 13 and a[2] + p = 18, array a[2 + 4] < a[2] + p. Therefore, the information processing device leaves array a[2 + 4] = 13 as it is (without updating).

[0152] Since the array a[3 + 4] = 17 and a[3] + p = 19, the array a[3 + 4] < a[3] + p. Therefore, the information processing device leaves the array a[3 + 4] as 17 (without updating). Since the array a[5 + 4] = ∞ and a[5] + p = 24, the array a[5 + 6] > a[5] + p. Therefore, the information processing device sets the array a[5 + 4] to 24.

[0153] Since the array a[6 + 4] = 23 and a[6] + p = 24, the array a[6 + 4] < a[6] + p. Therefore, the information processing device leaves the array a[6 + 4] as 23 (without updating). Since the array a[7 + 4] = 25 and a[7] + p = 28, the array a[7 + 4] < a[7] + p. Therefore, the information processing device leaves the array a[7 + 4] as 25 (without updating).

[0154] Since the array a[8 + 4] = ∞ and a[8] + p = 31, the array a[8 + 4] > a[8] + p. Therefore, the information processing device sets the array a[8 + 4] to 31. Since the array a[10 + 4] = ∞ and a

[10] + p = 36, the array a[10 + 4] > a

[10] + p. Therefore, the information processing device sets the array a[10 + 4] to 36. Since the array a[11 + 4] = ∞ and a

[11] + p = 38, the array a[11 + 4] > a

[11] + p. Therefore, the information processing device sets the array a[11 + 4] to 38.

[0155] FIG. 23 is a diagram for explaining the processing for the array b when a purchase order is received. When an order with an order quantity x and an amount p comes in and b[i] > -∞, if b[i + x] < b[i] + p, the information processing device sets b[i + x] = b[i] + p (update if the value of the element becomes larger).

[0156] Assume that the initial state of the array b is as shown in step S60. In the initial state of the array b, b[0] = 0 and all other elements are "-∞".

[0157] When a buy order with an order quantity of 4 and an amount of 8 (in ten thousands of yen, hereinafter omitted) is received, the state of array b becomes as shown in step S61. Since array b[0 + 4] = -∞ and b[0] + p = 8, array b[0 + 4] < b[0] + p. Therefore, the information processing device sets array b[0 + 4] = 8.

[0158] When a buy order with an order quantity of 2 and an amount of 5 is received, the state of array b becomes as shown in step S62. Since array b[0 + 2] = -∞ and b[0] + p = 5, array b[0 + 2] < b[0] + p. Therefore, the information processing device sets array b[0 + 2] = 5. Since array b[4 + 2] = -∞ and b[4] + p = 13, array b[4 + 2] < b[4] + p. Therefore, the information processing device sets array b[4 + 2] = 13.

[0159] When a buy order with an order quantity of 6 and an amount of 17 is received, the state of array b becomes as shown in step S63. Since array b[0 + 6] = -∞ and b[0] + p = 17, array b[0 + 6] < b[0] + p. Therefore, the information processing device sets array b[0 + 6] = 17.

[0160] Since array b[2 + 6] = -∞ and b[2] + p = 22, array b[2 + 6] < b[2] + p. Therefore, the information processing device sets array b[2 + 6] = 22. Since array b[4 + 6] = -∞ and b[4] + p = 25, array b[4 + 6] < b[4] + p. Therefore, the information processing device sets array b[4 + 6] = 25.

[0161] Since array b[6 + 6] = -∞ and b[6] + p = 30, array b[6 + 6] < b[6] + p. Therefore, the information processing device sets array b[6 + 6] = 30.

[0162] The information processing device of this second embodiment compares array a described in FIGS. 21 and 22 with array b described in FIG. 23 to identify the maximum contract quantity that can be matched.

[0163] FIG. 24 is a diagram for explaining an example of a process for calculating an agreed quantity according to the second embodiment. The information processing apparatus scans the array a of sell orders and the array b of buy orders for each index, and calculates the maximum index i such that a[i] ≤ b[i] as the maximum agreed quantity. In the example shown in FIG. 24, among the indexes for which a[i] ≤ b[i], the maximum index is index i = 10. Therefore, the information processing apparatus sets the maximum agreed quantity to "10".

[0164] The information processing apparatus according to the second embodiment can identify orders to be agreed upon by registering auxiliary information indicating the order reception order (order order) and quantity (number of orders) for each index in the same manner as the information processing apparatus 100 described in the first embodiment.

[0165] FIG. 25 is a diagram (3) for explaining the process for the array a when a sell order is received. Let the initial state of the array a be as shown in step S70. In the initial state of the array a, a[0] = 0, and all other elements are "∞".

[0166] When, first (order reception order = 1), a sell order with a quantity of 3 and an amount of 6 is received, the state of the array a becomes as shown in step S71. The information processing apparatus sets a[0 + 3] = 6 in the same manner as step S51 in FIG. 21. Further, the information processing apparatus registers auxiliary information sub1-3 at index i = 3. In the auxiliary information sub1-3, the order "1" and the quantity "3 (amount 6)" are set.

[0167] Subsequently (order reception order = 2), when a sell order with a quantity of 2 and an amount of 5 is received, the state of the array a becomes as shown in step S72. The information processing apparatus sets a[0 + 2] = 5 in the same manner as step S52 in FIG. 21. The information processing apparatus registers auxiliary information sub1-2 at index i = 2. In the auxiliary information sub1-2, the order "2" and the quantity "2 (amount 5)" are set.

[0168] The information processing device sets a[3 + 2] = 11 in the same manner as step S52 in FIG. 21. The information processing device registers auxiliary information sub1-5 at index i = 5. In the auxiliary information sub1-5, the order "2" and the quantity "2 (amount 5)" are set.

[0169] Each time the information processing device receives a sell order, it repeatedly executes the above processing.

[0170] Although illustration is omitted, when the information processing device receives a buy order, it also sets an amount in the elements of the array b and registers auxiliary information at the index in the same manner as FIG. 25. The process of the information processing device setting an amount in the elements of the array b is the same as that in FIG. 23.

[0171] FIG. 26 is a diagram for explaining the process of specifying an order to be matched according to the second embodiment. The process of specifying an order to be matched according to the second embodiment is basically the same as the processes described in FIGS. 5 and 6.

[0172] After calculating the number of matches, the information processing device specifies the order to be matched based on the auxiliary information set in the array a. When the information processing device matches with the number of matches i0, with the initial value of the index i = i0, it repeatedly executes the following process until i = 0.

[0173] The process that the information processing device repeats is as follows. The information processing device targets the order of a[i] corresponding to the index i to be matched. Next, the information processing device specifies the quantity α included in the auxiliary information set in a[i], and updates the index i by i = i - α.

[0174] Based on the array a in FIG. 26, the process of the information processing device specifying a sell order to be matched will be described. Also, let i0 = 5. The information processing device targets the order corresponding to the auxiliary information sub1-5 set at the index i = 5 corresponding to the number of matches "5" to be matched. The information processing device obtains the quantity α = 2 included in the auxiliary information sub1-5 and updates the index i = 5 - 2 = 3.

[0175] The information processing device targets for settlement the order corresponding to the auxiliary information sub1-3 set with the index i = 3. The information processing device acquires the quantity α = 3 included in the auxiliary information sub1-3 and updates it to the index i = 3 - 3 = 0. Since the index i = 0, the information processing device ends the process.

[0176] By the above processing, the information processing device specifies, as the targets for settlement, the "sell order with the order quantity 3 and the amount 6" and the "sell order with the order quantity 2 and the amount 5" described in FIG. 25. Although illustration is omitted, the information processing device also executes the processing corresponding to FIG. 26 for the array b and specifies the buy order that becomes the target for settlement.

[0177] As described above, when the information processing device according to the second embodiment receives a sell order, it sets the information based on the order sequence, order quantity, and amount of the sell order in the array a, and when it receives a buy order, it sets the information based on the order sequence, order quantity, and amount of the buy order in the array b. The information processing device calculates the maximum number of settlements based on the information set in the array a and the information set in the array b. Then, the information processing device specifies the order that becomes the target for settlement based on the calculated maximum number of settlements, the information set in the array a, and the information set in the array b. That is, according to the information processing device according to the second embodiment, it is possible to specify the order that becomes the target for settlement such that the number of settlements is maximized while satisfying the conditions (1), (2), and (3).

[0178] Next, an example of the configuration of the information processing device that executes the processing described with reference to FIGS. 21 to 26 will be described. FIG. 27 is a diagram showing the configuration of the information processing device according to the second embodiment. As shown in FIG. 27, this information processing device 200 includes a communication unit 210, an input unit 220, a display unit 230, a storage unit 240, and a control unit 250.

[0179] The communication unit 210 is connected to an external device or the like by wire or wirelessly, and transmits and receives information to and from the external device or the like. For example, the communication unit 210 is implemented by a NIC or the like. The communication unit 210 may be connected to a network (not shown). For example, the communication unit 210 receives information such as information in the sell order table 241 including sell order information and information in the buy order table 242 including buy order information from an external device. For example, the external device corresponds to a server that manages stock buying and selling and executes various processes on orders that have become the subject of a transaction.

[0180] The input unit 220 is an input device that inputs various types of information into the information processing device 200. The input unit 220 corresponds to a keyboard, a mouse, a touch panel, or the like.

[0181] The display unit 230 is a display device that displays information output from the control unit 250. The display unit 230 corresponds to a liquid crystal display, an organic EL display, a touch panel, or the like.

[0182] The storage unit 240 has a sell order table 241, a buy order table 242, first array information 243, second array information 244, and trade result information 245. The storage unit 240 is realized by, for example, a semiconductor memory element such as a RAM or a flash memory, or a storage device such as a hard disk or an optical disk.

[0183] The sell order table 241 is a table that holds the order sequence, order quantity, and amount of a sell order. FIG. 28 is a diagram showing an example of the data structure of the sell order table according to the second embodiment. As shown in FIG. 28, this sell order table 241 associates identification information, order sequence, order quantity, and amount. The identification information is information that uniquely identifies an order. The order sequence is the order in which the orders were received. The order quantity is the number of orders. The amount is the specified amount of the sell order.

[0184] The buy order table 242 is a table that holds the order sequence, order quantity, and amount of buy orders. FIG. 29 is a diagram showing an example of the data structure of the buy order table 242 according to the second embodiment. As shown in FIG. 29, this buy order table 242 associates identification information, order sequence, order quantity, and amount. The identification information is information that uniquely identifies an order. The order sequence is the order in which the orders are received. The order quantity is the number of orders. The amount is the specified amount of the buy order.

[0185] The first array information 243 is array information that holds information based on the order sequence, order quantity, and amount related to sell orders. The first array information 243 corresponds to the array a described above. FIG. 30 is a diagram showing an example of the data structure of the first array information. As shown in FIG. 30, this first array information 243 has an index, an element, and auxiliary information. The index corresponds to the index i of the array a. The element is an element of the array a, and an amount is set. The auxiliary information is information indicating the order reception sequence (order sequence) and quantity (order quantity).

[0186] The second array information 244 is array information that holds information based on the order sequence, order quantity, and amount related to buy orders. The second array information 244 corresponds to the array b described above. FIG. 31 is a diagram showing an example of the data structure of the second array information according to the second embodiment. As shown in FIG. 31, this second array information 244 has an index, an element, and auxiliary information. The index corresponds to the index i of the array b. The element is an element of the array b, and an amount is set. The auxiliary information is information indicating the order reception sequence (order sequence) and quantity (order quantity).

[0187] The trade result information 245 holds the maximum number of trades and information on the orders to be traded. FIG. 32 is a diagram showing an example of the data structure of the trade result information according to the second embodiment. As shown in FIG. 32, this trade result information 245 has sell trade identification information, buy trade identification information, and the maximum number of trades. The sell trade identification information is information that identifies the sell order to be traded. The buy trade identification information is information that identifies the buy order to be traded. The maximum number of trades indicates the maximum number of trades.

[0188] Return to the description of FIG. 27. The control unit 250 includes an acquisition unit 251, a setting unit 252, an agreement number calculation unit 253, an order identification unit 254, and an output control unit 255. The control unit 250 is realized by, for example, a CPU or an MPU. Further, the control unit 250 may be executed by an integrated circuit such as an ASIC or an FPGA.

[0189] When the acquisition unit 251 acquires the data of the sell order table 241 from an external device or the like, the acquisition unit 251 stores the data of the sell order table 241 in the storage unit 240. The acquisition unit 251 may individually and sequentially acquire sell orders and register the information of the acquired sell orders in the sell order table 241.

[0190] When the acquisition unit 251 acquires the data of the buy order table 242 from an external device or the like, the acquisition unit 251 stores the data of the buy order table 242 in the storage unit 240. The acquisition unit 251 may individually and sequentially acquire buy orders and register the information of the acquired buy orders in the buy order table 242.

[0191] Based on the sell order table 241, the setting unit 252 sets information based on the order sequence, the number of orders, and the amount related to the sell order in the first array information 243 (array a). Further, based on the buy order table 242, the setting unit 252 sets information based on the order sequence and the number of orders related to the buy order in the second array information 244 (array b).

[0192] The process in which the setting unit 252 sets, based on the sell order table 241, information based on the order sequence, the number of orders, and the amount related to the sell order in the first array information 243 corresponds to the process of array a described in FIGS. 21, 22, 26, etc. When a[i]<∞ and an order with the number of orders x and the amount p comes, if a[i + x]>a[i]+p, the setting unit 252 sets a[i + x]=a[i]+p (update if the value of the element becomes smaller). Further, when updating, the setting unit 252 registers the auxiliary information in association with the index i.

[0193] The process in which the setting unit 252 sets information regarding the order sequence, order quantity, and amount related to the buy order in the second array information 244 based on the buy order table 242 corresponds to the process of array b described with reference to FIG. 23 and the like. When an order with an order quantity x and an amount p arrives where b[i] > -∞, if b[i + x] < b[i] + p, the setting unit 252 sets b[i + x] = b[i] + p (update if the value of the element increases). Further, when updating, the setting unit 252 registers the auxiliary information in association with the index i.

[0194] The trade quantity calculation unit 253 is a processing unit that calculates the maximum trade quantity between the sell order and the buy order based on the first array information 243 and the second array information 244. The process of the trade quantity calculation unit 253 corresponds to the process described with reference to FIG. 24. The trade quantity calculation unit 253 scans the first array information 243 (array a) and the second array information 244 (array b) for each index, and calculates the maximum index i such that a[i] ≤ b[i] as the maximum trade quantity. The trade quantity calculation unit 253 registers the calculated maximum trade quantity in the trade result information 245.

[0195] The trade quantity calculation unit 253 may execute the above process at the timing when a trade quantity determination instruction is received from the input unit 220 or an external device or the like. The trade quantity calculation unit 253 may also execute the above process at the timing when a predetermined time has elapsed after the setting unit 252 sets the first array information 243 and the second array information 244.

[0196] The order identification unit 254 is a processing unit that identifies the orders to be traded based on the maximum trade quantity, the first array information 243, and the second array information 244. The process of the order identification unit 254 corresponds to the process described with reference to FIG. 26. When trading with a trade quantity (maximum trade quantity) i0, the order identification unit 254 sets the initial value of the index i = i0 and repeatedly executes the following process until i = 0.

[0197] The order specifying unit 254 designates the order of a[i] corresponding to the index i as the order to be matched. Next, the order specifying unit 254 specifies the quantity α included in the auxiliary information set for a[i], and updates the index i by i = i - α. By repeatedly executing until i = 0, the sell orders to be matched are specified.

[0198] The order specifying unit 254 designates the order of b[i] corresponding to the index i as the order to be matched. Next, the order specifying unit 254 specifies the quantity α included in the auxiliary information set for b[i], and updates the index i by i = i - α. By repeatedly executing until i = 0, the buy orders to be matched are specified.

[0199] The order specifying unit 254 registers the identification information of the order that is the target of the match specified by executing the above processing in the match result information 245.

[0200] The output control unit 255 is a processing unit that outputs the match result information 245 to the display unit 230 for display. The output control unit 255 may transmit the match result information 245 to an external device to request various match processes.

[0201] Next, an example of the processing procedure of the information processing apparatus 200 according to the second embodiment will be described. FIG. 33 is a flowchart showing the processing procedure of the information processing apparatus according to the second embodiment. As shown in FIG. 33, the setting unit 152 of the information processing apparatus 200 sets an array a related to sell orders and an array b related to buy orders (step S401). The information of the array a corresponds to the first array information 243. The information of the array b corresponds to the second array information 244.

[0202] The setting unit 252 executes an array update process (step S402). When the information processing apparatus 200 does not match orders (step S403, No), it proceeds to step S402. When the information processing apparatus 200 matches orders (step S403, Yes), it proceeds to step S404.

[0203] The agreement constant calculation unit 253 of the information processing apparatus 200 calculates the maximum agreement constant (step S404). The order specification unit 254 of the information processing apparatus 200 executes order specification processing (step S405).

[0204] The output control unit 255 of the information processing apparatus 100 notifies the agreement result information to an external device or the like and requests agreement processing (step S406). If the information processing apparatus 200 continues the processing (step S407, Yes), it proceeds to step S408. The setting unit 252 discards the arrays a and b (step S408) and proceeds to step S401.

[0205] On the other hand, if the information processing apparatus 200 does not continue the processing (step S407, No), it ends the processing.

[0206] Next, the processing procedure of the array update processing described in step S402 of FIG. 33 will be described. FIG. 34 is a flowchart showing the processing procedure of the array update processing for the sell order according to the second embodiment. The setting unit 252 of the information processing apparatus 200 receives a sell order with the order quantity X and the amount P (step S501).

[0207] The setting unit 252 generates an array a' that is a copy of the array a (step S502). The setting unit 252 sets i to the initial value of 0 (step S503). The setting unit 252 updates the array a' by a'[1 + X] = min(a[i + X], a[i] + P) (step S504).

[0208] The setting unit 252 updates i with the value obtained by adding 1 to i (step S505). If i is not greater than or equal to the threshold value (step S506, No), the setting unit 252 proceeds to step S504. On the other hand, if i is greater than or equal to the threshold value (step S506, Yes), the setting unit 252 overwrites the array a with the array a' (step S507).

[0209] FIG. 35 is a flowchart showing the processing procedure of the order arrangement update process according to the second embodiment. The setting unit 252 of the information processing apparatus 200 receives a buy order with an order quantity X and an amount P (step S601).

[0210] The setting unit 252 generates an array b' that is a copy of the array b (step S602). The setting unit 252 sets i to an initial value of 0 (step S603). The setting unit 252 updates the array b' according to b'[1 + X] = max(b[i + X], b[i] + P) (step S604).

[0211] The setting unit 252 updates i with the value obtained by adding 1 to i (step S605). If i is not greater than or equal to the threshold value (step S606, No), the setting unit 252 proceeds to step S604. If i is greater than or equal to the threshold value (step S606, Yes), the setting unit 252 overwrites the array b with the array b' (step S607).

[0212] Note that the processing procedure of the order identification process described in step S406 of FIG. 33 corresponds to the processing procedure described in FIG. 14 of the first embodiment.

[0213] Next, the effects of the information processing apparatus 200 according to the second embodiment will be described. When the information processing apparatus 200 receives a sell order, it sets information based on the order sequence, order quantity, and amount of the sell order in the array a. When it receives a buy order, it sets information based on the order sequence, order quantity, and amount of the buy order in the array b. The information processing apparatus calculates the maximum number of contracts based on the information set in the array a and the information set in the array b. Then, the information processing apparatus identifies the orders to be the subject of the contract based on the calculated maximum number of contracts, the information set in the array a, and the information set in the array b. That is, according to the information processing apparatus according to the second embodiment, it is possible to identify the orders to be the subject of the contract such that the number of contracts is maximized while satisfying the conditions (1), (2), and (3).

[0214] Furthermore, the information processing device 200 scans the first array information 243 (array a) and the second array information 244 (array b) for each index, and calculates the largest index i where a[i]≦b[i] as the largest contract amount. This makes it possible to easily identify the largest contract amount by comparing array a with array b. Furthermore, it is possible to use auxiliary information to trace the indexes of array a and array b and identify orders that are subject to contract. [Example]

[0215] Meanwhile, in the information processing device 200 in the above-described second embodiment, sell orders are treated as positive integers in a plus direction (positive), and the minimum order quantity is calculated to be the first array a (first array information 243). Similarly, in the information processing device 200, buy orders are treated as positive integers in a plus direction (positive), and the maximum order quantity is calculated to be the second array a (second array information 244). In this way, in the information processing device 200 in the second embodiment, the order statuses of sell orders and buy orders to be executed are handled separately, and a large calculation cost is required for the matching process to identify the orders to be executed.

[0216] Therefore, in the information processing device of Example 3, a first array a (first array information 243) is set by treating sell orders as positive integers and plus (positive direction) and calculating the minimum order quantity, and a second array a (second array information 244) is set by treating buy orders as positive integers and plus (positive direction) and calculating the maximum order quantity, and these are combined into one array (third array information 246) for calculation.

[0217] Specifically, for the accepted sell orders and buy orders, the information processing device of the third embodiment counts the number of orders in one of the sell orders and buy orders (e.g., sell orders) as a positive number and the number of orders in the other order (e.g., buy orders) as a negative number. Then, the information processing device of the third embodiment sets information based on the accepted sell orders and buy orders to elements of one array (third array information 246) identified based on the count number.

[0218] In the information processing apparatus according to the third embodiment, for example, since sell orders are treated as positive and buy orders are treated as negative, sell orders and buy orders can be handled in the same single array. Also, regarding the information set for the elements, the same procedure as in the case of the sell order in the second embodiment is performed. That is, the information processing apparatus according to the third embodiment sets the minimum value of the delivery amount among the settlements to the element corresponding to the index i of the array (update if the value of the element becomes smaller).

[0219] Regarding this information processing apparatus according to the third embodiment, except that the storage unit 240 stores the third array information 246 regarding a single array instead of the first array information 243 and the second array information 244, it has substantially the same functional configuration as in the second embodiment.

[0220] FIG. 36 is a diagram showing an example of the data structure of the array information according to the third embodiment. Specifically, FIG. 36 is a diagram schematically showing the structure of a single array c regarding the third array information 246. The number (index) i of each element in this array c corresponds to the equilibrium position (difference) of the number of orders when a sell order and a buy order are combined. And in the initial state (S701) of the array c, c[0] becomes 0 (treated as an element with a value already set to 0), and all other elements become "∞" (treated as elements with an unset value).

[0221] Here, assume that the acquisition unit 251 has received a sell order of 2 shares at 40,000 yen (S702). At this time, the setting unit 252 counts plus by the number of shares of the sell order, which is 2 shares, based on the element (c[0]) with a value already set in the array c, and advances the index by 2. And if c[i + x]>c[i]+p, the setting unit 252 updates the value of the element as c[i + x]=c[i]+p (update if the value of the element becomes smaller).

[0222] For example, regarding the element of c[2], since c[0 + 2](=∞)>c[0]+4(=4), the setting unit 252 sets c[2]=4.

[0223] Next, it is assumed that the acquisition unit 251 receives a buy order for 1 share at 10,000 yen each (S703). At this time, based on the elements (c[0], c[2]) whose values have been set in the array c, the setting unit 252 counts down by 1 share, which is the order quantity of the buy order, and decrements the index by 1. Next, similar to S702, if c[i + x]> c[i]+p, the setting unit 252 updates the value of the element to c[i + x]=c[i]+p (update if the value of the element becomes smaller).

[0224] For example, for the element of c[-1], since c[0 - 1](=∞)> c[0]-1(=-1), the setting unit 252 sets c[-1]=-1. Also, for the element of c[1], since c[2 - 1](=∞)> c[2]-1(=3), the setting unit 252 sets c[1]=3.

[0225] Next, it is assumed that the acquisition unit 251 receives a sell order for 3 shares at 60,000 yen each (S704). At this time, based on the elements (c[-1], c[0], c「1」, c[2]) whose values have been set in the array c, the setting unit 252 counts up by 3 shares, which is the order quantity of the sell order, and increments the index by 3. Next, similar to S702, if c[i + x]> c[i]+p, the setting unit 252 updates the value of the element to c[i + x]=c[i]+p (update if the value of the element becomes smaller).

[0226] For example, for the element of c[2], since c[-1 + 3](=4)<c[-1]+6(=5), the setting unit 252 sets c[2]=4 (since the value of the element does not become smaller, it remains as it is). Also, for the element of c[3], since c[0 + 3](=∞)> c[0]+6(=6), the setting unit 252 sets c[3]=6. Also, for the element of c[4], since c[1 + 3](=∞)> c[1]+6(=9), the setting unit 252 sets c[4]=9. Also, for the element of c[5], since c[2 + 3](=∞)> c[2]+6(=10), the setting unit 252 sets c[5]=10.

[0227] Next, the acquiring unit 251 accepts a buy order for 5 shares for 110,000 yen (S705). At this time, the setting unit 252 counts down the number of shares, which is the number of buy orders, 5 shares, based on the elements (c[-1] to c[5]) whose values have already been set in the array c, and returns the index by 5. Next, as in S702, if c[i+x]>c[i]+p, the setting unit 252 updates the value of the element by setting c[i+x]=c[i]+p (updates if the value of the element becomes smaller).

[0228] Here, since the value of c[0] has been updated from 0 to -1, the order identifying unit 254 determines that a combination exists in which the number of sell orders and the number of buy orders are the same (contractable). In this way, the order identifying unit 254 determines whether or not a contract is possible based on the information set in the element in one array c where the difference in order quantity is 0. Next, the order identifying unit 254 identifies orders that are subject to contract from the sell orders and buy orders set in one array c (third array information 246). Specifically, the order identifying unit 254 identifies orders that are subject to contract based on auxiliary information indicating the order order (order identification information) assigned to each element of one array c, as in the second embodiment.

[0229] Fig. 37 is a diagram for explaining the processing for an array according to the third embodiment. Specifically, Fig. 37 is a diagram for explaining the assignment of auxiliary information (sub3) to each element of one array c. Note that the subscripts (0, +1, +2..., -1, -2...) in the auxiliary information sub3 correspond to the element numbers (indexes).

[0230] As shown in FIG. 37, when the setting unit 252 sets the received order to each element, it sets the identification information of the order (numbers 1, 2,... in the illustrated example) in the auxiliary information sub3 in the order of reception. For example, when receiving a sell order (1) of 2 shares at 40,000 yen in S702 and setting c[1], the setting unit 252 sets the sell order (1) in the auxiliary information sub3+1 of c[1]. Next, when receiving a buy order (2) of 1 share at 10,000 yen in S703 and setting c[1] and c[-1], the setting unit 252 sets the sell order (1) and the buy order (2) in the auxiliary information sub3+1 and sub-1 of c[1] and c[-1], respectively.

[0231] Similarly, in the reception of a sell order (3) of 3 shares at 60,000 yen (S704) and the reception of a buy order (4) of 5 shares at 110,000 yen (S705), the setting unit 252 sets the auxiliary information sub3 to each element. As a result, as in the illustrated example, the auxiliary information sub3-5 to sub+5 are set for each of c[-5] to c[5]. This auxiliary information sub3-5 to sub+5 indicates the combination of sell orders and buy orders in the case corresponding to the element number (difference in the number of orders).

[0232] Therefore, when the order specifying unit 254 determines that the value of c[0] is updated from 0 to -1 and it is possible to execute a trade, it specifies the order to be traded based on the identification information of the order set in the auxiliary information sub3-0 of c[0]. In the case of the illustrated example, the sell orders (1), (3) and the buy order (4) are specified as the combination of orders that can be traded. In this way, the order specifying unit 254 can easily specify the combination of sell orders and buy orders that can be traded based on the auxiliary information sub3-0 of c[0].

[0233] The index of each element (auxiliary information sub3-0, sub3+1, sub3+2..., sub3-1, sub3-2...) is a list of orders, and if it is stored as is, memory usage will increase, but the above process only adds it to the end. For this reason, it is possible to store the index in a memory structure like a trie tree (the nodes of a trie tree correspond to the index). In other words, compressing the index can reduce the increase in memory usage.

[0234] Figure 38 is an explanatory diagram explaining index compression. As shown in Figure 38, the memory structure of the index for each element can be said to be such that the nodes of the trie tree correspond to the index. Therefore, when order number (2) is added to node n1, which combines order numbers (1) and (3), the result is node n2, which combines order numbers (1), (3), and (2).

[0235] As described above, the information processing device 200 of the third embodiment counts the number of orders in one of the sell orders and buy orders (sell orders in the embodiment) as a positive number for the accepted sell orders and buy orders. Also, the information processing device 200 of the third embodiment counts the number of orders in the other of the sell orders and buy orders (buy orders in the embodiment) as a negative number for the accepted sell orders and buy orders. The information processing device 200 of the third embodiment sets information based on the accepted sell orders and buy orders for the elements of one array identified by counting in this way. The information processing device 200 of the third embodiment identifies orders to be executed from the accepted sell orders and buy orders based on the information set in one array.

[0236] As a result, the information processing device 200 of the third embodiment can handle the order status combining the accepted sell orders and buy orders in one array. Therefore, the information processing device 200 of the third embodiment can reduce the calculation cost for determining the contract of a transaction compared to when the order statuses of sell orders and buy orders are handled separately.

[0237] Also, in one array, the difference in the number of orders combining sell orders and buy orders is used as the element number. The information processing apparatus 200 of Embodiment 3 counts and specifies the numbers based on the number of orders of the received orders with respect to the elements in one array where the information based on the orders has been set, and sets the information set in the reference element and the information based on the received orders for the specified elements. Thereby, in the information processing apparatus 200 of Embodiment 3, the order status combining the received sell orders and buy orders can be stored in one array having the difference in the number of orders combining sell orders and buy orders as the element number.

[0238] Further, the information processing apparatus 200 of Embodiment 3 specifies the orders to be matched based on the information set in the elements where the difference in the number of orders is 0 in one array. Thereby, the information processing apparatus 200 of Embodiment 3 can specify the orders to be matched so that the number of sell orders and buy orders matches.

[0239] Note that each component of each illustrated apparatus does not necessarily have to be physically configured as shown in the figure. That is, the specific form of the distribution and integration of each apparatus is not limited to that shown in the figure, and all or part of it can be functionally or physically distributed and integrated in any unit according to various loads and usage situations.

[0240] Also, in each of the above embodiments, a case of applying to stock trading in a securities trading market for full - volume matching or trading with a certain number of orders as a condition is exemplified, but it is not limited to application to stock trading. For example, it may be applied to transactions other than stock trading such as the futures trading market.

[0241] Furthermore, the various processing functions performed by the information processing devices 100 and 200 may be executed in whole or in part on a CPU (or a microcomputer such as an MPU or MCU (Micro Controller Unit)) or a GPU (Graphics Processing Unit). Needless to say, the various processing functions may be executed in whole or in part on a program analyzed and executed by the CPU (or a microcomputer such as an MPU or MCU) or GPU, or on hardware using wired logic. The various processing functions performed by the information processing devices 100 and 200 may be executed by multiple computers working together using cloud computing.

[0242] Next, an example of the hardware configuration of a computer that realizes the same functions as the information processing device 100 (200) shown in the above embodiment will be described. Fig. 39 is a diagram showing an example of the hardware configuration of a computer that realizes the same functions as the information processing device of the embodiment.

[0243] 39, computer 300 has CPU 301 that executes various types of arithmetic processing, input device 302 that accepts data input from a user, and display 303. Computer 300 also has communication device 304 that exchanges data with external devices via a wired or wireless network, and interface device 305. Computer 300 also has RAM 306 that temporarily stores various types of information, and hard disk device 307. Each of devices 301 to 307 is connected to bus 308.

[0244] The hard disk device 307 includes an acquisition program 307a, a setting program 307b, an execution quantity calculation program 307c, an order specification program 307d, and an output control program 307e. The CPU 301 reads out each of the programs 307a to 307e and loads them into the RAM 306.

[0245] The acquisition program 307a functions as the acquisition process 306a. The setting program 307b functions as the setting process 306b. The agreement constant calculation program 307c functions as the agreement constant calculation process 306c. The order specification program 307d functions as the order specification process 306d. The output control program 307e functions as the output control process 306e.

[0246] The processing of the acquisition process 306a corresponds to the processing of the acquisition units 151 and 251. The processing of the setting process 306b corresponds to the processing of the setting units 152 and 252. The processing of the agreement constant calculation process 306c corresponds to the processing of the agreement constant calculation units 153 and 253. The processing of the order specification process 306d corresponds to the processing of the order specification units 154 and 254. The processing of the output control process 306e corresponds to the processing of the output control units 155 and 255.

[0247] Note that for each of the programs 307a to 307e, it is not necessarily stored in the hard disk device 307 from the beginning. For example, each program is stored in a "portable physical medium" such as a flexible disk (FD), CD-ROM, DVD, magneto-optical disk, or IC card inserted into the computer 300. Then, the computer 300 may read and execute each of the programs 307a to 307e. Also, each of the programs 307a to 307e may be stored in an external device connected to a network such as a public line, the Internet, or a LAN, and the computer 300 may read and execute each of the programs 307a to 307e from the external device connected to the network.

[0248] Regarding the above embodiments, the following supplementary notes are further disclosed.

[0249] (Supplementary Note 1) Regarding the received sell orders and buy orders, for one element of a single array specified by counting the order quantity in one of the sell order and the buy order as positive and the order quantity in the other order as negative, information based on the received sell order and the buy order is set. Based on the information set in the one array, identify the orders to be matched from the received sell orders and buy orders. A matching program, characterized in that the computer is caused to execute the process.

[0250] (Appendix 2) The one array uses the difference in the number of orders combining the sell orders and the buy orders as the element number. The setting process is based on the elements in the one array where information based on the order has been set. For the elements identified by counting the numbers based on the order quantity of the received order, set the information set in the reference element and the information based on the received order. The matching program according to Appendix 1, characterized by the above.

[0251] (Appendix 3) The identifying process identifies the orders to be matched based on the information set in the elements where the difference in the order quantity is 0. The matching program according to Appendix 2, characterized by the above.

[0252] (Appendix 4) For the received sell orders and buy orders, count the order quantity in one of the sell orders and buy orders as positive and the order quantity in the other order as negative. Set the information based on the received sell orders and buy orders for the elements of one array identified thereby. Based on the information set in the one array, identify the orders to be matched from the received sell orders and buy orders. A matching method, characterized in that the computer executes the process.

[0253] (Appendix 5) The one array uses the difference in the number of orders combining the sell orders and the buy orders as the element number. The setting process counts the number of received orders based on the element in the one array to which information based on the order has been set, and sets the information already set in the element and the information based on the received order to the element identified by the count. 5. The contract method according to claim 4,

[0254] (Supplementary Note 6) The process of identifying identifies orders to be executed based on information set in the element where the difference in the number of orders is 0. 6. The contract method according to claim 5,

[0255] (Supplementary Note 7) For the accepted sell orders and buy orders, the number of orders in one of the sell orders and the buy orders is counted as a positive number, and the number of orders in the other order is counted as a negative number, and information based on the accepted sell orders and buy orders is set for the elements of one specified array; Identifying orders to be executed from among the accepted sell orders and buy orders based on the information set in the one array; An information processing device comprising: a control unit that executes processing.

[0256] (Supplementary Note 8) The one array has the element number equal to the difference between the combined number of the sell orders and the buy orders, The setting process counts the number of received orders based on the element in the one array to which information based on the order has been set, and sets the information already set in the element and the information based on the received order to the element identified by the count. 8. The information processing device according to claim 7,

[0257] (Supplementary Note 9) The process of identifying identifies orders to be executed based on information set in the element where the difference in the number of orders is 0. 9. The information processing device according to claim 8, [Explanation of symbols]

[0258] 100, 200... Information processing devices 110, 210... Communication units 120, 220... Input units 130, 230... Display units 140, 240... Memory units 141, 241... Sales order tables 142, 242... Purchase order tables 143, 243... First array information 144, 244... Second array information 145, 245... Transaction result information 150, 250... Control units 151, 251... Acquisition units 152, 252... Setting units 153, 253... Transaction number calculation units 154, 254... Order identification units 155, 255... Output control units 246... Third array information 300... Computers 301... CPUs 302... Input devices 303... Displays 304... Communication devices 305... Interface devices 306... RAMs 306a... Acquisition processes 306b... Setting processes 306c... Transaction number calculation processes 306d... Order identification processes 306e... Output control processes 307... Hard disk devices 307a... Acquisition programs 307b... Setting programs 307c... Transaction number calculation programs 307d... Order identification programs 307e... Output control programs 308... Buses n1, n2... Nodes

Claims

1. For the received sell orders and buy orders, count the order quantity in one of the sell order and the buy order as positive and the order quantity in the other order as negative, and for each element of one array having an element indicating the difference in the order quantity when combining the order quantity of the received sell order and the order quantity of the buy order, set the first information based on the received sell order and the buy order and the auxiliary information indicating the combination of the sell order and the buy order for each corresponding element, Based on the first information set for the element where the difference in the order quantity is zero, determine whether a trade is possible, When it is determined that a trade is possible, based on the auxiliary information set for the element of zero, identify the combination of orders that are the subject of the trade from among the received sell order and the buy order, A trading program characterized by causing a computer to execute the process.

2. The first information includes information based on the amounts of the received sell order and the buy order, The auxiliary information includes information indicating the order sequence, The setting process is as follows, Based on the element in which the first information based on the order has been set among the one array, for the element specified by counting and identifying a number based on the order quantity of the received order, update and set the first information corresponding to the element based on the first information already set for the reference element and the amount of the received order, The auxiliary information is set in the order in which the orders are received, The trading program according to claim 1, characterized by the above.

3. The auxiliary information is held in a trie tree structure for each element, The identifying process identifies the combination of orders that are the subject of the trade based on the nodes of the trie tree, The trading program according to claim 1 or 2, characterized by the above.

4. For the received sell orders and buy orders, count the order quantity in one of the sell order and the buy order as positive and the order quantity in the other order as negative, and for each element of one array having an element indicating the difference in the order quantity when combining the order quantity of the received sell order and the order quantity of the buy order, set the first information based on the received sell order and the buy order and the auxiliary information indicating the combination of the sell order and the buy order for each corresponding element, Based on the first information set for the element where the difference in the order quantity is zero, determine whether a trade is possible, When it is determined that an agreement is possible, based on the auxiliary information set in the element of 0, identify a combination of orders to be the subject of the agreement from among the received sell orders and buy orders. An agreement method characterized in that a computer executes the process.

5. For the received sell orders and buy orders, count the number of orders in one of the sell orders and buy orders as positive and the number of orders in the other order as negative, and for each element of one array having an element indicating the difference in the number of orders when the number of orders in the received sell order and the number of orders in the buy order are combined, set the first information based on the received sell orders and buy orders and the auxiliary information indicating the combination of the sell order and the buy order for each corresponding element. Based on the first information set in the element where the difference in the number of orders is 0, determine whether an agreement is possible. When it is determined that an agreement is possible, based on the auxiliary information set in the element of 0, identify a combination of orders to be the subject of the agreement from among the received sell orders and buy orders. An information processing apparatus comprising a control unit that executes the process.

Citation Information

Patent Citations

  • Server device, transaction terminal, computer program and storage medium

    JP2007102585A

  • Methods and systems for order matching

    JP2015523639A

  • Financial product transaction management method and financial product transaction management system

    JP2019091388A

  • System and Method for Using Order Modifiers in Relation to Trading Strategies

    US20180260898A1