How can I get the historical volatility surface on future option ?

Options
  1. I saw we can get the last volatility surface on workspace with CEVOLSURF and click on <SISURF1> for exemple for silver.
    I'm using eikon python package, how can I pull the data ?
  2. Is it possible to to get the the above surface at a given date ?

Answers

  • Hello @seb_lecu

    The LD Library for Python is the recommended package to use with LSEG Workspace. The library shows various examples of how to get the IPA curves and surfaces. See this folder on the Github examples package.

    For content related questions, please reach out to the helpdesk at LSEG MyAccount.

  • seb_lecu
    seb_lecu Newcomer

    I don't get how it's working for future option on commodities, I put the base RIC LCO for oil and I got:

    "Error code VolSurf.10101" Market data: The service failed to gather enough options to build the LCO@RIC volatility surface at 2025 -07-15, or the underlying RIC is unknown

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @seb_lecu

    Please share the code you're working with so I can take a look.

  • seb_lecu
    seb_lecu Newcomer

    this code is working with BNPP.PA for exemple (but the data doesn't match what I saw on SURF app model = SVI btw)

    The code is :

    response = surfaces.eti.Definition(
    surface_tag="test",
    underlying_definition=surfaces.eti.EtiSurfaceDefinition(
    instrument_code="LCO",
    is_future_underlying=True
    ),


    surface_parameters=surfaces.eti.EtiCalculationParams(
    x_axis=surfaces.eti.Axis.DATE,
    y_axis=surfaces.eti.Axis.STRIKE,
    calculation_date="2025-07-15T00:00:00Z",
    ),
    surface_layout=surfaces.eti.SurfaceLayout(
    format=surfaces.eti.Format.MATRIX,
    ),
    ).get_data()

  • Jirapongse
    Jirapongse ✭✭✭✭✭

    @seb_lecu

    I use this one and it works.

    response = surfaces.eti.Definition(
        surface_tag="test",
        underlying_definition=surfaces.eti.EtiSurfaceDefinition(
        instrument_code="LCO@RICROOT",
        is_future_underlying=True
        ),
        
        
        surface_parameters=surfaces.eti.EtiCalculationParams(
        x_axis=surfaces.eti.Axis.DATE,
        y_axis=surfaces.eti.Axis.STRIKE,
        calculation_date="2025-07-15T00:00:00Z",
        ),
        surface_layout=surfaces.eti.SurfaceLayout(
        format=surfaces.eti.Format.MATRIX,
        ),
        ).get_data()
    

    You can refer to the IPA Volatility Surfaces : ETI document on the LSEG developer community.

    Otherwise, you can contact the Instrument Pricing Analytics - Delivery Platform support team directly via the LSEG Support.

  • seb_lecu
    seb_lecu Newcomer

    It's working, thank you for your help