Dalam dunia kewangan yang sentiasa berkembang, visualisasi data boleh menawarkan cerapan yang belum pernah berlaku sebelum ini tentang arah aliran pasaran. Dalam artikel ini, kami akan meneroka cara memanfaatkan Python untuk tugas analisis kewangan tertentu: menggambarkan aliran pilihan untuk saham tertentu menggunakan data sejarah daripada Yahoo Finance. Kami akan menggunakan coretan kod yang mengambil data pilihan, memprosesnya dan menjana plot taburan untuk menggambarkan aliran pilihan panggilan dan letak. Mari selami butirannya.
Matlamat kami adalah untuk menganalisis data pilihan untuk saham tertentu dan menggambarkannya dalam plot berselerak. Untuk contoh ini, kami akan menggunakan penanda saham LLY (Eli Lilly and Company). Coretan kod mencapai perkara berikut:
Pertama, kita perlu mengimport perpustakaan yang diperlukan:
import yfinance as yf import os from datetime import datetime, timedelta import matplotlib.pyplot as plt import pandas as pd
Kami menyediakan direktori output dan fail di mana kami akan menyimpan data kami:
output_directory = 'output' os.makedirs(output_directory, exist_ok=True) output_file = os.path.join(output_directory, 'output.data')
Di sini, kami memastikan direktori output wujud dan menentukan laluan untuk fail data.
Untuk mendapatkan data pilihan bagi penanda LLY, kami menggunakan yfinance:
ticker = 'LLY' days = 21 populate_data = 'Y' # Set 'N' to use existing file, 'Y' to create new file
Jika populate_data ditetapkan kepada 'Y', kod tersebut mengambil data pilihan baharu. Jika 'N', ia akan menggunakan fail data sedia ada.
Begini cara pengambilan dan pemprosesan data dilakukan:
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}")
Kod ini mengambil data pilihan panggilan dan letak, menapis baris dengan data volum yang tidak diingini dan menulisnya pada fail.
Seterusnya, kami membaca data dan membersihkannya:
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()]
Kami memastikan set data kami bebas daripada nilai NaN dan Last_Trade_Date berada dalam format tarikh masa yang betul.
Kami bersedia untuk mencipta plot taburan kami:
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}")
Segmen ini mencipta plot berselerak pilihan panggilan dan letak, dengan harga mogok pada paksi-y dan tarikh dagangan pada paksi-x. Saiz mata mewakili jumlah dagangan, dengan panggilan hijau menunjukkan dan meletakkan tanda merah. Kami juga menambah tera air untuk tujuan penjenamaan dan menyimpan plot pada fail.
Membayangkan data pilihan membantu pedagang dan penganalisis memahami sentimen pasaran dan aktiviti perdagangan. Panduan ini menunjukkan cara untuk mengambil, memproses dan memvisualisasikan data pilihan menggunakan Python. Dengan mengikuti langkah ini, anda boleh menyesuaikan kod ini untuk mana-mana saham dan menganalisis aliran pilihannya, memberikan cerapan berharga tentang arah aliran pasaran.
Jangan ragu untuk mengubah suai kod untuk memenuhi keperluan khusus anda dan terokai cara yang berbeza untuk menggambarkan data kewangan.
Atas ialah kandungan terperinci Memvisualisasikan Aliran Pilihan dengan Python: Panduan Langkah demi Langkah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!