Skip to main content

Chapter 8 – Options

Options can be traded on a broad variety of financial instruments:

  • Equities.
  • Currencies.
  • Commodities.
  • Interest rate and bond futures.
  • Equity indices.
  • Options on futures.

Tools for finding data

ToolContent
OPTIONSMain speed-guide for options.
OPT/IR1Interest rate and bond options.
OPT/FX1Foreign exchange options.
OPS/FX1FX options volatilities.
COMMOD/1Commodity options and futures.
EQUITY/OPT1Equity options.
0#COMMOD-ATMCommodities at-the-money options chain.
0#FINANCIAL-ATMFinancial at-the-money options chain.
0#OPTIONSOptions chain, easier to drill down.

Alternatively, all futures are available listed by country and exchange.

Example – Eurodollar 1 Year Midcurve option on CME:

  1. From the FUTURES speed-guide, go to the US futures and options speed-guide US/FUTEX1.
  2. In this display, double-click the CME page CME/FUTEX1, or go straight to the relevant exchange if you know the three-letter exchange code (for example LIF/FUTEX1 for LIFFE).

Chains are the easiest way of viewing options, as they allow you to look at the whole range of puts and calls; individual contracts can then be selected by double-clicking on them.

Options

Interest Rate and Bond Options

Foreign Exchange Options

FX options volatilities

Equity cash options

Chains of options on cash equities

Chain RICs for cash equity options are made from the following components:

  1. Root RIC.
  2. * (asterisk).
  3. . (dot).
  4. Exchange identifier of the exchange where the option is traded.
  5. Optional option chain extension (for example ++ for at-the-money options).

Examples:

  • 0#LSEG*.L – all LSEG options traded on LIFFE.
  • 0#GDAX*.EX++ – at-the-money DAX options traded on Eurex.

Option exchange identifiers

Option exchange identifiers can be found on page RULES3.

Examples:

  • American Stock Exchange Options – .A.
  • Australian Stock Exchange – .AX.
  • Austrian Stock and Options Exchange – .v.
  • Belgian FOX – .b.
  • Boston Options Exchange (BOX) – .B.
  • Chicago Board Options Exchange – .W.
  • Copenhagen Stock Exchange – .CO.
  • Deutsche Terminbörse – .d.
  • European Options Exchange – .E.
  • Eurex – .EX or .d or .Z.
  • Finnish Options Exchange – .h.
  • Stock Exchange of Hong Kong – .HK.
  • Hong Kong Futures Exchange – .HF.
  • International Securities Exchange – .Y.
  • London Traded Options Market (LSE) – .L.
  • MEFF Renta Variable – .i.
#Import required Libraries
import lseg.data as ld
from lseg.data.discovery import Chain
import datetime
from IPython.display import display, clear_output
#Initial Session to LSEG Workspace
ld.open_session()
    <lseg.data.session.Definition object at 0x2aa4531e310 {name='workspace'}>
#Example of how to retrieve LSEG Options
#Print out total number of instrument and the first 5 instruments
chain1 = Chain(name="0#LSEG*.L")
print(len(chain1.constituents))
print(chain1.constituents[:5])
    1816
['LSEG5500F26.L', 'LSEG5500R26.L', 'LSEG5600F26.L', 'LSEG5600R26.L', 'LSEG5700F26.L']
#Example of how to retrieve Strike Price, Put/Call, Expiry Date of the first 5 options
rics1 = chain1.constituents[:5]
fields1 = ["STRIKE_PRC","PUTCALLIND","EXPIR_DATE"]

ld.get_data(
universe = rics1,
fields = fields1
)
InstrumentSTRIKE_PRCPUTCALLINDEXPIR_DATE
0LSEG5500F26.L5500CALL2026-06-19
1LSEG5500R26.L5500PUT2026-06-19
2LSEG5600F26.L5600CALL2026-06-19
3LSEG5600R26.L5600PUT2026-06-19
4LSEG5700F26.L5700CALL2026-06-19

