US20230047165A1 - Deterministic credit system - Google Patents
Deterministic credit system Download PDFInfo
- Publication number
- US20230047165A1 US20230047165A1 US17/886,587 US202217886587A US2023047165A1 US 20230047165 A1 US20230047165 A1 US 20230047165A1 US 202217886587 A US202217886587 A US 202217886587A US 2023047165 A1 US2023047165 A1 US 2023047165A1
- Authority
- US
- United States
- Prior art keywords
- credit
- lines
- user
- line
- trade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 17
- 238000003860 storage Methods 0.000 claims abstract description 11
- 230000002085 persistent effect Effects 0.000 claims abstract description 4
- 230000002146 bilateral effect Effects 0.000 claims description 31
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000011084 recovery Methods 0.000 claims description 5
- 238000013138 pruning Methods 0.000 claims description 3
- 230000001143 conditioned effect Effects 0.000 claims 2
- 230000000977 initiatory effect Effects 0.000 claims 2
- 238000012163 sequencing technique Methods 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- WURBVZBTWMNKQT-UHFFFAOYSA-N 1-(4-chlorophenoxy)-3,3-dimethyl-1-(1,2,4-triazol-1-yl)butan-2-one Chemical compound C1=NC=NN1C(C(=O)C(C)(C)C)OC1=CC=C(Cl)C=C1 WURBVZBTWMNKQT-UHFFFAOYSA-N 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000004549 pulsed laser deposition Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G06Q40/025—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/02—Banking, e.g. interest calculation or account maintenance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/03—Credit; Loans; Processing thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Definitions
- spot foreign exchange trading may require the existence of a bilateral credit relationship between the two counterparties to a trade, as opposed to the existence of a central counterparty as is the norm in equities and futures markets.
- electronic spot FX trading venues tend to provide functionality to participants on that venue to specify credit lines they are extending to other such participants. The venue may then determine from those bilateral credit lines if a trade between two participants can occur or not and if it can drawdown those credit lines by the size of the trade, for example, by examining the lines existence, magnitude and type.
- Horizonal scaling is often employed extensively in the architecture of many electronic trading venues.
- Horizonal scaling may refer to the addition of computational resources such as computers and/or other devices to increase the capacity of a computer system or network.
- electronic trading venues tend to be composed of a plurality of order gateway components, a plurality of matching engine components, and a plurality of market data distribution components. These components may be implemented as distinct programs, modules or engines within the electronic trading venue, each designed to perform particular tasks or functions.
- risk checking components that in the context of spot FX such components may be used or otherwise repurposed to perform credit checking i.e., storing, interrogating, and drawing down bilateral credit lines-conventionally those too may be horizontally scaled.
- the disclosure relates to systems, methods, and computer-readable media for a deterministic credit system to provide high-performance credit-checking while reducing the need for horizontal scaling or implementing larger system architecture.
- the systems and methods presented herein may achieve this in several ways, for example, by: storing credit lines in memory; optimizing the storage of those lines in memory and performing precomputations on them so as to minimize operations performed on them; and minimizing disk and network I/O by (i) persisting inputs to the credit checking computations and (ii) ensuring those computations are deterministic, consequently eliminating the need to persist or transmit the outputs of those computations.
- FIG. 1 illustrates an example of a computer system of an electronic trading venue for performing credit administration and checking workflow among key venue components
- FIG. 2 shows a flowchart for the creation of in-memory credit lines in exemplary deterministic credit checking
- FIG. 3 illustrates how one example of the system of the present disclosure can efficiently transmit data between components to provide auditability, fault tolerance, recovery and so on, for transmission of credit-related data between the various engines of the trading venue, during a trading session;
- FIG. 4 illustrates a flowchart of selected logic in the credit checking engine
- FIG. 5 illustrates an example of a computer system illustrated in FIG. 1 .
- Systems and methods of a deterministic credit system are disclosed to provide high-performance credit-checking while reducing the need for horizontal scaling or implementing larger system architecture.
- the systems and methods presented herein may achieve this in several ways, for example, by: storing credit lines in memory; optimizing the storage of those lines in memory and performing precomputations on them so as to minimize operations performed on them; and minimizing disk and network I/O by (i) persisting inputs to the credit checking computations and (ii) ensuring those computations are deterministic, consequently eliminating the need to persist or transmit the outputs of those computations.
- GUI graphical user interface
- API application program interface
- a common type of line is a gross limit.
- Another common type of line is a net limit.
- magnitudes of the trades may be expressed in a currency of the participant’s choosing using a conversion rate; lines a participant extends may also be expressed in that same currency.
- Conventional electronic trading venues may also allow participants to specify arbitrary groupings of credit lines they have extended that may or may not co-exist or even “overlap” with those ungrouped lines they have also extended.
- a non-limiting example that will ultimately serve to illustrate complications arising from this is provided as follows: a participant extends a single gross line to a group of counterparties all domiciled in a certain country, and further extends individual gross lines to each such counterparty in the country. The combination of these lines may allow the participant to express that they are unwilling to extend more than, for example, $100 million credit in the aggregate to all counterparties in that country. However, the sum of the individual lines extended across all such participants may actually exceed that $100 million. For example, say there are five distinct participants each extended between $30 million and $50 million each.
- a setup like the one described can advantageously allow a participant to express their credit risk in terms of both a country and of individual counterparties domiciled there advantageously without, for example, continuously having to “rebalance” limits on the venue as trades draw them down.
- such a venue will also include a credit checking component.
- a credit checking component In an example of the present disclosure involving a deterministic credit system, only one such component is necessary, while conventional venues may include a plurality of such horizontally-scaled components and certain parts of their functionality may even exist as subcomponents within matching engine components. Regardless of how the credit check component(s) manifest however, conventionally they receive credit line information from the venue’s credit admin component.
- FIG. 1 illustrates an example of a computer system 100 of an electronic trading venue 110 for performing credit administration and checking workflow among key venue components, according to examples of the present disclosure.
- the various components are referred to as engines that may represent separate programs for performing distinct tasks within the computer system 100 .
- the example electronic trading venue 110 may include a credit admin engine 120 , a credit checking engine 130 , and a matching engine 140 .
- the electronic trading venue 110 may also include one or more order gateways 150 and one or more market data distributors 160 .
- the order gateways 150 may be programmed to carry out instructions provided by a market participant during a trading session, such as buy or sell orders.
- the market data distributors 160 may be programmed to provide market data during a trading session.
- the credit admin engine 120 may provide an interface to a plurality of market participants, such as market participants 101 A, 101 B... 101 N.
- the credit admin engine 120 may provide the interface to create credit lines for each market participant 101 A... 101 N initially, in order to allow participation in the electronic trading venue 110 . Later, the credit admin engine 120 may provide the interface to modify any of the credit lines for the market participants 101 A... 101 N.
- the credit admin engine 120 may send the credit line information to the credit checking engine 130 .
- the credit checking engine 130 may perform crediting checking using partially-formed trades against the credit lines.
- the partially-formed trades may be obtained by the credit checking engine 130 from the matching engine 140 .
- the credit checking engine 130 may also be programmed to transmit completed trades and any unwound trades to the matching engine 140 .
- all credit line information may be transferred from the credit admin engine 120 to the credit checking engine 130 .
- Each such line may be transferred over a network connection, such as TCP/IP, as a single record containing: a unique identifier for the line, the counterparty extending the credit, the counterparty to which credit is being extended, the type of the limit as an enumeration, and the magnitude of the limit as a numeric value, as some examples.
- the credit checking engine 130 may then efficiently store them in memory, utilizing the following techniques:
- each distinct pair of counterparties can be assigned a unique key. For example, in the case that there are less than 2 32 distinct counterparties on the venue and where the computer architecture uses 64-bit words, each counterparty can be assigned a unique 32-bit integer identifier. The assignment of such an integer may be done by the venue operator and its lookup and insertion into a message received from a market participant may be performed by an order gateway 150 .
- a single key for each distinct pair of counterparties can then be generated by concatenating the bitstrings of the two counterparty’s integers, nominally using the smaller integer as the left and larger as the right in that concatenation, as one example.
- this concatenation may be expressed as a cast of the smaller 32-bit integer to a 64-bit integer, a shift left on it by 32 bits, and finally by adding to it or bitwise boolean OR’ing it with the second integer.
- Aliasing of credit limits as values in the data structure may refer to a computer programming term where two or more references to the same object exist in a computer program’s object graph. Noting that some credit lines involve groups of counterparties, rather than creating a new object for each such counterparty in the group such that multiple duplicate objects would be brought into existence, a single object representing the credit line can be created and shared by all affected counterparties. For example, if the data structure in which the credit checking engine 130 storing credit lines is a hashmap, the keys of which are pairs of counterparties stored as 64-bit integers and each value of which is a set of credit lines, then aliasing can ensure the same credit line object appears in multiple such sets. In this way, this aliasing may improve performance by reducing the number of lookup operations on the hashmap and correspondingly the number of comparison and drawdown operations when a credit check involves a group limit.
- FIG. 2 shows a flowchart 200 for the creation of in-memory credit lines in exemplary deterministic credit checking, illustrating use of the above techniques.
- the credit checking engine 130 may receive credit lines from the credit admin engine 120 .
- the credit checking engine 130 may pre-process the records, such as by pruning records where bilateral credit does not exist. In some examples, the credit checking engine 130 may prune the records before some or all subsequent processing.
- the electronic trading venue 110 may create a single combined-identification key for each pair of participants having bilateral credit lines by concatenating their respective individual identifiers.
- An example of the identification key may be the 64-bit key for each pair of participants using their respective 32-bit integer identifiers as described above. This may be performed by one or more of the order gateways 150 that respond to instructions from the participants for choosing their individual identifiers. In other cases, the individual identifiers may be assigned by the credit admin engine 120 and the concatenation may be performed by the credit checking engine 130 or the matching engine 140 as some examples.
- the credit checking engine 130 may merge pairs of congruent unilateral credit line records into a single bilateral credit line record with the lower of the two limits being set as its limit. This is another further optimization to reduce latency and processing power during a trading session.
- the electronic trading venue 110 may populate mapping of credit lines with the combined-identification keys and the set of credit lines involving the pair of the participants as values. The credit lines of the groups of participants may be aliased across these sets. An example of the type of mapping may be the hashmap of credit lines. This may be performed by the credit checking engine 130 as an example.
- inputs to the credit checking engine 130 are sequenced and computations performed thereon are specifically designed to be deterministic.
- the potentially voluminous outputs of computations need not be transmitted over a computer network, or from memory to disk. Instead, for the purposes of auditability, fault-tolerance, recovery and the like, it is sufficient to transmit only the sequenced inputs. Since those inputs will tend to be smaller, performance as judged by latency and throughput, for example, will advantageously be improved on venues implementing deterministic credit checking as described herein.
- PRNG pseudo-random number generator
- Example inputs to the PRNG’s seed may be a unique, monotonically increasing integer trade identifier generated by and inserted into the message by the matching engine 140 , or a monotonically increasing integer message sequence number assigned to the message and generated by an engine of the electronic trading venue 110 that sequences messages before they are sent to the credit checking engine 130 . If the size of the data desired to be used as a seed from the message exceeds that required by the PRNG, it may be hashed down to an appropriate length (for example, 64 bits) using an off-the-shelf hashing algorithm.
- an appropriate length for example, 64 bits
- FIG. 3 illustrates how one example 300 of the system of the present disclosure can efficiently transmit data between components to provide auditability, fault tolerance, recovery and so on, for transmission of credit-related data between the various engines of the electronic trading venue 110 , during a trading session.
- a partial view of the electronic trading venue 110 - 1 is shown.
- an engine deterministic computation logic is introduced that allows each engine that contains it—in this example, the live credit checking engine 130 - 1 , the backup credit checking engine 130 - 2 , and the credit admin engine 120 —to independently perform the credit checks and drawdowns from the inputs to credit checking.
- Each of these components may also be populated with its own hashmap data structure of credit lines previously described in the manner previously described.
- the live credit checking engine 130 - 1 and the backup credit checking engine 130 - 2 may be two components within the credit checking engine 130 .
- the sequencer 310 introduced in FIG. 3 ensures all such engines receive all the same inputs in the same order. It may do so using a TCP/IP connection over a computer network to each, and by inserting into each message it sends a sequence number. Gaps in that sequence number could be used by the receivers of those messages to indicate a missed message, for example, as in the sequence number scheme of the FIX protocol.
- the matching engine 140 may be programmed to send (initially) unsequenced and partially-formed trades (or a plurality of price-compatible contra orders per U.S. Provisional Patent 63/233,038) to the sequencer 310 , and then the sequencer 310 sequences and distributes them to each of the credit admin engine 120 , live credit checking engine 130 - 1 , and backup credit checking engine 130 - 2 .
- the credit admin engine 120 may be programmed to send, to the sequencer 310 , unsequenced changes to updated credit lines resulting from a market participant manually editing a credit line, for example, to increase it, remove it, etc., intra-session.
- the sequencer 310 may then also sequence and distribute these to each of the credit admin engine 120 , live credit checking engine 130 - 1 , and backup credit checking engine 130 - 2 .
- the sequencer 310 may also send other credit changes that may occur intra-session, such as a value date rollover for a particular instrument as updated lines.
- the credit admin engine 120 contains the deterministic computation logic because, among other things, it can provide to participants a contemporaneous view of the credit they have utilized. The credit remaining across a participants lines, of course, is affected by the trades that occur during the trading session and will usually decrease as a result of those trades. The credit admin engine 120 may also provide to participants data on trades that have failed due to missing or exhausted credit lines, and this too is calculated as a matter of course by the deterministic computation logic.
- each market data distributor 160 illustrated in FIG. 1 may include all or a portion of the deterministic computation logic 305 .
- each market data distributor 160 may use all or a portion of the deterministic computation logic 305 to perform credit screening. Such credit screening may be performed in order to ensure that a given market participant receives appropriate market data updates in accordance with their bilateral credit with other market participants.
- a flowchart 400 illustrating selected logic in the credit checking engine 130 in an example of the invention is provided in FIG. 4 .
- a partially formed trade is received.
- the trade may be only partially formed because an agreement may be made between the maker and taker parties, but still other conditions may need to be met.
- a credit check may need to be passed that may include ensuring that the partially-formed trade falls within the parameters of the parties’ credit lines, and acceptable boundaries within the trading venue may need to be met.
- the key to the hashmap containing the bilateral credit lines is obtained by combining the identifiers for the maker and taker to the partially formed trade into a single key.
- the key is then used to look up the credit lines associated with that pair of participants.
- the credit check has failed and a trade-unwind message is sent to the matching engine 140 . If, however, at 408 such lines are found, then the credit checking engine 130 may find the smallest limit among the credit lines and then set the actual trade size to the minimum or lesser of its current size and the smallest credit limit. Then all of the lines associated with the key are drawn down by the minimum of two values: the size of the partially-formed trade and the minimum amount remaining among the associated credit lines. At 410 , if then the actual size of the trade is less than the venue’s minimum trade size, then at 416 the credit check fails and the trade is denied. The drawdowns are reversed, and then at 414 a trade-unwind is sent to the matching engine 140 . If the actual size meets the minimum trade size, then at 412 the credit check is successful and a completed trade message is sent to the matching engine.
- FIG. 5 illustrates an example of a computer system 500 that may be implemented by the computer system illustrated in FIGS. 1 and 3 .
- the computer system 500 may include, among other things, an interconnect 510 , a processor 512 , a multimedia adapter 514 , a network interface 516 , a system memory 518 , and a storage adapter 520 .
- the interconnect 510 may interconnect various subsystems, elements, and/or components of the computer system 500 . As shown, the interconnect 510 may be an abstraction that may represent any one or more separate physical buses, point-to-point connections, or both, connected by appropriate bridges, adapters, or controllers. In some examples, the interconnect 510 may include a system bus, a peripheral component interconnect (PCI) bus or PCI-Express bus, a HyperTransport or industry standard architecture (ISA)) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), IIC (I2C) bus, or an Institute of Electrical and Electronics Engineers (IEEE) standard 1364 bus, or “firewire,” or other similar interconnection element.
- PCI peripheral component interconnect
- ISA HyperTransport or industry standard architecture
- SCSI small computer system interface
- USB universal serial bus
- I2C IIC
- IEEE Institute of Electrical and Electronics Engineers
- the interconnect 510 may allow data communication between the processor 512 and system memory 518 , which may include read-only memory (ROM) or flash memory (neither shown), random-access memory (RAM), and/or other non-transitory computer readable media (not shown).
- system memory 518 may include read-only memory (ROM) or flash memory (neither shown), random-access memory (RAM), and/or other non-transitory computer readable media (not shown).
- ROM read-only memory
- flash memory non-transitory computer readable media
- the ROM or flash memory may contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with one or more peripheral components.
- BIOS Basic Input-Output system
- the processor 512 may control operations of the computer system 500 . In some examples, the processor 512 may do so by executing instructions such as software or firmware stored in system memory 518 or other data via the storage adapter 520 .
- the processor 512 may be, or may include, one or more programmable general-purpose or special-purpose microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic device (PLDs), trust platform modules (TPMs), field-programmable gate arrays (FPGAs), other processing circuits, or a combination of these and other devices.
- DSPs digital signal processors
- ASICs application specific integrated circuits
- PLDs programmable logic device
- TPMs trust platform modules
- FPGAs field-programmable gate arrays
- the multimedia adapter 514 may connect to various multimedia elements or peripherals. These may include devices associated with visual (e.g., video card or display), audio (e.g., sound card or speakers), and/or various input/output interfaces (e.g., mouse, keyboard, touchscreen).
- visual e.g., video card or display
- audio e.g., sound card or speakers
- input/output interfaces e.g., mouse, keyboard, touchscreen
- the network interface 516 may provide the computer system 500 with an ability to communicate with a variety of remote devices over a network.
- the network interface 516 may include, for example, an Ethernet adapter, a Fibre Channel adapter, and/or other wired- or wireless-enabled adapter.
- the network interface 516 may provide a direct or indirect connection from one network element to another, and facilitate communication and between various network elements.
- the storage adapter 520 may connect to a standard computer readable medium for storage and/or retrieval of information, such as a fixed disk drive (internal or external).
- the network may include any one or more of, for instance, the Internet, an intranet, a PAN (Personal Area Network), a LAN (Local Area Network), a WAN (Wide Area Network), a SAN (Storage Area Network), a MAN (Metropolitan Area Network), a wireless network, a cellular communications network, a Public Switched Telephone Network, and/or other network.
- a PAN Personal Area Network
- LAN Local Area Network
- WAN Wide Area Network
- SAN Storage Area Network
- MAN Metropolitan Area Network
- wireless network a wireless network
- cellular communications network a cellular communications network
- Public Switched Telephone Network and/or other network.
- the devices and subsystems can be interconnected in different ways from that shown in FIG. 5 .
- Instructions to implement various examples and implementations described herein may be stored in computer-readable storage media such as one or more of system memory 518 or other storage. Instructions to implement the present disclosure may also be received via one or more interfaces and stored in memory.
- the operating system provided on computer system 500 may be MS-DOS®, MS-WINDOWS®, OS/2®, OS X®, IOSO, ANDROID®, UNIX®, Linux®, or another operating system.
- FIG. 1 as well as in other Figures, different numbers of entities than those depicted may be used. Furthermore, according to various implementations, the components described herein may be implemented in hardware and/or software that configure hardware.
- the term “a” and “an” may be intended to denote at least one of a particular element.
- the term “includes” means includes but not limited to, the term “including” means including but not limited to.
- the term “based on” means based at least in part on.
Abstract
Description
- This application claims priority to U.S. Provisional Pat. Application No. 63/233,038, filed Aug. 13, 2021, entitled “Pipelined Credit Checking,” and U.S. Provisional Pat. Application No. 63/237,651, filed Aug. 27, 2021, entitled “Deterministic Credit System,” the contents of each of which are incorporated by reference in their entireties herein.
- In certain markets, such as the spot foreign exchange (spot FX) market, trading may require the existence of a bilateral credit relationship between the two counterparties to a trade, as opposed to the existence of a central counterparty as is the norm in equities and futures markets. To that end, electronic spot FX trading venues tend to provide functionality to participants on that venue to specify credit lines they are extending to other such participants. The venue may then determine from those bilateral credit lines if a trade between two participants can occur or not and if it can drawdown those credit lines by the size of the trade, for example, by examining the lines existence, magnitude and type.
- In the pursuit of performance, such as achieving low-latency and high-throughput in order processing, horizontal scaling is often employed extensively in the architecture of many electronic trading venues. Horizonal scaling may refer to the addition of computational resources such as computers and/or other devices to increase the capacity of a computer system or network. To that end, such electronic trading venues tend to be composed of a plurality of order gateway components, a plurality of matching engine components, and a plurality of market data distribution components. These components may be implemented as distinct programs, modules or engines within the electronic trading venue, each designed to perform particular tasks or functions.
- For such electronic trading venues also implementing risk checking componentsthat in the context of spot FX such components may be used or otherwise repurposed to perform credit checking i.e., storing, interrogating, and drawing down bilateral credit lines-conventionally those too may be horizontally scaled.
- A number of problems become apparent in attempting to horizontally scale the credit system on an electronic spot FX trading venue. First, certain types of credit limits such as net credit do not lend themselves well to being partitioned among distinct components in the required manner, such that the components can operate substantially independently of one another. Second, if the credit universe is represented as a directed graph-where the nodes of which are participants, and edges of which are credit relationships of varying type and magnitude, noting that other specific mappings to edges and to nodes may exist-then the graph tends to be connected which inhibits partitioning it across distinct components. Third, in the presence of prime brokerage relationships and in the presence of groups of limits being imposed on pluralities of currencies, instruments, or counterparties, and in conjunction with ungrouped limits, partitioning credit limits among substantially independent components is further inhibited.
- These and other problems motivate the need for a high-performance credit system on electronic trading venues where trades involve bilateral credit between participants.
- The disclosure relates to systems, methods, and computer-readable media for a deterministic credit system to provide high-performance credit-checking while reducing the need for horizontal scaling or implementing larger system architecture. The systems and methods presented herein may achieve this in several ways, for example, by: storing credit lines in memory; optimizing the storage of those lines in memory and performing precomputations on them so as to minimize operations performed on them; and minimizing disk and network I/O by (i) persisting inputs to the credit checking computations and (ii) ensuring those computations are deterministic, consequently eliminating the need to persist or transmit the outputs of those computations.
- Features of the present disclosure may be illustrated by way of example and not limited in the following Figure(s), in which like numerals indicate like elements, in which:
-
FIG. 1 illustrates an example of a computer system of an electronic trading venue for performing credit administration and checking workflow among key venue components; -
FIG. 2 shows a flowchart for the creation of in-memory credit lines in exemplary deterministic credit checking; -
FIG. 3 illustrates how one example of the system of the present disclosure can efficiently transmit data between components to provide auditability, fault tolerance, recovery and so on, for transmission of credit-related data between the various engines of the trading venue, during a trading session; -
FIG. 4 illustrates a flowchart of selected logic in the credit checking engine; and -
FIG. 5 illustrates an example of a computer system illustrated inFIG. 1 . - Systems and methods of a deterministic credit system are disclosed to provide high-performance credit-checking while reducing the need for horizontal scaling or implementing larger system architecture. The systems and methods presented herein may achieve this in several ways, for example, by: storing credit lines in memory; optimizing the storage of those lines in memory and performing precomputations on them so as to minimize operations performed on them; and minimizing disk and network I/O by (i) persisting inputs to the credit checking computations and (ii) ensuring those computations are deterministic, consequently eliminating the need to persist or transmit the outputs of those computations.
- On a conventional electronic trading venue, market participants specify credit lines, including attributes thereof such as their size and type, that they are extending to other such participants via a credit administration engine. In conventional systems, participants may access the credit administration engine via a graphical user interface (GUI) and/or application program interface (API). Upon joining such a venue, a participant may be required by the venue operator to extend credit to a minimum number of other participants on the venue, and those credit relationships once established may persist until they are modified by either the venue operator, for example by removal of a line because a counterparty to which the participant has extended credit has left the venue, or by the participant, for example because the creditworthiness of a specific counterparty has improved and correspondingly the line extended to that participant can be increased.
- Besides allowing specification of the magnitude of a credit line being extended, conventional electronic trading venues may also allow the specification of various types of lines and groups thereof. A common type of line is a gross limit. In this type of line, the magnitudes of the trades are summed without regard to their direction (buy or sell). For instance, a buy of $1.5 million and sell of $2.5 million would, under a gross limit scheme, draw down $4 million (=1.5 million +2.5 million) of credit from the line. Another common type of line is a net limit. In this type of line, the directions of trades are material in computing their drawdown. Nominally, buys are positive values and sells are negative values, so in the previous example the drawdown would be -$1 million (=1.5 million-2.5 million). To allow summation in spot FX, magnitudes of the trades may be expressed in a currency of the participant’s choosing using a conversion rate; lines a participant extends may also be expressed in that same currency.
- Conventional electronic trading venues may also allow participants to specify arbitrary groupings of credit lines they have extended that may or may not co-exist or even “overlap” with those ungrouped lines they have also extended. A non-limiting example that will ultimately serve to illustrate complications arising from this is provided as follows: a participant extends a single gross line to a group of counterparties all domiciled in a certain country, and further extends individual gross lines to each such counterparty in the country. The combination of these lines may allow the participant to express that they are unwilling to extend more than, for example, $100 million credit in the aggregate to all counterparties in that country. However, the sum of the individual lines extended across all such participants may actually exceed that $100 million. For example, say there are five distinct participants each extended between $30 million and $50 million each. Since, conventionally, among a plurality of credit lines extended to a counterparty it is the lowest line that is controlling, a setup like the one described can advantageously allow a participant to express their credit risk in terms of both a country and of individual counterparties domiciled there advantageously without, for example, continuously having to “rebalance” limits on the venue as trades draw them down.
- Conventionally on FX venues, arbitrary grouping of credit lines on attributes in addition to counterparties may also exist, such as: currency, instrument, tenor, type and so on. These too may also co-exist and/or overlap, and given that it is the lowest line among all those extended to a counterparty that is the controlling one, other groupings may be used to similar effect. For example, Continuous Linked Settlement (CLS)-eligible currencies may be grouped together, or prime brokerage clients belonging to a single prime broker may be grouped together for the extension of shared credit among them to venue counterparties, while simultaneously imposing individual net limits on each such prime brokerage client.
- Having described the specification of credit lines on a conventional electronic trading venue, attention is now given to how such a venue makes use of those lines to form trades between participants. Typically, such a venue will also include a credit checking component. In an example of the present disclosure involving a deterministic credit system, only one such component is necessary, while conventional venues may include a plurality of such horizontally-scaled components and certain parts of their functionality may even exist as subcomponents within matching engine components. Regardless of how the credit check component(s) manifest however, conventionally they receive credit line information from the venue’s credit admin component. Also conventionally, trades between participants are partially-formed on the venue in the matching engine component, for example, based on price-compatibility, and these partially formed trades are sent to the credit check component to either be (i) completed as a result of a successful credit check, or (ii) unwound as a result of a failed credit check. Pertinent aspects of this workflow are illustrated in
FIG. 1 . -
FIG. 1 illustrates an example of acomputer system 100 of anelectronic trading venue 110 for performing credit administration and checking workflow among key venue components, according to examples of the present disclosure. In the examples described herein, the various components are referred to as engines that may represent separate programs for performing distinct tasks within thecomputer system 100. The exampleelectronic trading venue 110 may include acredit admin engine 120, acredit checking engine 130, and amatching engine 140. Theelectronic trading venue 110 may also include one ormore order gateways 150 and one or moremarket data distributors 160. Theorder gateways 150 may be programmed to carry out instructions provided by a market participant during a trading session, such as buy or sell orders. Themarket data distributors 160 may be programmed to provide market data during a trading session. - The
credit admin engine 120 may provide an interface to a plurality of market participants, such as market participants 101A, 101B... 101N. Thecredit admin engine 120 may provide the interface to create credit lines for each market participant 101A... 101N initially, in order to allow participation in theelectronic trading venue 110. Later, thecredit admin engine 120 may provide the interface to modify any of the credit lines for the market participants 101A... 101N. - To establish the credit lines, the
credit admin engine 120 may send the credit line information to thecredit checking engine 130. Thecredit checking engine 130 may perform crediting checking using partially-formed trades against the credit lines. The partially-formed trades may be obtained by thecredit checking engine 130 from thematching engine 140. Thecredit checking engine 130 may also be programmed to transmit completed trades and any unwound trades to thematching engine 140. - In an example of a deterministic credit system of the present disclosure, at the start of, or immediately prior to, the electronic trading venue’s 110 trading session, all credit line information may be transferred from the
credit admin engine 120 to thecredit checking engine 130. Each such line may be transferred over a network connection, such as TCP/IP, as a single record containing: a unique identifier for the line, the counterparty extending the credit, the counterparty to which credit is being extended, the type of the limit as an enumeration, and the magnitude of the limit as a numeric value, as some examples. Upon receipt of all those credit line records and before theelectronic trading venue 110 begins conducting the trading session, thecredit checking engine 130 may then efficiently store them in memory, utilizing the following techniques: - 1. Prune records where bilateral credit does not exist. A successful trade requires that both counterparties have extended credit to one another. Since conventionally a counterparty only knows those to whom they have extended credit, and not those that have extended them credit, it is possible “one-sided” lines exist. These one-sided lines can be “pruned” in the sense that they may be removed from memory or otherwise ignored by the
credit checking engine 130 because they can never result in trades. Such pruning can reduce the size of the data structure in which the records are stored and thus may advantageously improve performance by reducing lookup times thereon. - 2. Create a single key for each distinct pair of counterparties. To further improve lookup times on the data structure in which credit lines are stored, each distinct pair of counterparties can be assigned a unique key. For example, in the case that there are less than 232 distinct counterparties on the venue and where the computer architecture uses 64-bit words, each counterparty can be assigned a unique 32-bit integer identifier. The assignment of such an integer may be done by the venue operator and its lookup and insertion into a message received from a market participant may be performed by an
order gateway 150. A single key for each distinct pair of counterparties can then be generated by concatenating the bitstrings of the two counterparty’s integers, nominally using the smaller integer as the left and larger as the right in that concatenation, as one example. In one example implementation, as integer operations, this concatenation may be expressed as a cast of the smaller 32-bit integer to a 64-bit integer, a shift left on it by 32 bits, and finally by adding to it or bitwise boolean OR’ing it with the second integer. - 3. Merge congruent records where bilateral credit lines exist. Certain types of credit lines among a pair of counterparties are “congruent” when they can be merged into a single record with a single limit, which is the lesser of the two limits among the two being merged. For example, if counterparty A extends B net credit of $10 million in a single credit line, and counterparty B extends A net credit of $8 million in another single credit line, then the smaller of the two limits is controlling and this can be precomputed and stored in a single record upon receipt of the credit lines. In this way, such precomputation can reduce the time taken to perform the credit check and drawdown because instead of comparing the partially formed trade to both limits, only one such comparison operation (and drawdown operation) is necessary. The precomputation may be performed at the start of the trading session after all credit lines have been received.
- 4. Aliasing of credit limits as values in the data structure. Aliasing may refer to a computer programming term where two or more references to the same object exist in a computer program’s object graph. Noting that some credit lines involve groups of counterparties, rather than creating a new object for each such counterparty in the group such that multiple duplicate objects would be brought into existence, a single object representing the credit line can be created and shared by all affected counterparties. For example, if the data structure in which the
credit checking engine 130 storing credit lines is a hashmap, the keys of which are pairs of counterparties stored as 64-bit integers and each value of which is a set of credit lines, then aliasing can ensure the same credit line object appears in multiple such sets. In this way, this aliasing may improve performance by reducing the number of lookup operations on the hashmap and correspondingly the number of comparison and drawdown operations when a credit check involves a group limit. -
FIG. 2 shows aflowchart 200 for the creation of in-memory credit lines in exemplary deterministic credit checking, illustrating use of the above techniques. Consistent with the disclosure herein, at 202, thecredit checking engine 130 may receive credit lines from thecredit admin engine 120. At 204, thecredit checking engine 130 may pre-process the records, such as by pruning records where bilateral credit does not exist. In some examples, thecredit checking engine 130 may prune the records before some or all subsequent processing. At 206, theelectronic trading venue 110 may create a single combined-identification key for each pair of participants having bilateral credit lines by concatenating their respective individual identifiers. An example of the identification key may be the 64-bit key for each pair of participants using their respective 32-bit integer identifiers as described above. This may be performed by one or more of theorder gateways 150 that respond to instructions from the participants for choosing their individual identifiers. In other cases, the individual identifiers may be assigned by thecredit admin engine 120 and the concatenation may be performed by thecredit checking engine 130 or thematching engine 140 as some examples. - At 208, the
credit checking engine 130 may merge pairs of congruent unilateral credit line records into a single bilateral credit line record with the lower of the two limits being set as its limit. This is another further optimization to reduce latency and processing power during a trading session. At 210, theelectronic trading venue 110 may populate mapping of credit lines with the combined-identification keys and the set of credit lines involving the pair of the participants as values. The credit lines of the groups of participants may be aliased across these sets. An example of the type of mapping may be the hashmap of credit lines. This may be performed by thecredit checking engine 130 as an example. - For reasons described earlier, it is clear that, even for a single pair of participants, there may exist a plurality of (bilateral) credit lines and that the process of completing or unwinding a partially-formed trade may involve checking a large number of them. It is observed then that the volume of data output from such a computation may far exceed the volume of its (incremental) input. Disadvantageously then, transmitting the output of such a computation over a computer network or from memory to disk for the purposes of auditability, fault-tolerance, recovery and so on may be slow and thus detrimental to venue performance.
- To address at least these issues, in an example of the deterministic credit system of the present disclosure, inputs to the
credit checking engine 130 are sequenced and computations performed thereon are specifically designed to be deterministic. Under these two conditions, the potentially voluminous outputs of computations need not be transmitted over a computer network, or from memory to disk. Instead, for the purposes of auditability, fault-tolerance, recovery and the like, it is sufficient to transmit only the sequenced inputs. Since those inputs will tend to be smaller, performance as judged by latency and throughput, for example, will advantageously be improved on venues implementing deterministic credit checking as described herein. - While the credit lines themselves are likely very voluminous inputs to the process of credit checking, the initial transmission of those lines to the
credit checking engine 130 from thecredit admin engine 120 does not affect venue performance. This is because, as noted earlier, the transmission of the credit lines may occur prior to the beginning of trading session. Further, if a trading session has not commenced, then participants cannot submit orders or receive market data, so the trading session may be unaffected by performance characteristics of the venue during this time. - In certain schemes such as those described in U.S. Provisional Patent 63/233,038 titled “Pipelined Credit Checking,” some of the responsibility for matching of price-compatible contra-orders and for executing advanced order types, such as icebergs, is shifted from the
matching engine 140 into thecredit checking engine 130. Certain aspects of that functionality may require randomization inside thecredit checking engine 130, which ostensibly may seem at odds with the determinism of computations that is required for their inputs to be transmitted rather than their outputs. A technique for achieving pseudo-randomization in this context is thus disclosed. - Pseudo-randomization for deterministic computations. In some examples of the deterministic credit system of the present disclosure, relevant computation only occurs upon receipt of an input message, such as a partially-formed trade. Consequently, randomization is only invoked when an input message is received that includes an action whose computation requires it—and crucially not at any other time. A pseudo-random number generator (PRNG) can thus be utilized that takes as its seed data exclusively derived from the input message, ultimately requiring the use of randomization in its computation. To appear random, the data chosen from the message must be substantially independent of the things in it requiring randomization. If the ordering of the two participants appearing in a partially-formed trade requires randomizing, then the identifiers of those two participants appearing in the input message would not be good candidates for input to a PRNG’s seed.
- Example inputs to the PRNG’s seed may be a unique, monotonically increasing integer trade identifier generated by and inserted into the message by the
matching engine 140, or a monotonically increasing integer message sequence number assigned to the message and generated by an engine of theelectronic trading venue 110 that sequences messages before they are sent to thecredit checking engine 130. If the size of the data desired to be used as a seed from the message exceeds that required by the PRNG, it may be hashed down to an appropriate length (for example, 64 bits) using an off-the-shelf hashing algorithm. - Having described above certain optimizations of the present disclosure before trading sessions are conducted,
FIG. 3 illustrates how one example 300 of the system of the present disclosure can efficiently transmit data between components to provide auditability, fault tolerance, recovery and so on, for transmission of credit-related data between the various engines of theelectronic trading venue 110, during a trading session. InFIG. 3 , a partial view of the electronic trading venue 110-1 is shown. Here, an engine deterministic computation logic is introduced that allows each engine that contains it—in this example, the live credit checking engine 130-1, the backup credit checking engine 130-2, and thecredit admin engine 120—to independently perform the credit checks and drawdowns from the inputs to credit checking. Each of these components may also be populated with its own hashmap data structure of credit lines previously described in the manner previously described. The live credit checking engine 130-1 and the backup credit checking engine 130-2 may be two components within thecredit checking engine 130. Thesequencer 310 introduced inFIG. 3 ensures all such engines receive all the same inputs in the same order. It may do so using a TCP/IP connection over a computer network to each, and by inserting into each message it sends a sequence number. Gaps in that sequence number could be used by the receivers of those messages to indicate a missed message, for example, as in the sequence number scheme of the FIX protocol. - Under normal operation, only the live credit checking engine 130-1 need send completed and unwound trades back to the
matching engine 140, but in a failure scenario the backup credit checking engine 130-2 may provide this function and the backup credit checking engine 130-2 may operate in live-mode for near instantaneous failover. Thematching engine 140 may be programmed to send (initially) unsequenced and partially-formed trades (or a plurality of price-compatible contra orders per U.S. Provisional Patent 63/233,038) to thesequencer 310, and then thesequencer 310 sequences and distributes them to each of thecredit admin engine 120, live credit checking engine 130-1, and backup credit checking engine 130-2. Thecredit admin engine 120 may be programmed to send, to thesequencer 310, unsequenced changes to updated credit lines resulting from a market participant manually editing a credit line, for example, to increase it, remove it, etc., intra-session. Thesequencer 310 may then also sequence and distribute these to each of thecredit admin engine 120, live credit checking engine 130-1, and backup credit checking engine 130-2. Thesequencer 310 may also send other credit changes that may occur intra-session, such as a value date rollover for a particular instrument as updated lines. - The
credit admin engine 120 contains the deterministic computation logic because, among other things, it can provide to participants a contemporaneous view of the credit they have utilized. The credit remaining across a participants lines, of course, is affected by the trades that occur during the trading session and will usually decrease as a result of those trades. Thecredit admin engine 120 may also provide to participants data on trades that have failed due to missing or exhausted credit lines, and this too is calculated as a matter of course by the deterministic computation logic. - Although not illustrated, it should be noted that each
market data distributor 160 illustrated inFIG. 1 may include all or a portion of thedeterministic computation logic 305. For example, eachmarket data distributor 160 may use all or a portion of thedeterministic computation logic 305 to perform credit screening. Such credit screening may be performed in order to ensure that a given market participant receives appropriate market data updates in accordance with their bilateral credit with other market participants. - A
flowchart 400 illustrating selected logic in thecredit checking engine 130 in an example of the invention is provided inFIG. 4 . At 402, a partially formed trade is received. The trade may be only partially formed because an agreement may be made between the maker and taker parties, but still other conditions may need to be met. For example, a credit check may need to be passed that may include ensuring that the partially-formed trade falls within the parameters of the parties’ credit lines, and acceptable boundaries within the trading venue may need to be met. At 404, the key to the hashmap containing the bilateral credit lines is obtained by combining the identifiers for the maker and taker to the partially formed trade into a single key. At 406, the key is then used to look up the credit lines associated with that pair of participants. If no such key or associated lines are found, then at 414, the credit check has failed and a trade-unwind message is sent to thematching engine 140. If, however, at 408 such lines are found, then thecredit checking engine 130 may find the smallest limit among the credit lines and then set the actual trade size to the minimum or lesser of its current size and the smallest credit limit. Then all of the lines associated with the key are drawn down by the minimum of two values: the size of the partially-formed trade and the minimum amount remaining among the associated credit lines. At 410, if then the actual size of the trade is less than the venue’s minimum trade size, then at 416 the credit check fails and the trade is denied. The drawdowns are reversed, and then at 414 a trade-unwind is sent to thematching engine 140. If the actual size meets the minimum trade size, then at 412 the credit check is successful and a completed trade message is sent to the matching engine. -
FIG. 5 illustrates an example of acomputer system 500 that may be implemented by the computer system illustrated inFIGS. 1 and 3 . Thecomputer system 500 may include, among other things, aninterconnect 510, aprocessor 512, a multimedia adapter 514, anetwork interface 516, asystem memory 518, and astorage adapter 520. - The
interconnect 510 may interconnect various subsystems, elements, and/or components of thecomputer system 500. As shown, theinterconnect 510 may be an abstraction that may represent any one or more separate physical buses, point-to-point connections, or both, connected by appropriate bridges, adapters, or controllers. In some examples, theinterconnect 510 may include a system bus, a peripheral component interconnect (PCI) bus or PCI-Express bus, a HyperTransport or industry standard architecture (ISA)) bus, a small computer system interface (SCSI) bus, a universal serial bus (USB), IIC (I2C) bus, or an Institute of Electrical and Electronics Engineers (IEEE) standard 1364 bus, or “firewire,” or other similar interconnection element. - In some examples, the
interconnect 510 may allow data communication between theprocessor 512 andsystem memory 518, which may include read-only memory (ROM) or flash memory (neither shown), random-access memory (RAM), and/or other non-transitory computer readable media (not shown). It should be appreciated that the RAM may be the main memory into which an operating system and various application programs may be loaded. The ROM or flash memory may contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with one or more peripheral components. - The
processor 512 may control operations of thecomputer system 500. In some examples, theprocessor 512 may do so by executing instructions such as software or firmware stored insystem memory 518 or other data via thestorage adapter 520. In some examples, theprocessor 512 may be, or may include, one or more programmable general-purpose or special-purpose microprocessors, digital signal processors (DSPs), programmable controllers, application specific integrated circuits (ASICs), programmable logic device (PLDs), trust platform modules (TPMs), field-programmable gate arrays (FPGAs), other processing circuits, or a combination of these and other devices. - The multimedia adapter 514 may connect to various multimedia elements or peripherals. These may include devices associated with visual (e.g., video card or display), audio (e.g., sound card or speakers), and/or various input/output interfaces (e.g., mouse, keyboard, touchscreen).
- The
network interface 516 may provide thecomputer system 500 with an ability to communicate with a variety of remote devices over a network. Thenetwork interface 516 may include, for example, an Ethernet adapter, a Fibre Channel adapter, and/or other wired- or wireless-enabled adapter. Thenetwork interface 516 may provide a direct or indirect connection from one network element to another, and facilitate communication and between various network elements. - The
storage adapter 520 may connect to a standard computer readable medium for storage and/or retrieval of information, such as a fixed disk drive (internal or external). - Other devices, components, elements, or subsystems (not illustrated) may be connected in a similar manner to the
interconnect 510 or via a network. The network may include any one or more of, for instance, the Internet, an intranet, a PAN (Personal Area Network), a LAN (Local Area Network), a WAN (Wide Area Network), a SAN (Storage Area Network), a MAN (Metropolitan Area Network), a wireless network, a cellular communications network, a Public Switched Telephone Network, and/or other network. - The devices and subsystems can be interconnected in different ways from that shown in
FIG. 5 . Instructions to implement various examples and implementations described herein may be stored in computer-readable storage media such as one or more ofsystem memory 518 or other storage. Instructions to implement the present disclosure may also be received via one or more interfaces and stored in memory. The operating system provided oncomputer system 500 may be MS-DOS®, MS-WINDOWS®, OS/2®, OS X®, IOSO, ANDROID®, UNIX®, Linux®, or another operating system. - In
FIG. 1 , as well as in other Figures, different numbers of entities than those depicted may be used. Furthermore, according to various implementations, the components described herein may be implemented in hardware and/or software that configure hardware. - For simplicity and illustrative purposes, the disclosure included descriptions that may refer to examples. In the description, numerous specific details have been set forth in object to provide a thorough understanding of the present disclosure. It will be readily apparent however, that the disclosure may be practiced without limitation to these specific details. In other instances, some methods and structures have not been described in detail so as not to unnecessarily obscure the present disclosure. In some instances, various method operations may be omitted and the various method operations are not necessarily performed in the object in which they are presented.
- Throughout the disclosure, the term “a” and “an” may be intended to denote at least one of a particular element. As used herein, the term “includes” means includes but not limited to, the term “including” means including but not limited to. The term “based on” means based at least in part on.
- Although described specifically throughout the entirety of the instant disclosure, representative examples of the present disclosure have utility over a wide range of applications, and the above discussion is not intended and should not be construed to be limiting, but is offered as an illustrative discussion of aspects of the disclosure. What has been described and illustrated herein is an example of the disclosure along with some of its variations. The terms, descriptions and figures used herein are set forth by way of illustration only and are not meant as limitations. As such, the disclosure is intended to be defined by the following claims -- and their equivalents -- in which all terms are meant in their broadest reasonable sense unless otherwise indicated.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/886,587 US20230047165A1 (en) | 2021-08-13 | 2022-08-12 | Deterministic credit system |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163233038P | 2021-08-13 | 2021-08-13 | |
US202163237651P | 2021-08-27 | 2021-08-27 | |
US17/886,587 US20230047165A1 (en) | 2021-08-13 | 2022-08-12 | Deterministic credit system |
Publications (1)
Publication Number | Publication Date |
---|---|
US20230047165A1 true US20230047165A1 (en) | 2023-02-16 |
Family
ID=82942549
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/886,676 Pending US20230051532A1 (en) | 2021-08-13 | 2022-08-12 | Pipelined credit checking |
US17/886,587 Pending US20230047165A1 (en) | 2021-08-13 | 2022-08-12 | Deterministic credit system |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/886,676 Pending US20230051532A1 (en) | 2021-08-13 | 2022-08-12 | Pipelined credit checking |
Country Status (3)
Country | Link |
---|---|
US (2) | US20230051532A1 (en) |
GB (2) | GB202403628D0 (en) |
WO (2) | WO2023017477A1 (en) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2417344A (en) * | 2004-08-05 | 2006-02-22 | Ebs Group Ltd | Price improvement in electronic trading systems |
US20060080216A1 (en) * | 2003-06-30 | 2006-04-13 | Andrew Hausman | Counterparty credit limits in computerized trading |
US20070118459A1 (en) * | 2005-11-18 | 2007-05-24 | Bauerschmidt Paul A | System and method for centralized clearing of over the counter foreign exchange instruments |
AU2007297764A1 (en) * | 2006-09-18 | 2008-03-27 | Chicago Mercantile Exchange, Inc. | Limiting counter-party risk in multiple party transactions |
US20110225085A1 (en) * | 2010-03-12 | 2011-09-15 | Ns Solutions Corporation | Information processing apparatus, information processing method, and program product |
US8041985B2 (en) * | 2006-08-11 | 2011-10-18 | Chicago Mercantile Exchange, Inc. | Match server for a financial exchange having fault tolerant operation |
US20130254089A1 (en) * | 2012-03-26 | 2013-09-26 | Tradeweb Markets, Llc | System and method for clearing transactions |
CN106063186A (en) * | 2013-11-08 | 2016-10-26 | 汤森路透环球资源公司 | Fair credit screened market data distribution |
US20160350749A1 (en) * | 2015-05-26 | 2016-12-01 | Medici, Inc. | Obfuscation of intent in transactions using cryptographic techniques |
US20200175179A1 (en) * | 2018-12-04 | 2020-06-04 | Bank Of America Corporation | System for triple format preserving encryption |
US11100577B1 (en) * | 2010-08-20 | 2021-08-24 | Nex Services North America Llc | Anonymous trading system |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110276636A1 (en) * | 2010-03-29 | 2011-11-10 | Konaware, Inc. | Efficient transactional messaging between loosely coupled client and server over multiple intermittent networks with policy based routing |
US8315940B2 (en) * | 2010-04-27 | 2012-11-20 | Omx Technology Ab | System and method for rapidly calculating risk in an electronic trading exchange |
US20130346274A1 (en) * | 2012-06-25 | 2013-12-26 | Liquid Holdings Group, Inc. | Electronic financial trading platform with real-time data analysis and reporting |
US10325317B2 (en) | 2013-11-05 | 2019-06-18 | Refinitiv Us Organization Llc | Ideal latency floor |
US9691102B2 (en) * | 2013-11-07 | 2017-06-27 | Chicago Mercantile Exchange Inc. | Transactionally deterministic high speed financial exchange having improved, efficiency, communication, customization, performance, access, trading opportunities, credit controls, and fault tolerance |
-
2022
- 2022-08-12 WO PCT/IB2022/057544 patent/WO2023017477A1/en unknown
- 2022-08-12 GB GBGB2403628.7A patent/GB202403628D0/en active Pending
- 2022-08-12 US US17/886,676 patent/US20230051532A1/en active Pending
- 2022-08-12 US US17/886,587 patent/US20230047165A1/en active Pending
- 2022-08-12 WO PCT/IB2022/057543 patent/WO2023017476A1/en unknown
- 2022-08-12 GB GBGB2403631.1A patent/GB202403631D0/en active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060080216A1 (en) * | 2003-06-30 | 2006-04-13 | Andrew Hausman | Counterparty credit limits in computerized trading |
GB2417344A (en) * | 2004-08-05 | 2006-02-22 | Ebs Group Ltd | Price improvement in electronic trading systems |
US20070118459A1 (en) * | 2005-11-18 | 2007-05-24 | Bauerschmidt Paul A | System and method for centralized clearing of over the counter foreign exchange instruments |
CA2628944A1 (en) * | 2005-11-18 | 2007-05-31 | Chicago Mercantile Exchange | System and method for centralized clearing of over the counter foreign exchange instruments |
US8041985B2 (en) * | 2006-08-11 | 2011-10-18 | Chicago Mercantile Exchange, Inc. | Match server for a financial exchange having fault tolerant operation |
AU2007297764A1 (en) * | 2006-09-18 | 2008-03-27 | Chicago Mercantile Exchange, Inc. | Limiting counter-party risk in multiple party transactions |
US20110225085A1 (en) * | 2010-03-12 | 2011-09-15 | Ns Solutions Corporation | Information processing apparatus, information processing method, and program product |
US11100577B1 (en) * | 2010-08-20 | 2021-08-24 | Nex Services North America Llc | Anonymous trading system |
US20130254089A1 (en) * | 2012-03-26 | 2013-09-26 | Tradeweb Markets, Llc | System and method for clearing transactions |
CN106063186A (en) * | 2013-11-08 | 2016-10-26 | 汤森路透环球资源公司 | Fair credit screened market data distribution |
US20160350749A1 (en) * | 2015-05-26 | 2016-12-01 | Medici, Inc. | Obfuscation of intent in transactions using cryptographic techniques |
US20200175179A1 (en) * | 2018-12-04 | 2020-06-04 | Bank Of America Corporation | System for triple format preserving encryption |
Also Published As
Publication number | Publication date |
---|---|
GB202403631D0 (en) | 2024-04-24 |
GB202403628D0 (en) | 2024-04-24 |
WO2023017476A1 (en) | 2023-02-16 |
WO2023017477A1 (en) | 2023-02-16 |
US20230051532A1 (en) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11908013B2 (en) | Methods, apparatus, and systems for processing data transactions | |
TW201909613A (en) | Method, device and electronic device for processing consensus request in blockchain consensus network | |
CN108805702B (en) | Transaction buffering/accelerating method based on block chain and block chain transaction processing system | |
CN109951547B (en) | Transaction request parallel processing method, device, equipment and medium | |
US20030041006A1 (en) | Methods and systems for suppression of stale or invalid data in a securities quotation display | |
EP2564365A2 (en) | A system and method for rapidly calculating risk in an electronic trading exchange | |
AU2007336337A1 (en) | System and method for optimizing changes of data sets | |
US20080065751A1 (en) | Method and computer program product for assigning ad-hoc groups | |
TWI706348B (en) | Method and device for detecting fund transaction path in electronic payment process | |
WO2020093736A1 (en) | Blockchain-based data processing method and apparatus, and server | |
CN105184501A (en) | Efficient asynchronous order processing method | |
CN111539683A (en) | Contract signing method, device, equipment and medium | |
US20230047165A1 (en) | Deterministic credit system | |
WO2021068605A1 (en) | Data persistence storage method and apparatus, computer device and storage medium | |
CN112929424A (en) | Gateway load balancing method, device, equipment and storage medium | |
US8005902B2 (en) | System and method for accelerated dynamic data message generation and transmission | |
CN111144977A (en) | Stock order processing method and device | |
CA3049762C (en) | Systems and methods of sequencing or combining multiple related, but different, transaction requests into a single transaction | |
EP3942502A1 (en) | Resource stabilization in a distributed network | |
CN111416852A (en) | Method for session synchronization among multiple load balancers and load balancer | |
US20240144364A1 (en) | Methods, apparatus, and systems for processing data transactions | |
CN109934586B (en) | Electronic transaction method, device, system and medium | |
US20210312550A1 (en) | System and method for low latency multi-market order book consolidation | |
JP6423151B2 (en) | System and method for generating market information | |
JPH1091595A (en) | Transaction management device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: REFINITIV US ORGANIZATION LLC, NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:REFINITIV US LLC;REEL/FRAME:060930/0692 Effective date: 20220307 Owner name: REFINITIV US LLC, VIRGINIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MELTON, HAYDEN;REEL/FRAME:060930/0633 Effective date: 20210813 Owner name: REFINITIV US LLC, NEW YORK Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MELTON, HAYDEN;REEL/FRAME:060930/0483 Effective date: 20210827 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |