運用 LongPort API 獲取並解析期權鏈關鍵指標
发布于 2025-09-23 23:25:03(微信公众号导出记录)。
本文来自公众号后台的“导出文章内容”功能。博客正文由导出长图进行本地 OCR 转写,并保留原始排版图用于逐段核对。
原文链接:查看原文
OCR 转写有效文字约 5924 字;代码、流程图和版式以文末原始排版图为准。
正文(本地 OCR 转写)
期(Option)交易的福離度還高於股票交易。單统察期的價格,不足以评估其真實價 值、风院水平以及判市场化的敏感度。一份期權合的的值,是由其标的資價格、履约價、 到期時、市場波動率及無围险利率等多重因素共同决定的。 為了精確量化些因素的影答,金融工程學家們定差了一系列键的量化招。其中,以希字 母命名的风隆参数(TheGreeks)最為核心,它们是要交易者用以概建策略、管理风限的基 石。 對於涉及多低合的的进策路,或需要對整個市場进行描的量化交易而言,手動查詢這些搭 不径效率低下,更無法實现系统化,因此,透通惠用程式介面(API)以程式化的方式,批量理 取分析遭些数據,是進行现代期權交易與分析的必要前提。 核心期權指標解析
1.未平俞合的(Open Interest,OI)
-
定羲:指市场上尚未了结(平意)的衍生性金融商品合的细数,
-
重要性:这是衡量市場活距度具流勤性的關键指标。高0I代表核合的吸引了大量市場步具
者,市場舆趣漂厚,流動性较佳,交易者更容易以合理的情格進出會位。反之,低0I的合的 可能面整買實情差透大、成交困離的围险。
2.引伸波幅(Implied Volatility,IV)
- 定藏:运是市场封棵的资產末来偏格波财的预期,它或非歷史数捷,而是期槽需前市
中,透退定價模型(如 BLack-Scholes Model)反推出来的波慰率數值。
- 重要性:IV直接反映了期耀的昂责程度。高IV意味著市場预期标的资整将出現刺烈波
動,期權的權利金也因此更昂贵:反之则便宜。交易者常透通比鞍不同期權的IV,寻找被市 场高估(通合寰出)或低估(適合員入)的交易模舍。
3.希字母(TheGreeks)
希字母是一组用於衡量期權偏格到不同市場因素发化的敏感度的凰险管理指棵。
-
Delta (△)
-
定:衡量标的资產情格每整動$1,期權借格预期的整動幅度。看涨期權(Ca11)的
Delta為θ至1,看跌期耀(Put)的Delta為-1至0
- 重要性:DeLta是衡量期權方向性风险的最主要指標。一個Delta為θ.5的Call,代表
标的股票每上涨1,其期權價格理上會上涨θ.5.Delta也常被視为期權在到期 时,成為情内期槽(In-the-Money)的機率。它是到冲操作和横建Delta中性策略的 基提。
-
Gamma (F)
-
定裁:衡量标的资座價格每勤$1,期權Delta值的勤幅度。
-
重要性:Gamma代表期權價格的加速度:。高Gamma意味著DeLta值會髓著标的資產价
格的整化而剧烈整化,这使得期權的格曲综更為凸出,围险與澄在回轻都更高,通常, 医近到期的價平(At-the-Money)期橙具有最高的Gamma值。
-
Theta (0)
-
定囊:量在其他條件不现的情况下,每經過一天,期權因時间流逝而损失的情值。对於
期權黄方,Thetai通常為负值。
- 重要性:Theta即時間價值摄耗。一低Theta爲-6.05的期權,代表每天密捐失s0.05的
值。劉于期權賣方策略(如CoveredCall或ShortPut),Theta是其主要的 利润来源。到於置方,Theta别是持有逾位的成本。
-
Vega (v)
-
定瓣:衡量引仲波幅(IV)每燃動1%,期權借格预期的動幅度。
-
重要性:Vega衡量期權封市场情绪或「恐慌程度:的敏感性。常市場预期末来的波助将
加剧時,IV售上升,此時持有正Vega的詹位(如页入跨式/勒式策略)将言撰利。相 反,期權實方通常持有负Vega盒位。
-
Rho (p)
-
定瓣:衡量無凰险利率每動1%,期權借格预期的整助幅度。
-
重要性:在所有希腊字母中,Rho對短期期椭的影塞显小,因此常被菁通交易者忽略。但
封於長期期權(LEAPS),利率的曼化普对其價值產生较為额著的影露。 数據取思路與流程 要完整地揽取指定股票(如NVIDIA)近期期權的上述所有核心指标,可以规封以下程式化载行 流程: L.初始化(Initialization):安装范截入所需函式虚,使用個人恶源建立到侵橙API伺 服器的安全通線。 ?.確定最近的到期日(Determine the Nearest Expiry Date):呼叫 opticn chain expiry_date_list介面,取所有可交易的到期日,亚透遇排序找到離管前最近的一有 效到期日。
3.獲取期權键(Get the Option Chain):将上一步找到的最近到期日傅入option_cha1
n_infaby_dale介面,取日所有的價對的Call和Put標华代碼。
1.批量取群翻参数(Batch Fetch Detailed Parameters):期權链中提取所有期權
代碼,或將它們分批傳入calc_incoxc5介面,明確要求返回所有需要的核心指標 (Delta, Gamma, IV, 0I等)。
5.合供奥整理(Merge and Organize):使用pandas函式,将包含履的價和代码的
「期權表與包含鲜细参数的「指标表:,以期權代码為基军進行合饼,生成一张完整的 窟表。
5.输出與储存(Output and Save):為显终的完整请料表在幕上遍行预寶,亚储存為一
個以當天日期命名的Excel指案,以供後绩分析。 Python程式碼實現 取NVIDIA最近到期期耀随的全部参数密存 print["正在安装所有必需的函式重(Longport,pandas。openpyxl]...") Ipip instal1 longport pandas openpyx1 -q print["函式重华價赋韬!") (05* ml1ud 尊人函式重 sfs 1adug pd se sepued luadu! fron datetine inport date inport tine 15初始化 LongPort SDK try: frnm longport.openapi inport Config, QuoteContext, CalcIndex print“成功幕人 LongPort 函式应及 CalcIndex“) from google.colab import userdata config = Config( app_secret=userdata.get(*LONGPORT APP SECRET'). access_token=userdata.get( *LONGPORT_ACCES5_TOKEN') , ctx_quote = QuoteContext(config) print(“初始化成功,已注推到何服器。“) except Exception as e: print(f"X韧始化失败:{e}") sys,exit() 58) (85 * *.)+ujud print (". 核心遥帽 #按心通辑 def get_nvidia_nearest_chain_and_params(ctx: Quotecontext):
1.找到量近的到期日
2.孤取族日的期權代碍表
3.取该表所有期福的鲜经必慰
4.将参数具代码表合供,整理业返回最终续果
underlying_synbol = NVDA.US print(t@目标:提导[underlying_synbol}最近一国到期日的所有期橙及样细! try: 步露1:找到最近的一需到期日 print(n【步骤1】正在储定最近的到期日...") all_datcs_list = ctx_quote,option_chain_expiry_datc_list(unde today = date.today() upconing_dates = sorted([d for d in all_dates_list if d >= to if not upconing_dates: print("X本找到今天或来景的任何到期日。") return None nearest_expiry_date = upconing_dates[0] print(r 已瞳定最近的到期目物:{nearest expiry date.strft 步露2:接取該日的期播代研表 print(r*\n [步骤 2] 正在為 {nearest expiry date.strftine['%Y-sn- option_chain_list = ctx_guote,option_chain_info_by_date(under If not option_chain_list: print(f* ×在此口期末找到任何音約。“) return None chain df_list = [1 for strike_info in option_chain_list: chain_of_list.append(( 限的情':float(strike_info.price)。 Callf代': strike_info.call_synbol, Puttes': strike_info.put_symbol ) chain_df = pd.0ataFrane(chain_df_1ist) -sort_vaues (by=[ M的 print(f 成功睡取亚整理了[len(chain_df)}国履的情的期橘代裂 步骤3:提取所有代碼疆取胖额参数 all_synbols - chain_df[CallfeE'] .tolist() + chain_df[Put代码 metrics_to_request = [ CalcIndex. LastDone, CalcIndex.openInterest, CalcIndex.Imp CalcIndex.Delta, CalcIndex,Gamma, CalcIndex.Vega, CalcInd CalcIndex. Volume, CalcIndex.Turnover, CalcIndex ChangeRat print(f"\n【步骤 31将蕊道[lenall_synbols)} 国合的摄取{len(metr metrics_list = [] for 1 in range(0, len(all_symbols), 400): batch_synbols = all_symbols[i:i+400] print(f 正在請求勇{i//4BB+1}批資料...") indexes_data - ctx_quote.calc_indexes (symbols=batch_symbo for option_data in indexes_data: netrics_list -append({ 代码':getattr(option_data,“symbol',Mone), 'Delta': getattr(option_data, ‘delta', None), 'Theta': getattr(option_data, 'theta', None), 'Rho′: getattr(option_data, ‘rho', Mone), '号lf版Iv':getattr(option_data,‘1nplied_volatil ‘末平意合的OI':getattr(optiom_data,‘open_interest 成交额:getattr(option_data,“turnover',None), tine.sleep(0.5) metrics_df = pd.DataFrane(metrics_list) print( 所有合纳的样抵必龄通取完量。“) 步额4:合供表格亚整理 print(“\n【步骤4】正在合供期標代码表则样细签鼓表...") calls = chain_df[I履的惯”, Callfteh'Il.rename(columns='CalLf .11],=[。」s13 puts = chain_df[履約情 “Put代码]].renane(columns={Put代 nd, = [暖。1snd chain_unpivoted_df = pd.concat([calls, puts]) final_df = pd.merge(chain_unpivoted_df, metr1cs_df, on= M代 在函数内部完成所有整理工作 ↑inal_df[到m] = nearest_expiry_date.strftine(&Y-n-sd)
1.2 1
final_df = final_df.sort_values(by=[履的囊”,颗型·1].reset_in cols_ordcr = [ “型期日”。 “别代碼”,‘履药情',“類型”, uep,‘,e11ad.
- Theta',
"Vega'. “Rho',‘引菠墨IV', ‘未平度台約I",‘成交量” final_df = final_df[cols_order]
- 合供具整理完成。“)
print (* return final_df except Exccption as e: print(f\nX融行遇程中生重罐膜:[e}) inpart traceback traceback.print_exc() return None
1. 3 6
软行与输出 nain": if name_ final df = get_nvidia_nearest_chain_and_parans [ctx _quote) 1f final_df is not None and not final_df.enpty: print(n + “"80) print(f【最資料预】成功题取(len(final_df}}肇期握细料(前 print(*-**80) with pd.option_context( display.max rous', 28, *display-width print (final_df.head(2)) 存到Excel
1.5 2
try: excel_filename - f*NvIDIA_Mearest_options_Data_(date.toda
1.54
final_ef.to_excel(excel_filenane, Index=False, engine= cp (88x*=. + u.)xud print(f"调科已成功存至 Excel 案:‘(excel_filenane}**) print(=+β3) except Exception as e: print(f"nX存至 Excel 惊案時出:(e}") 161 else: 163 print(" 未能獲取到任何期權資料,無法產生Excel檔案。") 165
原始排版图

