SR Trade
Overview
- SpiderRock Connect equity, option, and future parent order management
- Parent order executions and reports
- Multi-leg parent order management
- Upload away executions (drops)
The SR Trade database is where a user can input orders as well as see all fills and view working orders. A user can also set it up to programmatically cancel orders as well as have customized auto hedge and metrics for programmatic trading.
SR Trade Tables

Query Examples
Sample Query 1: The docColumns query below allows a user to pull up the definitions for any table, which is very useful when navigating through the different tables in the SR Trade database.
SELECT * FROM srtrade.doccolumns WHERE TABLE_NAME='msgparentordergateway'
ORDER BY ordinal_position ASC;

Inserting Orders
Inserting any order (option, stock, future) into the system is done via the ParentOrderGateway table. There are many different fields and variables that can be used for different order types. The examples below demonstrate the simplest order parameters.
Sample Query 2: Options
REPLACE INTO srtrade.msgparentordergateway (seckey_at, seckey_ts, seckey_tk, seckey_yr, seckey_mn, seckey_dy, seckey_xx, seckey_cp,sectype, orderSize,orderActiveSize, accnt, clientFirm, spdrActionType, groupingCode, orderSide, marketSession, orderDuration, orderLimitType, orderVolLimit, parentOrderHandling, parentBalanceHandling, takeLimitClass, makeLimitClass, autoHedge, riskGroupId, traderName, CHECKSUM)
VALUES ('EQT', 'NMS', 'NVDA', 2025, 10, 17, 180, 'Put','Option', 35,-1, 'T.ACCNT','SRCORE', 'addreplace', '0000-0000-0000-0042', 'BUY', 'Regmkt', 400, 'VOlX',.34, 'Activetaker', 'Postlimit', 'Simple', 'Simple', 'none', '0000-0000-0000-0028', 'user.name', 13);
Sample Query 3: Stocks
REPLACE INTO srtrade.msgparentordergateway (accnt, clientFirm, groupingCode, spdrActionType, sectype, seckey_at, seckey_ts, seckey_tk, seckey_yr, seckey_mn, seckey_dy, seckey_xx, seckey_cp, orderSide, orderSize, parentOrderHandling, parentBalanceHandling, orderLimitType, orderPrcLimit, marketSession, traderName, riskGroupId, CHECKSUM)
VALUES ('T.ACCNT','SRCORE','0000-0000-0000-0043' , 'Addreplace', 'Stock', 'EQT', 'NMS', 'SPY', 2000,0,0,0, 'Call', 'Buy', 1000, 'activetaker', 'Postlimit', 'Prc', 681, 'Regpostmkt', 'user.name', '0000-0000-0000-0043',13);
Sample Query 4: Futures
REPLACE INTO srtrade.msgparentordergateway (accnt,clientFirm,groupingCode,spdrActionType,sectype,seckey_at,seckey_ts,seckey_tk,seckey_yr,seckey_mn,seckey_dy,seckey_xx,seckey_cp,orderSide,orderSize,parentOrderHandling,parentBalanceHandling,orderLimitType,orderPrcLimit,marketSession,traderName,riskGroupId,CHECKSUM)
VALUES ('T.ACCNT','SRCORE','0000-0000-0000-0045', 'AddReplace', 'Future', 'FUT', 'CME', 'ES', 2025, 12, 19, 0, 'Call', 'Buy', 1000, 'ActiveTaker', 'PostLimit','Prc',6711,'RegPostMkt','user.name','0000-0000-0000-0045',13);
Sample Query 5: Hedging with a Future
REPLACE INTO srtrade.msgparentordergateway (seckey_at,seckey_ts,seckey_tk,seckey_yr,seckey_mn,seckey_dy,seckey_xx,seckey_cp,sectype,orderSize,accnt,clientFirm,spdrActionType,groupingCode,orderSide,marketSession,orderDuration,orderActiveSize,orderLimitType,parentOrderHandling,parentBalanceHandling,takeLimitClass,makeLimitClass,autoHedge,hedgeInstrument,hedgeSeckey_at,hedgeSeckey_ts,hedgeSeckey_tk,hedgeSeckey_yr,hedgeSeckey_mn,hedgeSeckey_dy,riskGroupId,traderName,CHECKSUM)
VALUES ('EQT','NMS','SPX',2025,10,17,6900,'Put','Option',908,'T.ACCNT','SRCORE','AddReplace','0000-0000-0000-0032','Buy','RegMkt',-1, 0, 'Market', 'ActiveTaker', 'PostLimit', 'Surface', 'Surface', 'Spdrauto', 'FUTURE', 'FUT','CME','ES',2025,12,19,'0000-0000-0000-0032','user.name',13);
Sample Query 6: To send orders into the Complex Order Book, the user must use a different gateway called ParentOrderGatewayExt.
REPLACE INTO srtrade.msgparentordergatewayext (accnt,clientFirm,spdrActionType,orderSize,marketSession,orderDuration,seckey_at,seckey_ts,seckey_tk,sectype,orderSide,startType,parentOrderHandling,parentBalanceHandling,takeLimitClass,maxExposureSize,maxCompletionSlippage,orderLimitType,orderPrcLimit,optPremium,leadSide,traderName,mlegNumLegs,CHECKSUM,autoHedge,orderActiveSize,mlegSeckey1_at,mlegSeckey1_ts,mlegSeckey1_tk,mlegSeckey1_yr,mlegSeckey1_mn,mlegSeckey1_dy,mlegSeckey1_xx,mlegSeckey1_cp,mlegSectype1,mlegMult1,mlegSide1,mlegLegId1,mlegPosType1,mlegSeckey2_at,mlegSeckey2_ts,mlegSeckey2_tk,mlegSeckey2_yr,mlegSeckey2_mn,mlegSeckey2_dy,mlegSeckey2_xx,mlegSeckey2_cp,mlegSectype2,mlegMult2,mlegSide2,mlegLegId2,mlegPosType2,groupingCode,riskGroupId)
VALUES ('T.ACCNT','SRCORE','AddReplace',100,'RegMkt',600,'EQT','NMS','AAPL','Mleg','Buy','None','Seekerlegger','PostLimit','Simple',10,0.5,'Prc',10.00,10.00,'Buy','user.name',2,13,'SpdrAuto',-1,'EQT','NMS','AAPL',2025,10,17,255,'Call','option',1,'Buy',1,'auto','EQT','NMS','AAPL',2025,10,17,255,'Put','option',1,'Buy',2,'Auto','1200-1000-0001-1140','0120-0000-1001-1140');
Monitoring Orders
Below are queries that users can utilize to monitor orders in held or working states.
Sample Query 7: To monitor orders in a hold state:
DESCRIBE srtrade.msgsrparentbrkrstate;
SELECT
accnt,groupingCode,riskGroupId,seckey_tk,seckey_yr,seckey_mn,seckey_dy,seckey_xx,seckey_cp,sectype,orderSide,orderSize,orderActiveSize,cumFillQuantity,makeState,takeState,riskLimitDesc,riskLimitSize,spdrBrokerStatus,spdrCloseReason,spdrRejectReason
FROM srtrade.msgsrparentbrkrstate a
WHERE accnt = 'T.ACCNT' AND riskLimitDesc != 'Activesize' AND riskLimitSize = 0 AND spdrBrokerStatus = 'Active';
Sample Query 8: To monitor working orders and child orders in the market:
SELECT accnt,groupingCode,riskGroupId,seckey_tk,seckey_yr,seckey_mn,seckey_dy,seckey_xx,seckey_cp,sectype,orderSide,orderSize,orderActiveSize,cumFillQuantity,makeState,takeState,riskLimitDesc,riskLimitSize,spdrBrokerStatus,spdrCloseReason,spdrRejectReason,csz1,cpx1
FROM srtrade.msgsrparentbrkrstate a
WHERE accnt = 'T.ACCNT' AND riskLimitSize != 0 AND spdrBrokerStatus = 'Active';
Sample Query 9: To monitor orders in all states:
SELECT spdrBrokerStatus,spdrOrderStatus,spdrCloseReason,spdrRejectReason,makeState,riskLimitSize,riskLimitDesc,orderActiveSize,csz1,st.*
FROM srtrade.msgsrparentbrkrstate st
WHERE accnt = 'T.ACCNT';
Sample Query 10: Users who want to view their fills programmatically or retrieve fill data for calculating their own TCA metrics can do so here:
SELECT accnt,execStatus,seckey_tk,seckey_yr,seckey_mn,seckey_dy,seckey_xx,seckey_cp,sectype,fillQuantity,fillPrice,fillDttm,a.*
FROM srtrade.msgsrparentexecution a
WHERE accnt = 'T.ACCNT';
Cancelling Orders
Once an order is in the system, the ability to quickly cancel single or multiple orders is essential. The following queries demonstrate how to perform these actions.
Sample Query 11: Allows users to cancel all orders across multiple accounts, provided all accounts belong to the same client firm.
SELECT * FROM srtrade.msgspdrusercancel;
REPLACE INTO srtrade.msgspdrusercancel
VALUES ('user.name','SR','cancelall', 'user.name' ,NOW(),0);
Sample Query 12: Allows for the cancellation of all users' orders within a single account. Think of this as a panic cancelling all action.
DESCRIBE srtrade.msgsraccntcancel;
REPLACE INTO srtrade.msgsraccntcancel(accnt,cxlreason,altcancelid,username,TIMESTAMP)
VALUES('T.ACCNT','TEST','NONE','user.name',NOW());
Sample Query 13: Allows the user to cancel specific orders (or just everything in a symbol). To do so, pull the information from SpdrParentBrkrState and use that to be as specific or general as needed.
DESCRIBE srtrade.msgsrparentcancel;
DESCRIBE srtrade.msgsrparentbrkrstate;
REPLACE INTO srtrade.msgsrparentcancel (accnt,parentNumber,cxlReason,altCancelId,username,TIMESTAMP,timestamp_us)
(SELECT accnt,parentNumber,'Test',1234,'user.name',NOW(),0
FROM srtrade.msgsrparentbrkrstate
WHERE accnt = 'T.ACCNT' AND seckey_tk = 'SPY' AND sectype = 'Stock' AND spdrOrderStatus != 'Closed');