TheDailyCalls.com Notebook¶

In [1]:
import mplfinance as mpf
import yfinance as yf
from wallstreet import get_daily_returns, get_ytd_growth_percentage, get_moving_averages, get_relative_strength
import pandas as pd
from datetime import datetime

Date¶

In [2]:
datetime.now()
Out[2]:
datetime.datetime(2022, 2, 14, 13, 24, 15, 497616)
In [3]:
pd.options.display.float_format = '{:.2f}'.format
In [4]:
symbol = 'ptlo'
week = '2022-03-18'
n = 10
In [5]:
# Parameters
symbol = "wmb"
week = "2022-03-18"
n = 20
In [6]:
symbol = symbol.upper()
n = n * -1

Performance¶

Daily Returns¶

In [7]:
get_daily_returns([symbol]).set_index('ticker').transpose()
Out[7]:
ticker WMB
name The Williams Companies, Inc.
previous_close 30.71
current_price 30.09
percent change -2.02
today_volume 4.19
previous_volume 10.07

Year to date returns¶

In [8]:
get_ytd_growth_percentage([symbol]).set_index('ticker').transpose()
Out[8]:
ticker WMB
name The Williams Companies, Inc.
growth 15.55

Moving Averages¶

In [9]:
mav = get_moving_averages(symbol)
mav[-5:]
[*********************100%***********************]  1 of 1 completed
Out[9]:
Open High Low Close Adj Close Volume SMA8 SMA21 SMA30 SMA200 RSI
Date
2022-02-08 30.77 30.81 30.20 30.41 30.41 8710800 30.35 29.48 28.62 26.73 63.86
2022-02-09 30.48 30.80 30.18 30.47 30.47 9038700 30.45 29.60 28.77 26.76 64.20
2022-02-10 30.33 30.80 30.00 30.14 30.14 8306500 30.48 29.66 28.90 26.79 60.89
2022-02-11 30.23 30.78 30.12 30.71 30.71 10069200 30.50 29.73 29.06 26.82 64.23
2022-02-14 30.71 30.74 29.86 30.08 30.08 4199195 30.43 29.78 29.20 26.85 58.43
In [10]:
mas = [mpf.make_addplot(mav[n:]['SMA8'],color='green'),
       mpf.make_addplot(mav[n:]['SMA21'], color='blue'),
       mpf.make_addplot(mav[n:]['SMA30'], color='orange'),
       ]
if ('SMA200' in mav.keys()):
       mas.append(mpf.make_addplot(mav[n:]['SMA200'], color='red', linestyle='dashed'))

mpf.plot(mav[n:], type='candle',style='charles',title='\n{}'.format(symbol),volume=True,addplot=mas,figscale=1.1,figratio=(3,2))

Graph¶

In [11]:
e = yf.Ticker(symbol)
hist = e.history(period='60d', interval='1d')
# Valid intervals: [1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo]

# expiration weeks
exp_weeks = pd.DataFrame(e.options, columns=['weeks'])
# exp_weeks

hlines=None

if week in exp_weeks.weeks.values:
  opt = e.option_chain(week)
  c_asset = pd.DataFrame(opt.calls, columns=['strike', 'volume','openInterest', 'impliedVolatility'])
  call_strike = c_asset[c_asset.openInterest == c_asset.openInterest.max()].set_index('strike').index[0]
  p_asset = pd.DataFrame(opt.puts, columns=['strike', 'volume','openInterest', 'impliedVolatility'])
  put_strike = p_asset[p_asset.openInterest == p_asset.openInterest.max()].set_index('strike').index[0]
  hlines = dict(hlines=(put_strike, call_strike), colors=('r','g','b','b'), linewidths=(1,1),linestyle='dashed')

# Settings
kwargs = dict(figscale=1.1,figratio=(8,4),
         volume=True,volume_panel=2,panel_ratios=(7,2,2) , mav=(8,21,30))

exp12 = hist['Close'].ewm(span=12, adjust=False).mean()
exp26 = hist['Close'].ewm(span=26, adjust=False).mean()
macd = exp12 - exp26
signal    = macd.ewm(span=9, adjust=False).mean()
histogram = macd - signal

currentPrice = hist[-1:].set_index('Close').index[0]

apds = [#mpf.make_addplot(exp12,color='lime'),
        #mpf.make_addplot(exp26,color='c'),
        mpf.make_addplot(histogram,type='bar',width=0.4,panel=1,
                         color='blue',alpha=1,secondary_y=False),
        mpf.make_addplot(macd,panel=1,color='green',secondary_y=True),
        mpf.make_addplot(signal,panel=1,color='purple',secondary_y=True),
       ]
In [12]:
# mpf.plot(hist,type='candle',style='yahoo',addplot=apds,**kwargs,hlines=hlines)


if hlines:
  title = '\n{} {:.2f} \nOptions Open Interest Walls\n Exp Date: {} Call: {:.2f} Put: {:.2f}'.format(symbol, currentPrice, week, call_strike, put_strike)
  mpf.plot(hist,type='candle',style='default',addplot=apds,**kwargs,hlines=hlines,title=title)
else:
  title = '\n{} {:.2f} \n'.format(symbol, currentPrice)
  mpf.plot(hist,type='candle',style='default',addplot=apds,**kwargs,title=title)

Disclaimer: I am not a professional investment adviser and my opinions are based on my own technical analysis. Please consult an investment professional before making investment decisions.