Beta Calculation
Published on: Category: Financial Risk Management
Usually, the very first step of analyzing a stock is to know how it relates to the benchmark. That’s the Beta. Let’s build a function to calculate it.
Beta Calculation Function
from data_source_lib import *
# Import our data getting library, which I named data_source_lib.py in my folder.
def beta(ticker, bench="SPY", interval="day"):
# will return a dataframe
betas = []
volos = []
data_get = get_stock_data([bench, ticker], freq="daily")
data_get = data_get.get_ondemand_data()
ben_mark = data_get[data_get.Ticker == bench]
stock = data_get[data_get.Ticker == ticker]
# Get return and put them in a new dataframe
ben_mark = ben_mark.rename(columns={"Return": bench + "_bench_re", "Ticker": bench}).reset_index()
stock = stock.rename(columns={"Return": ticker + "_stock_re", "Ticker": ticker}).reset_index()
new = pd.concat([ben_mark, stock], axis=1)
new = new[[bench, bench + "_bench_re", ticker, ticker + "_stock_re"]]
new = new.dropna()
# Calculate beta using covariance matrix
covmat = np.cov(new[bench + "_bench_re"], new[ticker + "_stock_re"])
# Beta calculation
beta = covmat[0,1] / np.sqrt(covmat[1,1] * covmat[0,0])
volatility = np.sqrt(covmat[1,1])
betas.append(beta)
volos.append(volatility)
betas_df = pd.DataFrame(betas)
betas_df.columns = ["Beta"]
return betas_df, covmat, volos
Example Usage
beta("AAPL")[0]
Finished AAPL
100%|████████████████████████████████████████████████████████████████████████████████████| 2/2 [00:01<00:00, 1.81it/s]
Beta
--- ----------
0 0.559557