Option exchange identifiers (continued)

  • Nagoya – .NG.
  • Norwegian Options Exchange – .n.
  • MATIF Traded Options – .m.
  • Milan ISO – .MI.
  • Montreal Stock & Options – .M.
  • OPRA – .U.
  • Osaka Stock Exchange – .OS.
  • Pacific Stock & Options Exchange – .P.
  • Paris Traded Options – .p.
  • Philadelphia Options Exchange – .X.
  • Sao Paulo Bolsa de Valores – .SA.
  • Stockholm Options Market – .ST.
  • Swiss Options & Financial Futures Exchange – .Z.
  • Tokyo Stock Exchange – .T.

US options traded on OPRA

OPRA (Options Price Reporting Authority) reports prices on US equity, index, currency and interest rate options from:

  • AMEX – .A.
  • Boston – .B.
  • Chicago – .W.
  • ISE – .Y.
  • Pacific – .P.
  • Philadelphia – .X.

Reuters provides two separate OPRA services:

OPRA Standard Service

  • Available via Reuters real-time IDN.
  • Includes:
    • All currency and interest rate options.
    • National Best Bid/Offer (NBBO) quotes on debt, equity and equity index options.

The NBBO quote shows:

  • Last trade.
  • Best bid and offer across all options exchanges.
  • Identifier showing which exchanges those rates are offered on.

Note:

  • When the market opens each day, quotes on contracts with no open interest are embargoed for 1.5 hours to ensure network reliability at peak times.

Finding OPRA data:

  • Currency options on the Philadelphia Options Exchange:
    • Start at OPT/FX1 and drill down by currency.
  • Interest-rate options on OPRA:
    • Start at OPT/IR1 and drill down from there.
  • NBBO debt, equity and equity index options:
    • Use the Z# codes based on the RIC root.

Structure of Z# codes:

Z#RICroot*.U
  • .U – suffix covering all OPRA exchanges.
  • * – wildcard for strike prices.

Example:

  • Z#IBM*.U.

OPRA Premium Service

The OPRA Premium Service is available over a separate network – the OPRA Premium Delivery Network (OPDN).

  • OPDN carries only OPRA data (no equities or news).
  • Provides all US options data.
  • Ensures all prices are available in real time (no embargoes).
  • Allows quotes directly from individual exchanges within OPRA.

Chains on all OPRA exchanges

The easiest way to view a series of options is to use the generic .U suffix that covers all OPRA exchanges.

Structure:

0#RICroot*.U

Example:

  • 0#IBM*.U

This displays calls (left) and puts (right) for different strike prices at the primary exchange. Double-click a specific call or put to display a quote on that contract.

#Example of how to retrieve IBM Options
#Print out total number of instrument and the first 5 instruments
chain2 = Chain(name="0#IBM*.U")
print(len(chain2.constituents))
print(chain2.constituents[:5])
    2428
['IBMF122613000.U', 'IBMR122613000.U', 'IBMF122613500.U', 'IBMR122613500.U', 'IBMF122614000.U']
#Example of how to retrieve Strike Price, Put/Call, Expiry Date of the first 5 options
rics2 = chain2.constituents[:5]
fields2 = ["STRIKE_PRC","PUTCALLIND","EXPIR_DATE"]

ld.get_data(
universe = rics2,
fields = fields2
)
InstrumentSTRIKE_PRCPUTCALLINDEXPIR_DATE
0IBMF122613000.U130CALL2026-06-12
1IBMR122613000.U130PUT2026-06-12
2IBMF122613500.U135CALL2026-06-12
3IBMR122613500.U135PUT2026-06-12
4IBMF122614000.U140CALL2026-06-12

A useful way of finding options on an underlying instrument is to use Z# codes to display chains of chains.

Structure:

Z#RICroot*.U
  • Use .U for a general search across all OPRA exchanges.
  • Or use the primary exchange identifier instead.

You can double-click any code displayed to see a list of current prices for its puts or calls.

  • Codes incorporating V, W, X, Y and Z usually indicate LEAPS.

Example:

  • Z#IBM*.U – chains of IBM options across OPRA.

