Block trades
Block trading allows clients to get a single quote for multiple deals.
Overview
Submitting multiple deals simultaneously allows both financial institutions and clients to take advantage of a number of efficiencies.
- Faster workflow
-
A large number of deals can be booked with just a single trade, significantly speeding up the process. In addition, as our block trading application allows users to upload Excel or CSV files, recurring deals can be booked easily.
- Simplified pricing
-
A single quote can be returned for all the deals, allowing clients to see the total cost of the transaction when booking transactions over multiple settlement dates.
- Trading efficiencies
-
Clients can take advantage of efficiencies when both buying and selling a particular currency pair. The underlying spot component of each leg can be netted together to provide clients with a more competitive price, taking into account the spot position the bank will accumulate.
Workflow
The Block Trade workflow is based on the RFS workflow. A client requests a quote; receives a single quote or stream of quotes; executes on a quote; and receives a confirmation.
The Block Trade workflow and the RFS workflow differ in the number of deals they transact: an RFS quote request is for one deal whereas a Block quote request can be for multiple deals. Each leg in an RFS quote request represents a leg associated with a single deal — the near and far legs of an FX swap, for example. However, in the case of block trades, each leg in a block quote request represents an individual deal.
After a price is requested for a block of multiple deals, the trading system returns a single spot price and a number of 'netted' legs with accompanying forward points. As with a quote for a single deal, the client can either accept or reject the price for the block.
Each of the netted legs encompasses one or more of the legs requested in the quote. It is up to the pricing and trading system to determine whether to net legs or not. If you do not wish to net deals together, simply send a separate price leg for every quote.
Message specifications
Block trade messages use the same fields as messages in the RFS trade model, but in some cases the meaning of the fields differs when used in the context of a block trade.
For full message specifications, see Trade model: RFS.
Example block trade messages
The following subsections provide examples of the following messages in the block trade model: Submit, PriceUpdate, and TradeConfirmation.
Quote request
For the full message specification, see the Submit message in the Block Trade trade model.
Each quote request within the block trade is submitted as an individual leg. Leg fields are prefixed with Ln_
, where n
is the leg number.
"AssetClass": "FX" "TradingType": "BLOCK" "TradingProtocol": "RFS" "TradingSubProtocol": "SALES_RFS" "RequestID": "block-1548146937059" "MsgType": "Submit" "CurrencyPair": "EURGBP" "DealtCurrency": "EUR" "TermCurrency": "GBP" "TOBOUser": "ID-7" "L1_Account": "Acc33|Acc33" "L1_BuySell": "SELL" "L1_Amount": 1000000 "L1_SettlementDate": "20190124" "L1_Tenor": "SPOT" "L2_Account": "Acc93|Acc93" "L2_BuySell": "BUY" "L2_Amount": 2000000 "L2_SettlementDate": "20190225" "L2_Tenor": "SPOT" #note how this is the same settlement date as L1 "L3_Account": "Acc45|Acc45" "L3_BuySell": "BUY" "L3_Amount": 3000000 "L3_SettlementDate": "20190325" "L3_Tenor": "2M"
Quote response
For the full message specification, see the PriceUpdate message in the Block Trade trade model.
The netting engine in the backend trading system nets requested legs of like tenor and currency pair. As a result, the quoted legs do not map directly to requested legs.
Details of the original requested legs are not included in the quote response, but are included in the final confirmation. |
For example, in the quote request above, legs 1 and 2 are for EURGBP spot, and leg 3 is for EURGBP 2M. The trading system nets legs 1 and 2, and returns them as leg 1:
Leg | Currency Pair | Tenor | Amount | Direction |
---|---|---|---|---|
1 |
EURGBP |
Spot |
1,000,000 |
Sell |
2 |
EURGBP |
Spot |
2,000,000 |
Buy |
3 |
EURGBP |
2M |
3,000,000 |
Buy |
Leg | Currency Pair | Tenor | Amount | Direction |
---|---|---|---|---|
1 |
EURGBP |
Spot |
1,000,000 |
Buy |
2 |
EURGBP |
2M |
3,000,000 |
Buy |
AskCostAmount: "4190.00" AskCostPercentage: "0.42" AskCostRate: "420000.00" AskIndicative: "false" AskQuoteID: "0" BidCostAmount: "4190.00" BidCostPercentage: "0.42" BidCostRate: "420000.00" BidIndicative: "false" BidQuoteID: "0" CostCurrency: "GBP" CostCurrencyDPS: "5" CurrencyPair: "EURGBP" DefaultSpotAskMargin: "0.00419" DefaultSpotBidMargin: "0.00419" DigitsBeforePips: "2" GFA: "50000000" L1_AllInAskRate: "0.88964" L1_AllInMidRate: "0.8853" L1_AllInRateDPS: "5" L1_Amount: "1000000" L1_BuySell: "BUY" L1_DefaultFwdAskMargin: "0" L1_FwdAskPips: "0.0" L1_FwdAskPoints: "0.00000" L1_FwdBidPips: "0.0" L1_FwdMidPoints: "0.0000" L1_RiskDate: "20190124" L1_RiskTenor: "SPOT" L1_SettlementDate: "20190124" L1_Tenor: "SPOT" L1_TraderAllInAskRate: "0.88545" L1_TraderFwdAskPoints: "0.00000" L2_AllInAskRate: "0.888100" L2_AllInMidRate: "0.88650" L2_AllInRateDPS: "6" L2_Amount: "3000000" L2_BuySell: "BUY" L2_DefaultFwdAskMargin: "0.00085" L2_FwdAskPips: "0.00" L2_FwdAskPoints: "0.000000" L2_FwdBidPips: "0.00" L2_FwdMidPoints: "0.00000" L2_RiskDate: "20190325" L2_RiskTenor: "2M" L2_SettlementDate: "20190325" L2_Tenor: "2M" L2_TraderAllInAskRate: "0.886650" L2_TraderFwdAskPoints: "0.000000" MsgType: "PriceUpdate" NetBuySell: "BUY" NetContraAmount: "3558560.00000" NetDealtAmount: "4000000" NumberOfFractionalPips: "1" NumberOfPips: "2" OverallTimeOut: "120" ProfitAskRate: "1" ProfitBidRate: "1" ProfitCurrency: "GBP" ProfitCurrencyDPS: "4" RequestID: "block-1548147183843" SpotAskRate: "0.88964" SpotBidRate: "0.88096" SpotMidRate: "0.8853" SpotRateDPS: "5" SwapGFA: "1000000000" TimePriceReceived: "1548147183905" TraderSpotAskRate: "0.88545" TraderSpotBidRate: "0.88515" TradingProtocol: "RFS"
Confirmation
For the full message specification, see the TradeConfirmation message in the Block Trade trade model.
Unlike block trade quotes, block trade confirmations include details of the legs submitted in the original quote request. Fields prefixed with Ln_
refer to an executed leg, and fields prefixed with Ln_In_
refer to a requested leg of an executed leg.
In the example quote response above, the first two requested legs were netted together in a single leg to buy 1,000,000 EURGBP at spot. In the confirmation for a trade executed at this quote, fields prefixed with L1_
refer to the executed leg, fields prefixed with L1_I1_
refer to the requested leg to sell 1,000,000 EURGBP at spot, and fields prefixed with L1_I2
refer to the requested leg to buy 2,000,000 EURGBP at spot.
AssetType: "FX" Client: "ID-7" Competition: "false" CostAmount: "19310.00" CostCurrency: "GBP" CostCurrencyDPS: "5" CostPercentage: "1.93" CurrencyPair: "EURGBP" DealtCurrency: "EUR" DigitsBeforePips: "2" IsAmendable: "true" IsCancellable: "true" IsReversible: "true" L1_AllInMargin: "0.00419" L1_AllInMidRate: "0.88680" L1_AllInRate: "0.89114" L1_AllInRateDPS: "5" L1_Amount: "1000000" L1_BuySell: "BUY" L1_CanAdHoc: "true" L1_CanAffirm: "true" L1_CanConfirm: "true" L1_ContraAmount: "891140.00" L1_CostAmount: "4190.00" L1_FwdMargin: "0.00000" L1_FwdMidPoints: "0.00000" L1_FwdPips: "0.0" L1_FwdPoints: "0.00000" L1_I1_Account: "Acc33|Acc33" L1_I1_AllInMargin: "-0.00419" L1_I1_AllInMidRate: "0.88680" L1_I1_AllInRate: "0.89114" L1_I1_AllInRateDPS: "5" L1_I1_Amount: "1000000" L1_I1_BuySell: "SELL" L1_I1_CanAdHoc: "true" L1_I1_CanAffirm: "true" L1_I1_CanConfirm: "true" L1_I1_ContraAmount: "891140.00" L1_I1_CostAmount: "-4190.00" L1_I1_FwdMargin: "0.00000" L1_I1_FwdMidPoints: "0.00000" L1_I1_FwdPips: "0.0" L1_I1_FwdPoints: "0.00000" L1_I1_NextActionDeadline: "20190123160000" L1_I1_NextActionDeadlineDisplayTimezone: "Europe/London" L1_I1_Profit: "-4190.00000" L1_I1_SettlementDate: "20190124" L1_I1_SettlementStatus: "PENDING" L1_I1_Tenor: "SPOT" L1_I1_TradeID: "ad125260-5075-4af6-86dd-08f2655690ff_0" L1_I1_TraderAllInRate: "0.88695" L1_I1_TraderFwdPoints: "0.00000" L1_I2_Account: "Acc93|Acc93" L1_I2_AllInMargin: "0.00419" L1_I2_AllInMidRate: "0.88680" L1_I2_AllInRate: "0.89114" L1_I2_AllInRateDPS: "5" L1_I2_Amount: "2000000" L1_I2_BuySell: "BUY" L1_I2_CanAdHoc: "true" L1_I2_CanAffirm: "true" L1_I2_CanConfirm: "true" L1_I2_ContraAmount: "1782280.00" L1_I2_CostAmount: "8380.00" L1_I2_FwdMargin: "0.00000" L1_I2_FwdMidPoints: "0.00000" L1_I2_FwdPips: "0.0" L1_I2_FwdPoints: "0.00000" L1_I2_NextActionDeadline: "20190123160000" L1_I2_NextActionDeadlineDisplayTimezone: "Europe/London" L1_I2_Profit: "8380.00000" L1_I2_SettlementDate: "20190124" L1_I2_SettlementStatus: "PENDING" L1_I2_Tenor: "SPOT" L1_I2_TradeID: "ad125260-5075-4af6-86dd-08f2655690ff_1" L1_I2_TraderAllInRate: "0.88695" L1_I2_TraderFwdPoints: "0.00000" L1_NextActionDeadline: "20190123160000" L1_NextActionDeadlineDisplayTimezone: "Europe/London" L1_Profit: "4190.00000" L1_SettlementDate: "20190124" L1_SettlementStatus: "PENDING" L1_Tenor: "SPOT" L1_TradeID: "ad125260-5075-4af6-86dd-08f2655690ff_1" L1_TraderAllInRate: "0.88695" L1_TraderFwdPoints: "0.00000" L2_AllInMargin: "0.00504" L2_AllInMidRate: "0.88610" L2_AllInRate: "0.891290" L2_AllInRateDPS: "6" L2_Amount: "3000000" L2_BuySell: "BUY" L2_CanAdHoc: "true" L2_CanAffirm: "true" L2_CanConfirm: "true" L2_ContraAmount: "2673870.00" L2_CostAmount: "15120.00" L2_FwdMargin: "0.00085" L2_FwdMidPoints: "0.00000" L2_FwdPips: "0.00" L2_FwdPoints: "0.000000" L2_I1_Account: "Acc45|Acc45" L2_I1_AllInMargin: "0.00504" L2_I1_AllInMidRate: "0.88610" L2_I1_AllInRate: "0.891290" L2_I1_AllInRateDPS: "6" L2_I1_Amount: "3000000" L2_I1_BuySell: "BUY" L2_I1_CanAdHoc: "true" L2_I1_CanAffirm: "true" L2_I1_CanConfirm: "true" L2_I1_ContraAmount: "2673870.00" L2_I1_CostAmount: "15120.00" L2_I1_FwdMargin: "0.00085" L2_I1_FwdMidPoints: "0.00000" L2_I1_FwdPips: "0.00" L2_I1_FwdPoints: "0.000000" L2_I1_NextActionDeadline: "20190123160000" L2_I1_NextActionDeadlineDisplayTimezone: "Europe/London" L2_I1_Profit: "15120.00000" L2_I1_SettlementDate: "20190325" L2_I1_SettlementStatus: "PENDING" L2_I1_Tenor: "2M" L2_I1_TradeID: "ad125260-5075-4af6-86dd-08f2655690ff_0" L2_I1_TraderAllInRate: "0.886250" L2_I1_TraderFwdPoints: "0.000000" L2_NextActionDeadline: "20190123160000" L2_NextActionDeadlineDisplayTimezone: "Europe/London" L2_Profit: "15120.00000" L2_SettlementDate: "20190325" L2_SettlementStatus: "PENDING" L2_Tenor: "2M" L2_TradeID: "ad125260-5075-4af6-86dd-08f2655690ff_2" L2_TraderAllInRate: "0.886250" L2_TraderFwdPoints: "0.000000" MsgType: "TradeConfirmation" NetContraAmount: "3564560.00000" NetDealtAmount: "4000000" NumberOfPips: "2" OrderID: "ad125260-5075-4af6-86dd-08f2655690ff" Profit: "19310.00000" ProfitCurrency: "GBP" ProfitCurrencyDPS: "5" ProfitRate: "1" RequestID: "block-1548147183843" Source: "SDP" SpotMargin: "0.00419" SpotMidRate: "0.88680" SpotRate: "0.89114" SpotRateDPS: "5" TOBOUser: "ID-7" TradeDate: "20190122" TradeID: "ad125260-5075-4af6-86dd-08f2655690ff" TraderSpotRate: "0.88695" TraderUsername: "Autotrader" TradingProtocol: "RFS" TradingType: "BLOCK"