Rumah > pembangunan bahagian belakang > Tutorial Python > Memvisualisasikan Aliran Pilihan dengan Python: Panduan Langkah demi Langkah

Memvisualisasikan Aliran Pilihan dengan Python: Panduan Langkah demi Langkah

WBOY
Lepaskan: 2024-09-08 06:33:03
asal
984 orang telah melayarinya

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

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.

Bermula

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:

  1. Mengambil data pilihan terkini untuk stok yang ditentukan.
  2. Menapis dan membersihkan data.
  3. Mencipta plot berselerak untuk mewakili pilihan panggilan dan letak dari semasa ke semasa.

Pecahan Langkah demi Langkah

1. Mengimport Perpustakaan

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
Salin selepas log masuk
  • yfinance digunakan untuk mengambil data stok sejarah.
  • os mengendalikan operasi direktori dan fail.
  • datetime dan timedelta adalah untuk menguruskan tarikh.
  • matplotlib.pyplot adalah untuk mencipta visualisasi.
  • panda adalah untuk manipulasi dan analisis data.

2. Menyediakan Direktori dan Fail

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')
Salin selepas log masuk

Di sini, kami memastikan direktori output wujud dan menentukan laluan untuk fail data.

3. Mengambil dan Memproses Data Pilihan

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
Salin selepas log masuk

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}")
Salin selepas log masuk

Kod ini mengambil data pilihan panggilan dan letak, menapis baris dengan data volum yang tidak diingini dan menulisnya pada fail.

4. Membersih dan Menyediakan Data untuk Visualisasi

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()]
Salin selepas log masuk

Kami memastikan set data kami bebas daripada nilai NaN dan Last_Trade_Date berada dalam format tarikh masa yang betul.

5. Mencipta Plot Scatter

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}")
Salin selepas log masuk

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.

Kesimpulan

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan