Whitepaper
Architecture
Price Feeds

Price feeds

Index Prices

Syndr uses high-frequency aggregated price feeds powered by Pyth network (opens in a new tab) to construct market indices.

See also -

Mark Prices

  • Options: mark prices for options are derived using a combination of average bid-ask prices(from all sources) and theoretical mark-prices derived from the below-described volatility surfaces for each option instrument
  • Perpetuals: mark price is derived using both the index price as well the fair price.
    • Mark price = Index price + 30s EMA(Fair Price - Index Price)
    • Fair Price = ((Fair Impact Bid + Fair Impact Ask) / 2) + (Avg. LP Pool impact)
  • Futures:
    • Mark price = Index price + 30s EMA(Market Price - Index Price)

See Contract specs for more details about the mark price calculations

Options Price Feeds

The core necessity for calculating an accurate mark price for option contracts is implied volatility(IV), which is not unknown prior to to examination or analysis. The simplest way of calculating IV is via using the Black-Scholes formula to back solve for IV from option price, since option price is known for every matched order. But this solution works, it is flawed in the real-world scenario as it Black-Scholes model assumes IV to be constant, which is not true empirically.


Volatility smile curve

In practice, IV rises further out-the-money or in-the-money you go as compared to at-the-money. Plotting IV as a function of strike price gives us a “U”-like shape resembling a smile. This is called a Volatility smile (opens in a new tab).

Also as we move closer to expiry, the IV tends to increase as well.

Option Volatility Surfaces

To combat this, Syndr constructs and maintains our own 3D volatility surfaces, which track IV over time and “moneyness”(spot divided by strike). For each matched order i.e. trade, we use the actual trade price to backsolve for IV. The volatility surface is then updated to reflect this in a weighted manner. Different trades can have different weights with a default set to 80%. We find the closest point on the volatility surface and update it.

Suppose the closest point is at index (i, j); then the surface[i][j] is updated using the weighted sum as follows —

surface[i][j] = w ∗ surface[i][j] + (1 − w) ∗ IV from Black-Scholes back-solve

“w” here is the weight and reflects how much to emphasise this data. Optionally, we may update points nearby index (i,j) as well to “smooth” the surface. For unmatched orders, the surface is not updated. The surface is also not reset once an option expires; it will continue to the next epoch. The weight w is set differently for trades executed via the Orderbook, RFQs and block-trades. Theoretical mark price on Syndr is then calculated using IV queried from the volatility surface.

Deribit backstop for Volatility surface


3d volatility surface

One major issue with using this approach is that volatility surfaces are only updated based on trades executed on the Syndr. As a result, there is a risk that the surface may lag behind the market due to a lack of awareness of trades that do not take place on the Syndr. This can be especially problematic for a new system like Syndr.

To address this issue, we have incorporated an Implied Volatility (IV) backstop using Deribit. We use this backstop to post-process trades on Platform and compare the surface's IV with the IV Deribit. If the deviation between the two exceeds 2%, we update the surface using Deribit’s IV. This process ensures that our volatility surface is always up-to-date with the latest market information.

Moving forward, we plan to expand this updating process to include IVs from other major option trading venues in addition to Deribit. Incorporating data from a variety of sources makes our vol-surfaces much more reactive, aware and robust. By doing so, we essentially make our surface more representative of the broader market and less susceptible to idiosyncratic movements on any single platform.