Импортируем основную библиотеку yfinance, а для построения графиков импортируем matplotlib
# Import yfinance package
import yfinance as yf
# Для построения графиков
import matplotlib.pyplot as plt
import matplotlib
%matplotlib inline
matplotlib.__version__
'3.4.3'
Выбираем стиль для графиков
plt.style.use('seaborn-darkgrid')
Создаем переменную для размера шрифта
FONT_SIZE = 16
Создаем переменную тикер для акций Microsoft
msft = yf.Ticker('MSFT')
Выводим все даты экспирации для опционов Microsoft
msft.options
('2022-02-18', '2022-02-25', '2022-03-04', '2022-03-11', '2022-03-18', '2022-03-25', '2022-04-01', '2022-04-14', '2022-05-20', '2022-06-17', '2022-07-15', '2022-08-19', '2022-09-16', '2023-01-20', '2023-03-17', '2023-06-16', '2024-01-19')
Будем работать с таблицей опционов с ближайщей датой экспирации
option_chain = msft.option_chain(date=msft.options[0])
Распечатаем начало таблицы с Колами
option_chain.calls.head()
contractSymbol | lastTradeDate | strike | lastPrice | bid | ask | change | percentChange | volume | openInterest | impliedVolatility | inTheMoney | contractSize | currency | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | MSFT220218C00145000 | 2021-12-16 15:54:47+00:00 | 145.0 | 187.00 | 163.1 | 167.5 | 0.0 | 0.0 | 4.0 | 9 | 6.68091 | True | REGULAR | USD |
1 | MSFT220218C00150000 | 2022-01-31 15:23:10+00:00 | 150.0 | 161.95 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 3 | 0.00001 | True | REGULAR | USD |
2 | MSFT220218C00155000 | 2022-01-25 20:34:53+00:00 | 155.0 | 136.60 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 7 | 0.00001 | True | REGULAR | USD |
3 | MSFT220218C00160000 | 2022-02-07 19:45:12+00:00 | 160.0 | 143.94 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 28 | 0.00001 | True | REGULAR | USD |
4 | MSFT220218C00165000 | 2022-01-28 19:55:09+00:00 | 165.0 | 136.88 | 0.0 | 0.0 | 0.0 | 0.0 | 8.0 | 10 | 0.00001 | True | REGULAR | USD |
Распечатаем начало таблицы с Путами
option_chain.puts.head()
contractSymbol | lastTradeDate | strike | lastPrice | bid | ask | change | percentChange | volume | openInterest | impliedVolatility | inTheMoney | contractSize | currency | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | MSFT220218P00145000 | 2022-02-09 17:50:14+00:00 | 145.0 | 0.01 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 474 | 0.500005 | False | REGULAR | USD |
1 | MSFT220218P00150000 | 2022-01-31 15:53:47+00:00 | 150.0 | 0.01 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | 860 | 0.500005 | False | REGULAR | USD |
2 | MSFT220218P00155000 | 2022-02-11 19:09:53+00:00 | 155.0 | 0.01 | 0.0 | 0.0 | 0.0 | 0.0 | 8.0 | 361 | 0.500005 | False | REGULAR | USD |
3 | MSFT220218P00160000 | 2022-01-31 19:31:58+00:00 | 160.0 | 0.01 | 0.0 | 0.0 | 0.0 | 0.0 | 5.0 | 465 | 0.500005 | False | REGULAR | USD |
4 | MSFT220218P00165000 | 2022-02-11 19:12:09+00:00 | 165.0 | 0.01 | 0.0 | 0.0 | 0.0 | 0.0 | 132.0 | 578 | 0.500005 | False | REGULAR | USD |
Выбираем наименование шрифта
matplotlib.rcParams['font.family'] = 'fantasy'
matplotlib.rcParams['font.fantasy'] = 'Tahoma','Calibri', 'Ubuntu','Arial',
Строим график по последним ценам для опционов Call для разных страйков
plt.figure(figsize=(15, 7))
plt.plot(option_chain.calls.strike, option_chain.calls.lastPrice)
plt.xlabel('Страйки', fontsize = FONT_SIZE)
plt.ylabel('Последняя цена', fontsize= FONT_SIZE)
plt.title('Microsoft последние цены Call опционов для различных страйков', fontsize= FONT_SIZE + 2)
Text(0.5, 1.0, 'Microsoft последние цены Call опционов для различных страйков')
Строим график по последним ценам для опционов Put для разных страйков
plt.figure(figsize=(15, 7))
plt.plot(option_chain.puts.strike, option_chain.puts.lastPrice, color='g')
plt.xlabel('Страйки', fontsize=FONT_SIZE)
plt.ylabel('Последняя цена', fontsize=FONT_SIZE)
plt.title('Microsoft последние цены Put опционов для различных страйков', fontsize=FONT_SIZE + 2)
Text(0.5, 1.0, 'Microsoft последние цены Put опционов для различных страйков')