Volatility-Auction Reopening
Install and import#
npm install fintech-algorithmsimport { volatilityAuctionReopening } from "fintech-algorithms/matching-engines-and-venue-logic/auctions/volatility-auction-reopening";Signature#
volatilityAuctionReopening(inputs)Decides, from an already-determined corridor state, whether continuous trading carries on, the auction has no executable quantity, the indicative price may reopen the book, or the auction must be extended. The dynamic and static corridors are both built from a reference and a band percentage, and the reopening test uses each corridor widened by the extension multiplier. The algorithm does not build a book or discover a price; the indicative price and executable quantity are supplied.
Parameters#
| Name | Type | Notes |
|---|---|---|
inputs | { reference_price, dynamic_reference, dynamic_band_pct, static_reference, static_band_pct, potential_continuous_price, indicative_auction_price, extended_band_multiplier, executable_quantity } | Nine scalars. The first eight must be finite and positive; extended_band_multiplier must be at least one and executable_quantity must be finite and nonnegative. No order arrays are taken. |
Returns#
{ model, reference_price, potential_continuous_price, dynamic_corridor, static_corridor, dynamic_breach, static_breach, triggered, indicative_auction_price, executable_quantity, expanded_dynamic_corridor, expanded_static_corridor, inside_reopening_corridor, reopened, reopen_price, reason, state }
Both active corridors and both expanded corridors as [low, high] pairs, the per-corridor breach flags and their disjunction, whether the indicative price sits inside both expanded corridors, and a state of continuous, auction-no-cross, reopened or extended-volatility-auction with the reason that produced it. reopen_price is the indicative price when the state is reopened and null otherwise.
Errors#
- When inputs is not an object — throws
- When any scalar is missing, non-numeric or non-finite — throws
- When a price, reference or band percentage is not positive — throws
- When extended_band_multiplier is below one — throws
- When executable_quantity is negative — throws
Complexity: time O(1),
space O(1).
Worked example#
executed Captured by running this function on the input its own test provides. Real output of real code — but not asserted against a published figure.
Input#
{
"reference_price": 100,
"dynamic_reference": 100,
"dynamic_band_pct": 0.02,
"static_reference": 98,
"static_band_pct": 0.05,
"potential_continuous_price": 103,
"indicative_auction_price": 101.5,
"extended_band_multiplier": 2,
"executable_quantity": 500
}Call#
volatilityAuctionReopening(inputs)Returns#
object with 17 fields: model, reference_price, potential_continuous_price, dynamic_corridor, static_corridor, dynamic_breach, static_breach, triggered, …
{
"model": "dual-corridor-volatility-auction-reopening",
"reference_price": 100,
"potential_continuous_price": 103,
"dynamic_corridor": [98, 102],
"static_corridor": [93.1, 102.9],
"dynamic_breach": true,
"static_breach": true,
"triggered": true,
"indicative_auction_price": 101.5,
"executable_quantity": 500,
"expanded_dynamic_corridor": [96, 104],
"expanded_static_corridor": [88.2, 107.80000000000001],
"inside_reopening_corridor": true,
"reopened": true
}Showing 14 of 17 fields.
Other exports#
This module also exports
maximumExecutableVolumeAuction, minimumImbalanceTieBreak, openingCrossPrice, closingCrossPrice, calculate. Every module additionally exports run as an alias of its
primary function, and a meta object carrying its catalog id, domain, family,
shape and article URL.
Diagrams#
Calculation flow#
Volatility-Auction Reopening calculation flow
flowchart LR
S1["Validate references percentages multiplier and quantit"]
S2["Test potential price against both active corridors"]
S3["Enter volatilityauction state on either strict breach"]
S4["Test indicative price against both expanded corridors"]
S5["Reopen remain nocross or extend with a reason"]
S1 --> S2
S2 --> S3
S3 --> S4
S4 --> S5
S5 --> D{"endpoint equality nocross and onecorridoronly failure"}
D --> O["reopened + diagnostics"]
O --> A["Audit: Equality at any corridor endpoint is inside"]
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- T7 Release 14.0 Functional Reference, Version 3 — Deutsche Börse Group
- Market Model for the Trading Venue Xetra, T7 Release 14.0 — Deutsche Börse Cash Market
- Introduction of T7 Release 14.1 — Deutsche Börse Cash Market
- T7 Trading Parameters: Implied Reference Price and ACE Parameter Classes — Deutsche Börse Cash Market
- Evidence boundary