在不断发展的金融世界中,可视化数据可以提供对市场趋势前所未有的洞察。在本文中,我们将探讨如何利用 Python 来执行特定的财务分析任务:使用雅虎财经的历史数据可视化给定股票的期权流。我们将使用一个代码片段来获取期权数据、对其进行处理并生成散点图来说明看涨期权和看跌期权的流程。让我们深入了解细节。
我们的目标是分析特定股票的期权数据并在散点图中将其可视化。在本例中,我们将使用股票代码 LLY(礼来公司)。该代码片段完成以下任务:
首先,我们需要导入必要的库:
import yfinance as yf import os from datetime import datetime, timedelta import matplotlib.pyplot as plt import pandas as pd
我们设置了保存数据的输出目录和文件:
output_directory = 'output' os.makedirs(output_directory, exist_ok=True) output_file = os.path.join(output_directory, 'output.data')
这里,我们确保输出目录存在并指定数据文件的路径。
要获取股票代码 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}")
此代码获取看涨期权和看跌期权数据,过滤掉包含不需要的卷数据的行,并将其写入文件。
接下来,我们读取数据并清理它:
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 的日期时间格式正确。
我们已准备好创建散点图:
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中文网其他相关文章!