Tip: For a general search, use the .U suffix. For exchange-specific data, use the primary exchange identifier (for example .Y for ISE).

#Example of how to retrieve U.S. listed options chain for IBM.
#Print out total number of instrument and the first 5 chain instruments
chain3 = Chain(name="Z#IBM*.U")
print(len(chain3.constituents))
print(chain3.constituents[:5])
    1
['0#IBM*.U']

Monthly option chains

Reuters provides monthly option chains for Euronext-LIFFE equity and FTSE index options.

Current syntax for LIFFE monthly option chains:

RICroot  MonthCode  YearDigit  * .Exchange

Example:

  • 0#VODM5*.L – June 2025 contracts on Vodafone, LIFFE.

Where:

  • VOD – root for Vodafone.
  • M – June.
  • 6 – 2026.
  • * – wildcard for strikes.
  • .L – LSE / LIFFE.

To see a list of all months on an equity option contract:

  • 0#VOD*.L+.

For interest rate, FX and money market options, add + after the month and year code.

Example:

  • Euribor on LIFFE: Jun 2026 futures contract is FEIM6; the monthly options chain is 0#FEIM6+.

At-the-money chains

At-the-money (ATM) chains currently exist for LIFFE equity options and FTSE index options.

  • Information on new markets with ATM chains is usually announced on NEWDATA news codes (see page DATA).

For a standard equity option, the ATM chains consist of:

  • The at-the-money strike contracts (or closest value).
  • 3 strikes below the at-the-money strike.
  • 3 strikes above the at-the-money strike.

They track price movements of the underlying equities throughout the day. All contract expiries for the relevant strike prices are also included in the chain.

#Example of how to retrieve the June 2026 listed option chain for Vodafone on the London Stock Exchange.
#Print out total number of instrument and the first 5 chain instruments
chain4 = Chain(name="0#VODM6*.L")
print(len(chain4.constituents))
print(chain4.constituents[:5])
    68
['VOD050F26.L', 'VOD050R26.L', 'VOD060F26.L', 'VOD060R26.L', 'VOD064F26.L']
#Example of how to retrieve Strike Price, Put/Call, Expiry Date of the first 5 options
rics4 = chain4.constituents[:5]
fields4 = ["STRIKE_PRC","PUTCALLIND","EXPIR_DATE"]

ld.get_data(
universe = rics4,
fields = fields4
)
InstrumentSTRIKE_PRCPUTCALLINDEXPIR_DATE
0VOD050F26.L50CALL2026-06-19
1VOD050R26.L50PUT2026-06-19
2VOD060F26.L60CALL2026-06-19
3VOD060R26.L60PUT2026-06-19
4VOD064F26.L64CALL2026-06-19
#Example of how to retrieve the all months listed option chain for Vodafone on the London Stock Exchange.
#Print out total number of instrument and the first 5 chain instruments
chain5 = Chain(name="0#VOD*.L")
print(len(chain5.constituents))
print(chain5.constituents[:5])
    2394
['VOD050F26.L', 'VOD050R26.L', 'VOD060F26.L', 'VOD060R26.L', 'VOD064F26.L']
#Example of how to retrieve Strike Price, Put/Call, Expiry Date of the first 5 options
rics5 = chain5.constituents[:5]
fields5 = ["STRIKE_PRC","PUTCALLIND","EXPIR_DATE"]

ld.get_data(
universe = rics5,
fields = fields5
)
InstrumentSTRIKE_PRCPUTCALLINDEXPIR_DATE
0VOD050F26.L50CALL2026-06-19
1VOD050R26.L50PUT2026-06-19
2VOD060F26.L60CALL2026-06-19
3VOD060R26.L60PUT2026-06-19
4VOD064F26.L64CALL2026-06-19

The RIC structure for an at-the-money chain is:

0#RICroot*.Exchange++

Example:

  • 0#LSEG*.L++ – LSEG equity at-the-money chain on LIFFE.

The structure of single-option contracts

The best way to find a specific contract is usually to drill down from a speed-guide or display a chain based on the underlying instrument.

Nevertheless, it is useful to understand codes for single option contracts.