Netting is a process where opposing positions in the same instrument and account are consolidated to fully or partially reduce the market exposure in the instrument depending on the sizes of the opposing positions.
The choice of position netting profile affects how and when positions are netted as well as whether or not it is possible to relate orders directly to an individual position. As an application developer you need to make sure that your application will work correctly with the position netting profiles you make available to your clients.
Position Netting Profiles
Saxo offers three position netting profiles, not all are supported in each region. Information about the current position netting profile can be retrieved by calling GET /openapi/port/v1/clients/{ClientKey} and inspecting the PositionNettingProfile property.
PositionNettingProfile | Description |
---|---|
FifoEndOfDay | FIFO - End-of-day:
|
FifoRealTime | FIFO - Real-time:
|
AverageRealTime | Average - Real-time:
|
Please check out the following pages for in-depth information about these different methodologies.
- FIFO - End-of-day Netting
- FIFO - Real-time
- Average Price Netting - Real-time (TBD)
Please also check out this sample on netting (with source).
General netting rules
In some cases, netting will not take place before the exchange has reached the end of trading day. Thus after-hours trading and time zones may add to the End-Of-Day netting time. Switch to Real-Time netting if this is an issue.
Netting rules
In general, positions may be netted if they are of the same instrument and are on same account. But there are some nuances and exceptions:
- Positions will not be netted if there are active related orders, such as GTC orders, but will still be "squared" (if the opposing positions have the same size). (Does not apply for Futures). Day orders are cancelled before netting.
- FxSpot & FxForwards may be netted if ValueDate are the same.
- Futures. Netting will occur on positions even if there are active related GTC orders.
- Options must have the same ExpiryDate, StrikePrice, and direction (Call/Put).
- Exotic options must have same type and same barrier values.
What should you do as a developer?
First, find out if you even have to support all position netting profiles:
- If you are a Saxo Bank White Label or Introducing Broker, you may choose that your clients will only be allowed to use a subset of the position netting profiles.
- If you are developing a general 3rd party application, which will be used by Saxo Bank clients throughout the world, you must be prepared to support all position netting profiles. At least your application must detect if the client has selected a profile you support, and if not, inform the client and ask him/her to switch to a profile you support.
Make some trades in SaxoTraderGO using the profiles you want to implement to make sure you understand how they work. Then go implement!
Note that the biggest difference between real time and end of day netting, is that real-time netting no longer allows placing orders directly against a specific position. But it is not actually a requirement to do so in end of day netting. So you should be able to support both real time and end of day netting, if your application:
- Refrains from placing orders related to positions
- Refrains from exercising individual positions.
- Checks if there are entries in the port/v1/closedpositions resource and then displays these.
Generally, if you are building an interactive UI, where each user logs in with their individual access token, your application can simply subscribe to /port/v1/positions and port/v1/closedpostions, and show the information provided and updated through those resources. Then you will get a picture, which matches what is shown in Saxo's own trading platform.