Python Technical Analysis for BioTech – Get Buy Alerts on ABBV in 2023

Seeking Alpha urged investors to buy AbbVie (NYSE:ABBV), Vertex Pharma (NASDAQ:VRTX), Genmab (GMAB) and a range of other biotechs in 2022 long before those stocks outperformed − sometimes even as the consensus view on Wall Street suggested otherwise.

Let’s examine the ABBV 2022 stock performance using mplfinance, plotly, bokeh, bqplot, and cufflinks libraries in Python.

Let’s set the working directory YOURPATH, import key libraries, and read the ABBV 2022 historical data

import yfinance as yf
import talib as ta
import pandas as pd

fb = yf.Ticker(“ABBV”)
df = fb.history(start=”2022-01-03″)
df.tail()

ABBV input data table

print(“TA-Lib Version : {}”.format(ta.version))

TA-Lib Version : 0.4.19

Let’s compute SMA, RSI, and EMA with timeperiod=3

df[“SMA”] = ta.SMA(df.Close, timeperiod=3)
df[“RSI”] = ta.RSI(df.Close, timeperiod=3)
df[“EMA”] = ta.EMA(df.Close, timeperiod=3)

df.tail()

Input TTIs: SMA, RSI, and EMA with timeperiod=3

Let’s plot the candlesticks

import mplfinance as fplt

print(“MPLFinance Version : {}”.format(fplt.version))

MPLFinance Version : 0.12.9b7

fplt.plot(
df,
type=’candle’,
style=’charles’,
title=’ABBV 2022′,
ylabel=’Price ($)’,
volume=True,
ylabel_lower=’Shares\nTraded’,
)

ABBV 2022 candlesticks vs shares traded

Let’s look at the time window and plot MAV=(7,15,22)

setup = dict(type=’candle’,volume=True,mav=(7,15,22),figscale=1.25)
fplt.plot(df.iloc[100:300],setup) fplt.plot(df.iloc[100:300],setup,scale_width_adjustment=dict(volume=0.4,candle=1.35))

Let’s compare SMA and EMA

sma1 = fplt.make_addplot(df[“SMA”], color=”lime”, width=1.5)
sma2 = fplt.make_addplot(df[“EMA”], color=”black”, width=1.5)

fplt.plot(
df,
type=’candle’,
addplot = [sma1, sma2],
style=’charles’,
title=’ABBV 2022 (with SMA)’,
ylabel=’Price ($)’,
)

ABBV 2022: SMA and EMA

Let’s compare ABBV 50- and 200-day EMA

import yfinance as yf, datetime as dt
ticker = “ABBV”
df = pd.DataFrame()
start = dt.datetime.today() – dt.timedelta(365)
end = dt.datetime.today()
df[ticker] = yf.download(ticker, start, end)[“Adj Close”]
df.fillna(method=’bfill’, axis=0, inplace=True)
df[‘200-day Exponential MA’] = df.ewm(span=200, adjust=False).mean()
df[’50-day Exponential MA’] = df[ticker].ewm(span=50, adjust=False).mean()
df.plot()

[*********************100%***********************]  1 of 1 completed
ABBV 2022: 50-day EMA vs 200-day EMA

Let’s plot the ABBV candlesticks with mav=(50,200)

import mplfinance as mpf
df = yf.download(ticker, start, end)
mpf.plot(df, volume=True, tight_layout=True, style=”binance”, type=”candle”, mav=(50,200))

[*********************100%***********************]  1 of 1 completed
 ABBV candlesticks with mav=(50,200)

Let’s read the data via yfin

import pandas
from pandas_datareader import data as pdr
import yfinance as yfin

yfin.pdr_override()

goog = pdr.get_data_yahoo(‘ABBV’,start=’2022-01-03′,end=’2022-12-31′)

print(goog)

[*********************100%***********************]  1 of 1 completed
                  Open        High         Low       Close   Adj Close  \
