Options Pricing
The Metro Store Front’s ready-made applications for options pricing include the Dynamic Skew App, Advanced Order App, Price Alert, Trade Alert, Underlying Offset Controller, and the Volatility Fitting App.
Dynamic Skew App
The Dynamic Skew App (DSA) is a cutting-edge algorithm for Vela’s Metro platform that automates the demanding task of calibrating and maintaining vol curves. With a robust and quantitative pipeline, this tool puts trading back in the driver’s seat. The options trader or market maker need no longer worry about the validity of perceived edge, allowing quick and confident execution decisions. Feedback from traders using the algo suggests that it is positively game-changing and has quickly become an irreplaceable component.
Robust market data handling and modeling logic allow the algo to perform well during all market conditions, and with much less latency risk than in a manual curve update process. The DSA exposes fleeting vol trading opportunities that previously could not be realized.
The algo supports the popular Flexible Spline type vol curves in Metro. User-defined settings allow complete control over market data filtering, graphical curve smoothness, time evolution of the curve, and a variety of risk controls. Three available modes for wing treatment include auto-sloping, tabletopping, and/or user-defined fixed slopes. The algo can identify liquidity crises in realtime and gracefully accomodates degradation in implied vol (IV) information. A detailed report grid supplies the trader with useful vol trading data, allowing better identification of potential opportunities. The algo also supports “multi-skew risk” functionality by allowing trade and portfolio syncing in conjunction with an artificial symbol for the options. For example, this can allow the trader to execute on realtime, fixed skew, Black-Scholes greeks, while simultaneously enjoying the risk management benefits from having the inventory risk analyzed on a floating skew with adjusted greeks and a vol path assumption. The multiple skews may also be different curve types.
Please contact the developer at kevin@axonetric.com with any questions you might have regarding technicalities, client use cases, etc.
Configuration Options
All of the variables below can be configured or modified at runtime. This gives users the power to modify their job behavior throughout the day without having to make code changes.
Name | Type | Default | Description |
---|---|---|---|
options | instruments | the options expiration to model | |
curve_update_sensitivity | double | 3.0 | the sigma threshold (0.0 – 10.0) to trigger a vol curve publish |
temporal_smoothing | double | 3.0 | curve evolution smoothness: 0.0 (none) – 10.0 (most) |
spline_smoothing | double | 5.0 | spline smoothing strength: 0.0 (none) – 10.0 (most) |
kernel_smoothing | int | 2 | kernel smoothing strength: 0 (none) – 15 (most) |
option_min_size | int | 1 | the minimum aggregate size for a valid price level near ATM |
option_max_spread_width | int | 20 | the max. spread width in ticks for a valid market near ATM |
underlying_min_size | int | 1 | the minimum aggregate size for a valid price level |
model_detail | int | 1 | spline model detail affects CPU usage: 0=Low, 1=Normal, 2=High |
PUT_TBLTOP | boolean | false | do put wing tabletopping (instead of auto-sloping) |
CALL_TBLTOP | boolean | false | do call wing tabletopping (instead of auto-sloping) |
RESET | boolean | false | clear reconstructor and any other saved values in DB |
REQTRD | boolean | false | require at least one futures or options trade before first vol curve publish |
CONVEXITY | boolean | false | enforce vol curve convexity prerequisite |
EXTREME_VOL | boolean | false | enable alternative processing for extreme volatility conditions |
copy_trades | string | sync using format: FromRealSymbol -> ToArtificialSymbol | |
SYNCCURVE | boolean | false | also periodically sync the vol curve of the copy trade’s artificial symbol |
verbosity | int | 1 | log detail level: 0=Minimal, 1=Basic, 2=Full, 3=Debug |
curve_publish_cutoff_time | string | in server time zone (PM); e.g. 3:30 | |
iv_upper_limit | double | 0.0 | the maximum allowed IV anywhere on the curve (0=disabled) |
control_pt_vals | string | optional comma-separated list of control point X-axis values | |
fs_wing_slopes | string | put wing slope, call wing slope (optional overrides for Flexible Spline) | |
on_job_exit | int | 1 | 0=Do nothing, 1=Abort options expiration, 2=Abort whole options symbol |
special_flags | string | KEOD=keep EOD pattern through evening, INIT=user-defined pattern, REQOTRD=require an options trade before first publish, UVPCPO=update vol path’s center point only, CTMAN=copy trades for manual trades also |
Screenshots
Remember that in Metro NOW, dashboards and widgets can be utilized in both OnRamp and Metro clients.
Additional Materials
Underlying Offset Controller 2
Like the Initial Underlying Offset Controller, the Underlying Offset Controller 2 allows the user to increase Metro’s functionality with regard to offsets. Users can set up expiry or root future for each option month and easily set the corresponding future month’s offset based on future settlements, implied prices or listed spreads.
What’s new in this this version:
- The implied offset can be calculated and displayed for all option expires in Metro.
- The offsets can be updated automatically as the implied offset changes.
- The first Underlying Offset Controller did not have the ability to manage offset for multiple exchange symbols with a common underlying. This was problematic in regards to weekly, daily, and end-of month futures.
Relevant examples include weekly and monthly gold options (OG, OG1, OG2, etc.) all priced off of Gold (GC) futures and daily S&P index options (E1A, E1C, EW1, E2A, E2C, EW2, etc.) all linked to the E-Mini (ES) future.
Note that this widget is not meant to replace Trade Sheets or Metro Product portfolio settings, but instead extend its functionality.
Advanced Order App
The Advanced Order App allows futures and options traders to place complex orders that cannot be done using just exchange-supported logic. Users can place limit or market orders as well as place contingent stop loss orders at a user-determined number of ticks behind the executed price of that order.
The app has been popular with Metro customers since it launched as it allows for futures orders to be submitted based on triggers such as last trade or mid-market price. The Vela development team has incorporated customer feedback and rolled out a newer version of the app which now allows for Algo-driven orders such as TWAP (Time Weighted Average Price) orders. These orders allow the trader to set time frames for submitting orders, including time between orders and randomizing the quantity for each order. In addition, traders can now extend orders beyond close of day and keep orders active for multiple days.
The Advanced Order App also allows for user-defined class settings such as price factors for each product for additional customization. The app allows for quick in-line editing of orders within the order viewer so orders can be updated rapidly once placed. Our development team continues to improve the app and will be adding VWAP (Volume Weighted Average Price) orders in the near future.
Screenshots
Additional Materials
Auto-RFQ
To guarantee the absolute reliability of data, the ticker plants that power Vela’s Market
The “Auto-RFQ” job allows the user to configure rules to automatically respond to strategy RFQs in precise, predetermined ways. The job allows the user to customize their strategy quotes by strategy type, maturity, delta range, max strike width, max strategy legs, max contract legs, and a user-defined priority level. The algo supports an unlimited number of delta buckets for the response quote settings (bid/ask quantities and edges). Intelligent joining rules include “Never Top Alone” (avoid being the only top-of-book bid or ask), “Tighten Book Gaps” (avoid being more than 1 tick off the existing top-of-book), and a configurable initial delay (allow other market participants to create a market before you join). Each RFQ response can also be assigned a variable timeout. Specifications are conveniently organized and edited through a grid control.
Any strategy RFQ that cannot be matched to one of the grid row specifications will be sent immediately back to Metro and will be handled based on Metro’s settings. Once a quote has been sent by the “Auto-RFQ” job, any further market updates are handled by Metro until either the user refreshes quotes (to reset strategies back to their default settings) or turns the “Auto-RFQ” job off and back on. If the job is running concurrently with the “Active Volatility Manager” job (see above), the user can choose to pull quotes and stop the “Auto-RFQ” job in the event of a breach of any of the security parameters monitored by the “Active Volatility Manager”.
Supported option strategy types include: Condor, Butterfly, Calendar Diagonal, Iron Butterfly, Strangle, Straddle, Risk Reversal, Iron Condor, 3-Way, Calendar Horizontal, Horizontal Straddle, Vertical, Xmas Tree, Generic, Double, Ratio 1×2, Ratio 2×3, Covered, and Outright.
Please contact the developer at kevin@axonetric.com with any questions you might have regarding technicalities, client use cases, etc.
Configuration Options
All of the variables below can be configured or modified at runtime. This gives users the power to modify their job behavior throughout the day without having to make code changes.
Name | Type | Default | Description |
---|---|---|---|
instruments | instruments | all instruments on which to listen | |
default_timeout | int | 15 | the default RFQ timeout (seconds) |
verbosity | int | 2 | logging level: 0=minimal, 1=basic, 2=detailed, 3=extended |
grid_name | string | main grid will be named “RFQ_Main_[grid_name]” | |
specialFlags | string | optional; CLDB=Clear grids db, FS=fast startup | |
checkVolBeforeResponse | int | 1 | 0=No, 1=Yes |
tightenBookGapsEdgeFloor | double | 0.0 | min allowed edge (in ticks) after ‘Tighten Book Gaps’ rule |
excludeInstrsWithText | string | optional comma-delimited list of search strings to exclude (case-sensitive) | |
reqTextForInstrInclude | string | optional comma-delimited list of search strings to require, per-leg, for instrument inclusion (case-sensitive) | |
reqCoveringFutureInSameMonths | int | 0 | 0=No, 1=Yes |
onFillRollingWindowInSecs | int | 0 | 0=disabled, 1-600=window length in seconds |
onFillRollingWindowQtyTrigger | int | 0 | 0=disabled, 1+ = abs cumulative qty to trigger timeout |
onFillTimeoutInMins | int | 0 | 0=disabled, 1-360=instrument timeout in minutes |
skipDelayIfMaxSpreadWidthInTicks | int | 0 | 0=whole skipDelay feature disabled, 1-50=max allowed spread width (ticks) |
skipDelayIfMinSpreadSize | int | 0 | 0=whole skipDelay feature disabled, 1+ = min required qty on bid and ask |
skipDelayForRFQOnTrades | int | 1 | 0=No, 1=Yes |
edgeValuesUnits | int | 1 | 1=In ticks, 2=In decimal price |
crossedMktProtection | int | 0 | 0=Off, 1=One-sided response, 2=Skip response |
Screenshots
Remember that in Metro NOW, dashboards and widgets can be utilized in both OnRamp and Metro clients.
Additional Materials
Price Alert
The Price Alert widget notifies users if a selected instrument reaches or passes an inputted target price. The widget is intended primarily for brokers, as well as traders that are dealing with broker markets.
With Price Alert, users can work on other tasks but still be notified if an instrument of interest reaches a designated target price. Once they receive an alert, users can then contact a client for guidance, manually place a relevant order, or otherwise take appropriate action.
Note that this widget cannot place trades based on the alerts. All trades must be completed manually by the user.
Video
Play the video below to see the widget or algo in action. Metro NOW gives widgets the ability to work in a similar behavior across several asset classes or exchanges. This keeps usability consistent and promotes high application stability.
Screenshots
Additional Materials
Trade Alert
The Trade Alert Widget provides users with a convenient way to be notified whenever an order has been booked. The widget gives the user the ability to enable/disable these alerts at any time. The alerts themselves pop-up in the center of the trader’s screen with relevant info such as the filled quantity, delta and total delta. Users can also cancel partial fills right from the alert. As part of the first release, alerts for manual trades and quotes are ignored.
Video
Play the video below to see the widget or algo in action. Metro NOW gives widgets the ability to work in a similar behavior across several asset classes or exchanges. This keeps usability consistent and promotes high application stability.
Screenshots
Remember that in Metro NOW, dashboards and widgets can be utilized in both OnRamp and Metro clients.
Additional Materials
Underlying Offset Controller (Classic)
The Underlying Offset Controller (Classic) allows the user to increase Metro’s functionality with regard to offsets. The widget allows users to setup the expiry or root future for each option month and easily set the corresponding future month’s offset based on future settlements, implied prices or listed spreads. Additionally users have the ability to easily override the offset value before publishing.
This provides the user with a centralized application to configure and update offsets for all their products rather than having to adjust offsets manually in the model settings of Trade Sheets.
Note that this widget is not meant to replace Trade Sheets or Metro Product portfolio settings, but instead extend its functionality.
Screenshots
Remember that in Metro NOW, dashboards and widgets can be utilized in both OnRamp and Metro clients.
Additional Materials
Volatility Fitting App
The Volatility Fitting App allows for automated management of volatility curves across various products and instrument months. The job does this by creating Assigned Volatility curves that fit to mid-market, effectively handling outliers and missing market data on a timer to ensure that the fitted curve is fairly smooth and within market implied vols. The job can be configured to fit on a subset of expirations on one or more symbols with various options for fitting the wings.
Video
Play the video below to see the widget or algo in action. Metro NOW gives widgets the ability to work in a similar behavior across several asset classes or exchanges. This keeps usability consistent and promotes high application stability.
Configuration Options
All of the variables below can be configured or modified at runtime. This gives users the power to modify their job behavior throughout the day without having to make code changes.
Name | Type | Default | Description |
---|---|---|---|
Timer | int | 1000 | Interval, in milliseconds at which the job should generate volatility curves. |
autostart | boolean | false | If checked, the job will start when the OC Metro server starts. |
testmode | boolean | false | If checked, the job will determine fitted skews, but not publish them. |
debugmode | boolean | false | If checked, the job will produce extra, detailed logging. |
Symbols | String | Empty String | A comma-delimited list of symbols (products) for which the job will generate volatility curves. |
Days Until Exp Range | String | Empty String | An expression of the form ‘int – int’ specifying a range where the first int is the minimum of the range and the second int is the maximum of the range. The range specifies the min number of days until expiration and max number of days until expiration an instrument month must fall into in order to be fitted by the job. If left blank all instrument months of the desired symbol will be fitted. |
Start Time | String | Empty String | An expression of the form ‘hh:mm’, specifying the time in CST after which the job can fit. |
End Time | String | Empty String | An expression of the form ‘hh:mm’, specifying the time in CST after which the job cannot fit. |
Sparse Min Data Threshold | double | 100.0 | The percentage of strikes required to have missing data before the job employs an alternative fit strategy. |
One-Shot Fit | boolean | false | If checked, the job shall generate only one set of volatility curves and cease execution. |
Put Wing Cut-off Delta | double | 5.0 | The cutoff point of the put wing, specified in model-specific deltas. If set to 0, put wing cutoff will be automatically determined |
Call Wing Cut-off Delta | double | 5.0 | The cutoff point of the call wing, specified in model-specific deltas. If set to 0, call wing cutoff will be automatically determined |
Put Wing Slope | double | 0.0 | The slope (in vol/strike) of the put wing |
Call Wing Slope | double | 0.0 | The slope (in vol/strike) of the call wing |
Autodetermine Wing Slope | boolean | false | If checked, previously configured slopes will be ignored and instead the wing slopes will be autodetermined |
Additional Materials
Related Resources
Exegy Expands Ultra-Low Latency, Tick-to-Trade Support to Include All Canadian Equities Exchanges
St. Louis, New York – 21 November 2024 – Exegy, the leading trading technology provider across the latency spectrum, announces the expansion of market data and execution coverage for…
Exegy Wins Buy-Side Award for Record Breaking FPGA Solution
St. Louis, New York – 7 November 2024 – Exegy, a leading provider of market data and trading technology for the capital markets, is pleased to announce that nxFramework,…
Cloud, AI and Regulations: The Topics on Everyone’s Minds at WFIC 2024
Last month, Exegy joined the 600+ industry professionals attending the World Financial Information Conference (WFIC) in Austin, Texas. During the event, our team members had the opportunity to explore the…