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: Block Trade.

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.

Fields in a typical block-trade quote request
"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:

Quote request (Submit)
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

Quote response (PriceUpdate)
Leg Currency Pair Tenor Amount Direction

1

EURGBP

Spot

1,000,000

Buy

2

EURGBP

2M

3,000,000

Buy

Fields in a typical block-trade quote response
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.

Fields in a typical block trade confirmation
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"