使用 Python 視覺化期權流:逐步指南

WBOY
發布: 2024-09-08 06:33:03
原創
892 人瀏覽過

Visualizing Options Flow with Python: A Step-by-Step Guide

在不斷發展的金融世界中,視覺化資料可以提供對市場趨勢前所未有的洞察。在本文中,我們將探討如何利用 Python 來執行特定的財務分析任務:使用雅虎財經的歷史資料來視覺化給定股票的選擇權流。我們將使用一個程式碼片段來獲取期權數據、對其進行處理並產生散點圖來說明看漲期權和看跌期權的流程。讓我們深入了解細節。

入門

我們的目標是分析特定股票的選擇權資料並在散佈圖中將其視覺化。在本例中,我們將使用股票代號 LLY(禮來公司)。此程式碼片段完成以下任務:

  1. 檢索指定股票的最新選擇權資料。
  2. 過濾和清理資料。
  3. 建立散佈圖來表示買權和賣權隨時間的變化。

逐步細分

1. 導入庫

首先,我們需要導入必要的函式庫:

import yfinance as yf
import os
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
import pandas as pd
登入後複製
  • yfinance 用來取得歷史股票資料。
  • os 處理目錄和檔案操作。
  • datetime 和 timedelta 用於管理日期。
  • matplotlib.pyplot 用於建立視覺化。
  • pandas 用於資料操作和分析。

2. 設定目錄和文件

我們設定了保存資料的輸出目錄和檔案:

output_directory = 'output'
os.makedirs(output_directory, exist_ok=True)
output_file = os.path.join(output_directory, 'output.data')
登入後複製

這裡,我們確保輸出目錄存在並指定資料檔案的路徑。

3. 取得和處理選項數據

要取得股票代號 LLY 的選擇權數據,我們使用 yfinance:

ticker = 'LLY'
days = 21
populate_data = 'Y'  # Set 'N' to use existing file, 'Y' to create new file
登入後複製

如果 populate_data 設定為“Y”,程式碼將取得新的選項資料。如果“N”,它將使用現有的資料檔案。

以下是資料擷取與處理的完成方式:

if populate_data == 'Y':
    stock = yf.Ticker(ticker)
    options_dates = stock.options

    today = datetime.now()
    fourteen_days_later = today + timedelta(days)

    with open(output_file, 'w') as file:
        for date in options_dates:
            date_dt = datetime.strptime(date, '%Y-%m-%d')
            if today <= date_dt <= fourteen_days_later:
                calls = stock.option_chain(date).calls
                puts = stock.option_chain(date).puts

                for _, row in calls.iterrows():
                    if not filter_volume(row['volume']):
                        file.write(f"Call,{date},{row['strike']},{row['volume']}\n")

                for _, row in puts.iterrows():
                    if not filter_volume(row['volume']):
                        file.write(f"Put,{date},{row['strike']},{row['volume']}\n")

    print(f"Data has been written to {output_file}")
登入後複製

此程式碼取得看漲期權和看跌期權數據,過濾掉包含不需要的捲數據的行,並將其寫入文件。

4. 清理和準備可視化數據

接下來,我們讀取資料並清理它:

data = pd.read_csv(output_file, names=['Type', 'Last_Trade_Date', 'Strike', 'Volume'])
data.dropna(inplace=True)
data['Last_Trade_Date'] = pd.to_datetime(data['Last_Trade_Date'])
data = data[data['Volume'].notna()]
登入後複製

我們確保我們的資料集不包含 NaN 值,且 Last_Trade_Date 的日期時間格式正確。

5. 建立散點圖

我們已準備好建立散佈圖:

extra_days_before = 5
extra_days_after = 5

min_date = data['Last_Trade_Date'].min() - timedelta(days=extra_days_before)
max_date = data['Last_Trade_Date'].max() + timedelta(days=extra_days_after)

plt.figure(figsize=(12, 8))

calls_data = data[data['Type'] == 'Call']
plt.scatter(calls_data['Last_Trade_Date'], calls_data['Strike'],
            s=calls_data['Volume'], c='green', alpha=0.6, label='Call')

puts_data = data[data['Type'] == 'Put']
plt.scatter(puts_data['Last_Trade_Date'], puts_data['Strike'],
            s=puts_data['Volume'], c='red', alpha=0.6, label='Put')

plt.xlabel('\nLast Trade Date')
plt.ylabel('Strike Price\n')
plt.title(f'Options Flow for {ticker} ({days} days)\n', fontsize=16)
plt.xticks(rotation=45, ha='right')
plt.gca().xaxis.set_major_formatter(plt.matplotlib.dates.DateFormatter('%Y-%m-%d'))
plt.xlim(min_date, max_date)
plt.subplots_adjust(bottom=0.2)
plt.grid(True)

plt.text(0.5, 0.5, f'{ticker}', color='gray', fontsize=80, alpha=0.5,
         ha='center', va='center', rotation=15, transform=plt.gca().transAxes)
plt.text(0.95, 0.95, 'medium.com/@dmitry.romanoff', color='gray', fontsize=20, alpha=0.5,
         ha='right', va='top', transform=plt.gca().transAxes)
plt.text(0.05, 0.05, 'medium.com/@dmitry.romanoff', color='gray', fontsize=20, alpha=0.5,
         ha='left', va='bottom', transform=plt.gca().transAxes)

plot_file = os.path.join(output_directory, 'options_scatter_plot.png')
plt.savefig(plot_file)

print(f"Scatter plot has been saved to {plot_file}")
登入後複製

此部分建立買權和賣權的散佈圖,其中 y 軸為行使價,x 軸為交易日期。點的大小代表交易量,綠色表示買權,紅色表示賣權。我們還出於品牌目的添加浮水印並將繪圖保存到文件中。

結論

視覺化選擇權資料有助於交易者和分析師了解市場情緒和交易活動。本指南示範如何使用 Python 取得、處理和視覺化選擇權資料。透過執行以下步驟,您可以針對任何股票調整此程式碼並分析其選擇權流,從而提供有關市場趨勢的寶貴見解。

請隨意修改程式碼以滿足您的特定需求,並探索視覺化財務資料的不同方法。

以上是使用 Python 視覺化期權流:逐步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!