How to get the option chain for an asset from codebook app?

Hi Dev.Teaam ,
May I request for your assistance on this Client's query please? Thank you.
eikon_data_extractor.py (v4)import datetime as dt
import pandas as pd
import eikon as ek
ek.set_app_key("")
ek.set_timeout(120)
ASSET_RIC = ".SPX"
MATURITY = "2025-07-18"
START_HIST = "2015-01-01"
END_HIST = dt.date.today()
BATCH = 250
def to_csv(df: pd.DataFrame, filename: str) -> None:
df.to_csv(filename, index=False)
print(f"✅ Guardado {filename}")
def find_working_chain(asset_ric: str) -> str:
candidates = [
f"0#{asset_ric}", # 0#.SPX
f"{asset_ric}", # .SPX
f"{asset_ric}w*", # .SPXw*
f"0#{asset_ric}w*", # 0#.SPXw*
f"{asset_ric}.U", # .SPX.U
f"0#{asset_ric}.U", # 0#.SPX.U
]
for ric in candidates:
test_df, err = ek.get_data(ric, ["TR.RIC"])
if err is None and not test_df.empty:
print(f" Usando cadena: {ric}")
return ric
raise RuntimeError(
"Ninguno de los patrones de cadena RIC ha sido reconocido.
"
"Comprueba tu licencia o prueba con otro activo."
)
def fetch_option_chain(asset_ric: str, maturity: str) -> pd.DataFrame:
chain_ric = find_working_chain(asset_ric)
fields = [
"TR.RIC", "TR.OptionExpirationDate", "TR.OptionType",
"TR.OptionStrike", "TR.ImpliedVolatility",
"TR.GreekDelta", "TR.GreekGamma", "TR.GreekVega", "TR.GreekTheta",
"TR.Bid", "TR.Ask", "TR.Volume"
]
df, err = ek.get_data(chain_ric, fields)
if err:
raise RuntimeError(err)
maturity_dt = pd.to_datetime(maturity)
df = df[pd.to_datetime(df["Option Expiration Date"]) == maturity_dt]
if df.empty:
raise RuntimeError(
f"No se encontraron opciones con vencimiento {maturity} "
f"en la cadena {chain_ric}."
)
return df.reset_index(drop=True)
def fetch_spot(asset_ric: str) -> pd.DataFrame:
spot_df, err = ek.get_data(asset_ric, ["TRDPRC_1", "BID", "ASK"])
if err:
raise RuntimeError(err)
return spot_df
def fetch_risk_free(start: str, end: str) -> pd.DataFrame:
rf_df = ek.get_timeseries("USGG3M=RR", start_date=start,
end_date=end, interval="daily")
rf_df = (rf_df.rename(columns={"CLOSE": "rf_rate"})
.reset_index()
.rename(columns={"Date": "date"}))
return rf_df
def fetch_histories(asset_ric: str, start: str, end: str):
asset_hist = ek.get_timeseries(asset_ric, start_date=start,
end_date=end, fields="CLOSE",
interval="daily")
vix_hist = ek.get_timeseries(".VIX", start_date=start,
end_date=end, fields="CLOSE",
interval="daily")
asset_hist = (asset_hist.rename(columns={"CLOSE": "close"})
.reset_index()
.rename(columns={"Date": "date"}))
vix_hist = (vix_hist.rename(columns={"CLOSE": "vix"})
.reset_index()
.rename(columns={"Date": "date"}))
return asset_hist, vix_hist
if name == "main":
9-a Opcionesopt_df = fetch_option_chain(ASSET_RIC, MATURITY)
to_csv(opt_df, f"options_{ASSET_RIC.strip('.')}_{MATURITY}.csv")
spot_df = fetch_spot(ASSET_RIC)
to_csv(spot_df, f"spot_{ASSET_RIC.strip('.')}.csv")
rf_df = fetch_risk_free(START_HIST, END_HIST)
to_csv(rf_df, "risk_free_curve.csv")
asset_hist, vix_hist = fetch_histories(ASSET_RIC, START_HIST, END_HIST)
to_csv(asset_hist, f"history_{ASSET_RIC.strip('.')}.csv")
to_csv(vix_hist, "history_VIX.csv")
Client is using it wirhout API Key
Answers
-
Thank you for reaching out to us.
Do you mean this chain RIC: 0#SPXW*.U?
I can use the Search API to find this RIC on Codebook.
ld.discovery.search(
view = ld.discovery.Views.EQUITY_QUOTES,
top = 10,
filter = "RCSAssetCategoryLeaf eq 'Stock Index Cash Option' and UnderlyingQuoteRIC eq '.SPX' and IsChain eq true"
)The search example is at __Examples__/01. Data Retrieval and Discovery/01.01. LSEG Data Library/Access__Search.ipynb.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 690 Datastream
- 1.4K DSS
- 629 Eikon COM
- 5.2K Eikon Data APIs
- 11 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 559 WebSocket API
- 39 FX Venues
- 15 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 25 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 279 Open PermID
- 45 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 716 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 106 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 95 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