Vega-Direction Examples
Edge-based Vega Responder
- SRSE
- MLink
INSERT INTO srtrade.msgautorespondervegadir (accnt, clientFirm, ekey_at, ekey_ts, ekey_tk, ekey_yr, ekey_mn, ekey_dy, respSide, responderID, username, isDisabled, enabledUntil,
canIncludeStock, cpFlag, minXDelta, maxXDelta, minStrike, maxStrike, minSurfEdgeVol, minProbability, minSurfEdgePrem, maxResponseSize, maxResponseVega, totalResponseVega,
totalResponseSize, incFeesInResp, canRespondSR, canRespondExch)
VALUES ('T.ACCNT', 'CFIRM', 'EQT', 'NMS', 'AAL', 2026, 4, 17, 'Sell', 3014526, 'user.name', 'No', '1900-01-01 00:00:00.000000', 'Yes', 'Pair', -99, 99, 0, 1000, -1, -2, 0.01,
50, 5000000, 5000000, 500, 'Yes', 'Yes', 'Yes');
import requests
import pandas as pd
import json
from datetime import datetime
from IPython.display import display
rest_url = "https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json"
authentication_key = ""
order_payload = {
"header": {
"mTyp": "AutoResponderVegaDir"
},
"message": {
"pkey": {
"accnt": "T.ACCNT",
"clientFirm": "CFIRM",
"ekey": {
"at": "EQT",
"ts": "NMS",
"tk": "AAPL",
"dt": "2026-02-20"
},
"respSide": "Sell",
"responderID": 3014526
},
"userName": "user.name",
"isDisabled": "No",
"enabledUntil": "2100-01-01 06:00:00.000000",
"canIncludeStock": "Yes",
"cpFlag": "Pair",
"minXDelta": -99,
"maxXDelta": 99,
"minStrike": 0,
"maxStrike": 90,
"minSurfEdgeVol": -1,
"minProbability": -2,
"minSurfEdgePrem": 0.00,
"maxResponseSize": 50,
"maxResponseVega": 5000000,
"totalResponseVega": 5000000,
"totalResponseWtVega": 5000000,
"totalResponseSize": 500,
"incFeesInResp": "Yes",
"canRespondSR": "Yes",
"canRespondExch": "Yes"
}
}
def submit_order():
try:
headers = {
"Authorization": f"Bearer {authentication_key}",
"Content-Type": "application/json"
}
# Use postmsgs command with required parameters only
params = {
"cmd": "postmsgs",
"postaction": "I",
"postmerge":"Y"# (I)nsert - required parameter
}
response = requests.post(rest_url, headers=headers, params=params, json=[order_payload])
response.raise_for_status()
print("Gateway response:", response.json())
except requests.RequestException as e:
print("Submission failed:", e)
if hasattr(e, 'response') and e.response is not None:
print("Response status:", e.response.status_code)
print("Response text:", e.response.text)
if __name__ == "__main__":
submit_order()
Vol Surface-based Responder
- SRSE
- MLink
INSERT INTO srtrade.msgautorespondervegadir (accnt, clientFirm, ekey_at, ekey_ts, ekey_tk, ekey_yr, ekey_mn, ekey_dy, respSide, responderID, username, isDisabled, enabledUntil,
canIncludeStock, cpFlag, minXDelta, maxXDelta, minStrike, maxStrike, clientVolSurface,atmVol,minSurfEdgeVol, minProbability, maxResponseSize, maxResponseVega,
totalResponseVega,totalResponseSize, incFeesInResp, canRespondSR, canRespondExch)
VALUES ('T.ACCNT', 'CFIRM', 'EQT', 'NMS', 'AAL', 2026, 4, 17, 'Sell', 3016463, 'user.name', 'No', '1900-01-01 00:00:00.000000', 'Yes', 'Pair', -99, 99, 0, 1000, 'AtmVolPinned',0.3972,
-1, -2, 50, 5000000, 5000000, 500, 'Yes', 'Yes', 'Yes');
import requests
import pandas as pd
import json
from datetime import datetime
from IPython.display import display
rest_url = "https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json"
authentication_key = ""
order_payload = {
"header": {
"mTyp": "AutoResponderVegaDir"
},
"message": {
"pkey": {
"accnt": "T.ACCNT",
"clientFirm": "CFIRM",
"ekey": {
"at": "EQT",
"ts": "NMS",
"tk": "CAKE",
"dt": "2026-07-17"
},
"respSide": "Sell",
"responderID": 8675309
},
"userName": "user.name",
"isDisabled": "No",
"enabledUntil": "2100-01-01 06:00:00.000000",
"canIncludeStock": "Yes",
"cpFlag": "Pair",
"clientVolSurface": "AtmVolPinned",
"atmVol": 0.3972,
"minXDelta": -0.90,
"maxXDelta": 0.90,
"minSurfEdgeVol": 0.01,
"minProbability": 0.50,
"maxResponseSize": 10000,
"maxResponseVega": 4000000,
"totalResponseVega": 10000,
"totalResponseWtVega": 50000000,
"totalResponseSize": 20000,
"incFeesInResp": "Yes"
}
}
def submit_order():
try:
headers = {
"Authorization": f"Bearer {authentication_key}",
"Content-Type": "application/json"
}
# Use postmsgs command with required parameters only
params = {
"cmd": "postmsgs",
"postaction": "I",
"postmerge":"Y"# (I)nsert - required parameter
}
response = requests.post(rest_url, headers=headers, params=params, json=[order_payload])
response.raise_for_status()
print("Gateway response:", response.json())
except requests.RequestException as e:
print("Submission failed:", e)
if hasattr(e, 'response') and e.response is not None:
print("Response status:", e.response.status_code)
print("Response text:", e.response.text)
if __name__ == "__main__":
submit_order()
Vol Calibrated
- SRSE
- MLink
INSERT INTO msgautorespondervegadir (accnt, clientFirm, ekey_at, ekey_ts, ekey_tk, ekey_yr, ekey_mn, ekey_dy, respSide, responderID, username, isDisabled, enabledUntil,
canIncludeStock, cpFlag, minXDelta, maxXDelta, minStrike, maxStrike, clientVolSurface, minSurfEdgeVol, minProbability, maxResponseSize, maxResponseVega,
totalResponseVega,totalResponseSize, incFeesInResp, canRespondSR, canRespondExch, CalibrationList)
VALUES ('T.ACCNT', 'CFIRM', 'EQT', 'NMS', 'AAL', 2026, 4, 17, 'Sell', 3011425, 'user.name', 'No', '1900-01-01 00:00:00.000000', 'Yes', 'Pair', -99, 99, 0, 1000, 'VolCalibrated',
-1, -2, 50, 5000000, 5000000, 500, 'Yes', 'Yes', 'Yes','[{"cValue":0.47648,"moneyness":0.13146},{"cValue":0.50054,"moneyness":-0.50037},{"cValue":0.4665,"moneyness":0.48586}]');
import requests
import pandas as pd
import json
from datetime import datetime
from IPython.display import display
rest_url = "https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json"
authentication_key = ""
order_payload = {
"header": {
"mTyp": "AutoResponderVegaDir"
},
"message": {
"pkey": {
"accnt": "T.ACCNT",
"clientFirm": "CFIRM",
"ekey": {
"at": "EQT",
"ts": "NMS",
"tk": "AAL",
"dt": "2026-06-18"
},
"respSide": "Buy",
"responderID": 10480
},
"userName": "user.name",
"isDisabled": "No",
"enabledUntil": "2100-01-01 06:00:00.000000",
"canIncludeStock": "Yes",
"cpFlag": "Pair",
"minXDelta": -0.9,
"maxXDelta": 0.9,
"maxStrike": 999999,
"clientVolSurface": "VolCalibrated",
"minSurfEdgeVol": -1,
"minSurfEdgePrem": -99,
"minProbability": -2,
"incFeesInResp": "Yes",
"maxResponseSize": 1000,
"maxResponseVega": 4000000,
"totalResponseSize": 20000,
"totalResponseVega": 10000,
"minUPrc": 1,
"maxUPrc": 99999,
"modifiedBy": "matt.leli",
"Calibration": [
{
"cValue": 0.47648,
"moneyness": 0.13146
},
{
"cValue": 0.50054,
"moneyness": -0.50037
},
{
"cValue": 0.4665,
"moneyness": 0.48586
}
]
}
}
def submit_order():
try:
headers = {
"Authorization": f"Bearer {authentication_key}",
"Content-Type": "application/json"
}
# Use postmsgs command with required parameters only
params = {
"cmd": "postmsgs",
"postaction": "I",
"postmerge":"Y"# (I)nsert - required parameter
}
response = requests.post(rest_url, headers=headers, params=params, json=[order_payload])
response.raise_for_status()
print("Gateway response:", response.json())
except requests.RequestException as e:
print("Submission failed:", e)
if hasattr(e, 'response') and e.response is not None:
print("Response status:", e.response.status_code)
print("Response text:", e.response.text)
if __name__ == "__main__":
submit_order()
Checking Flash Responder Activity
- MLink
#MLINK URL
MLINK_PROD_URL = 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json'
#MLINK API Key
API_KEY = ''
#MsgType.
MSG_TYPE = 'ResponderMarkupVegaDir'
# Replace with your desired limit of how many messages you receive. The default limit is 500
LIMIT = 25000
# Request Parameters for getmsgs Of The MsgType
params = {
# Required Parameters
"apiKey": API_KEY,
"cmd": 'getmsgs',
"msgType": MSG_TYPE,
#"where": "responderID:eq:1200"
}
response = requests.get(MLINK_PROD_URL, params=params)
df = json_to_dataframe_flash(response.json())
df = df.drop(df.index[-1])
display(df)
Checking Flash Responder Fill Quantity
- MLink
#MLINK URL
MLINK_PROD_URL = 'https://mlink-live.nms.saturn.spiderrockconnect.com/rest/json'
#MLINK API Key
API_KEY = ''
#MsgType.
MSG_TYPE = 'SpdrParentExecution'
WHERE = 'accnt:eq:T.MTL.VEN & spdrSource:eq:AutoResponderVD'
# Replace with your desired limit of how many messages you receive. The default limit is 500
LIMIT = 25000
# Request Parameters for getmsgs Of The MsgType
params = {
# Required Parameters
"apiKey": API_KEY,
"cmd": 'getmsgs',
"msgType": MSG_TYPE,
"where": WHERE,
}
response = requests.get(MLINK_PROD_URL, params=params)
df = json_to_dataframe_brkrdetail(response.json())
df['edge'] = (df['surfPrice'] - df['fillPrice']).abs()
df = df.drop(df.index[-1])
display(df)