進化し続ける金融の世界では、データを視覚化することで市場の傾向についてこれまでにない洞察を得ることができます。この記事では、Yahoo Finance の履歴データを使用して特定の株式のオプション フローを視覚化するという特定の財務分析タスクに Python を活用する方法を検討します。オプション データを取得して処理し、コールおよびプット オプションのフローを示す散布図を生成するコード スニペットを使用します。詳細を見ていきましょう。
私たちの目標は、特定の株式のオプション データを分析し、散布図で視覚化することです。この例では、株式ティッカー LLY (Eli Lilly and Company) を使用します。コード スニペットは次のことを実現します:
まず、必要なライブラリをインポートする必要があります。
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 中国語 Web サイトの他の関連記事を参照してください。