Date                                                                     
2022-01-03  135.410004  135.699997  133.509995  135.419998  130.341812   
2022-01-04  135.330002  136.220001  134.380005  135.160004  130.091553   
2022-01-05  135.000000  138.149994  135.000000  135.869995  130.774918   
2022-01-06  136.399994  136.660004  135.160004  135.229996  130.158920   
2022-01-07  135.250000  135.839996  134.130005  134.880005  129.822067   
...                ...         ...         ...         ...         ...   
2022-12-23  163.389999  163.820007  162.330002  163.100006  163.100006   
2022-12-27  163.490005  163.809998  161.779999  162.990005  162.990005   
2022-12-28  163.699997  164.690002  162.110001  162.229996  162.229996   
2022-12-29  162.960007  163.880005  162.190002  162.559998  162.559998   
2022-12-30  162.229996  162.850006  159.820007  161.610001  161.610001   

             Volume  
Date                 
2022-01-03  6839800  
2022-01-04  6298300  
2022-01-05  7724900  
2022-01-06  4667000  
2022-01-07  8630300  
...             ...  
2022-12-23  2685100  
2022-12-27  2669200  
2022-12-28  2944500  
2022-12-29  3112500  
2022-12-30  3679900  
[251 rows x 6 columns]

Let’s create the plotly interactive plots

import plotly
import plotly.graph_objects as go

from dash import Dash, dcc, html, Input, Output

candlestick = go.Candlestick(
x=goog.index,
open=goog[‘Open’],
high=goog[‘High’],
low=goog[‘Low’],
close=goog[‘Close’],
name=”OHLC”
)

# create the figure
fig = go.Figure(data=[candlestick])

# plot the figure
fig.show()

ABBV plotly candlesticks

Let’s add MA5 and MA15 to this plot

goog[‘MA5’] = goog.Close.rolling(5).mean()
goog[‘MA15’] = goog.Close.rolling(15).mean()

scatter = go.Scatter(
x=goog.index,
y=goog.MA5,
line=dict(color=’black’, width=1),
name=”5 day MA”
)
scat2 = go.Scatter(
x=goog.index,
y=goog.MA15,
line=dict(color=’blue’, width=1),
name=”15 day MA”
)
fig = go.Figure(data=[candlestick, scatter,scat2])
fig.show()

ABBV OHLC with MA5 and MA15

Let’s get the final plot using plotly

import chart_studio.plotly as py
import plotly.subplots

from plotly.subplots import make_subplots

Create a figure with a secondary axis

fig = plotly.subplots.make_subplots(specs=[[{“secondary_y”: True}]])

fig.add_trace(
candlestick,
secondary_y=False
)

fig.add_trace(
scatter,
secondary_y=False
)

fig.add_trace(
scat2,
secondary_y=False
)

fig.add_trace(
go.Bar(x=goog.index, y=goog[‘Volume’], opacity=0.5, marker_color=’blue’, name=”volume”),
secondary_y=True
)
fig.layout.yaxis2.showgrid=False
fig.show()

Final plotly plot ABBV OHLC MA5 MA15 and Volume

Thus, our Python Technical Analysis for BioTech is completed. This analysis supports the recommendation to get BUY alerts on ABBV in 2023.

Explore More

Stock Market ’22 Round Up & ’23 Outlook: Zacks Strategy vs Seeking Alpha Tactics

XOM SMA-EMA-RSI Golden Crosses ’22

The $ASML Trading Strategies via the Plotly Stock Market Dashboard

Algorithmic Trading using Monte Carlo Predictions and 62 AI-Assisted Trading Technical Indicators (TTI)

Basic Stock Price Analysis in Python


One-Time
Monthly
Yearly

Make a one-time donation

Make a monthly donation

Make a yearly donation

Choose an amount

$5.00
$15.00
$100.00
$5.00
$15.00
$100.00
$5.00
$15.00
$100.00

Or enter a custom amount

$

Your contribution is appreciated.

Your contribution is appreciated.

Your contribution is appreciated.

DonateDonate monthlyDonate yearly

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: