Who bought SVB? A Look At The Volatility Prior To Collapse.

Who bought SVB? A Look At The Volatility Prior To Collapse.

Lately all we can read about these days are banks failing everywhere! Now some worry Will Bank of America Collapse? And many others worry whether or not Will Wells Fargo Fail? And of course, many others worry about whether the more local establishments. Will First Republic Bank Fail ?

I have done some programming, and there are several outputs for the SVB’s beta and its stock performances.

I used 1Y, 6M and recent 1M SVB stock data to generate the beta. The recent one-year beta is 1.87, while the recent six-month beta raises to 2.17. Since beta=cov/var, the covariance between SVB and the market(SP500) is similar for the two-time frames, but the variance of 6M’s data increases, driving up the beta_6M. For the most recent 1M data, SVB’s beta is 7.12, causing by the slump of the variance. I also plot the stock performance for SVB and the market respectively, as shown in the pdf for your easy reference. Do you think we should write a report to investigate a bit more about this matter? What will be the next step? Everybody is discussing SVB, and I have read some interesting analysis on this subject.

Who bought SVB? A Look At The Volatility Prior To Collapse.

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

In [3]: In [7]: 

import pandas as pd 

import yfinance as yf 

”’ 

read the stock data for SVB directly from Yahoo finance since we are trying to see what happen to SVB in near bankruptcy I am calculating the respective data using 1Y, 6M, 1M data, and compare it with the stock performance of SP500 

”’ 

start_1Y = ‘2022-03-11’ 

end_1Y = ‘2023-03-11’ 

svb_data = yf.download(‘SIVB’, start=start_1Y, end=end_1Y) svb_data[‘Daily Return’] = svb_data[‘Adj Close’].pct_change() print(svb_data)#this gives the daily return for the SVB

[*********************100%***********************] 1 of 1 completed  Open High Low Close Adj Clos e \ 

Date  

2022-03-11 549.020020 553.190002 529.719971 530.590027 530.59002 7  

2022-03-14 540.849976 542.710022 510.269989 512.119995 512.11999 5  

2022-03-15 515.890015 528.630005 512.169983 526.659973 526.65997 3  

2022-03-16 540.809998 563.239990 534.690002 556.799988 556.79998 8  

2022-03-17 548.010010 566.710022 542.229980 564.729980 564.72998 0  

… … … … … .. .  

2023-03-06 284.829987 286.519989 280.640015 283.040009 283.04000 9  

2023-03-07 280.390015 283.079987 267.070007 267.390015 267.39001 5  

2023-03-08 266.859985 271.010010 264.000000 267.829987 267.82998 7  

2023-03-09 176.550003 177.750000 100.000000 106.040001 106.04000 1  

2023-03-10 106.040001 106.040001 106.040001 106.040001 106.04000 1  

 Volume Daily Return  

Date  

2022-03-11 613000 NaN  

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 1 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

2022-03-14 504800 -0.034810  2022-03-15 590500 0.028392  2022-03-16 659100 0.057229  2022-03-17 502900 0.014242  … … …  2023-03-06 542200 -0.004817  2023-03-07 830500 -0.055293  2023-03-08 835200 0.001645  2023-03-09 38746500 -0.604077  2023-03-10 0 0.000000  

[251 rows x 7 columns]

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 2 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

In [8]: 

#SP500 aka market performance 

sp500_data = yf.download(‘^GSPC’, start=start_1Y, end=end_1Y) sp500_data[‘Daily Return’] = sp500_data[‘Adj Close’].pct_change() print(sp500_data)#this gives the daily return for the SVB

[*********************100%***********************] 1 of 1 completed  Open High Low Close Adj Close \ 

Date  

2022-03-11 4279.500000 4291.009766 4200.490234 4204.310059 4204. 310059  

2022-03-14 4202.750000 4247.569824 4161.720215 4173.109863 4173. 109863  

2022-03-15 4188.819824 4271.049805 4187.899902 4262.450195 4262. 450195  

2022-03-16 4288.140137 4358.899902 4251.990234 4357.859863 4357. 859863  

2022-03-17 4345.109863 4412.669922 4335.649902 4411.669922 4411. 669922  

… … … … …  …  

2023-03-06 4055.149902 4078.489990 4044.610107 4048.419922 4048. 419922  

2023-03-07 4048.260010 4050.000000 3980.310059 3986.370117 3986. 370117  

2023-03-08 3987.550049 4000.409912 3969.760010 3992.010010 3992. 010010  

2023-03-09 3998.659912 4017.810059 3908.699951 3918.320068 3918. 320068  

2023-03-10 3912.770020 3934.050049 3846.320068 3861.590088 3861. 590088  

 Volume Daily Return  

Date  

2022-03-11 4938640000 NaN  

2022-03-14 5574920000 -0.007421  

2022-03-15 5392470000 0.021409  

2022-03-16 6309750000 0.022384  

2022-03-17 4985090000 0.012348  

… … …  

2023-03-06 4000870000 0.000687  

2023-03-07 3922500000 -0.015327  

2023-03-08 3535570000 0.001415  

2023-03-09 4445260000 -0.018459  

2023-03-10 5518190000 -0.014478  

[251 rows x 7 columns] 

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 3 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

In [16]: In [17]: 

#merge two SVB and sp500 

merged_data = pd.concat([svb_data[‘Daily Return’], sp500_data[‘Daily Retumerged_data.columns = [‘Daily Return_svb’, ‘Daily Return_sp500’] merged_data.dropna(inplace=True) 

print(merged_data) 

 Daily Return_svb Daily Return_sp500 

Date  

2022-03-14 -0.034810 -0.007421 

2022-03-15 0.028392 0.021409 

2022-03-16 0.057229 0.022384 

2022-03-17 0.014242 0.012348 

2022-03-18 0.010111 0.011662 

… … … 

2023-03-06 -0.004817 0.000687 

2023-03-07 -0.055293 -0.015327 

2023-03-08 0.001645 0.001415 

2023-03-09 -0.604077 -0.018459 

2023-03-10 0.000000 -0.014478 

[250 rows x 2 columns] 

#Beta of SVB_1Y 

covariance = np.cov(merged_data[‘Daily Return_svb’], merged_data[‘Daily Rsp500_variance = np.var(merged_data[‘Daily Return_sp500’]) beta_1Y = covariance / sp500_variance 

print(f”The beta for SVB using 1Y data is {beta_1Y:.2f}”)The beta for SVB is 1.87 

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 4 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

In [30]: In [32]: 

#Beta of SVB_6M 

start_6M = ‘2022-09-11’ 

end_6M = ‘2023-03-11’ 

svb_data_6M = yf.download(‘SIVB’, start=start_6M, end=end_6M) svb_data_6M[‘Daily Return’] = svb_data_6M[‘Adj Close’].pct_change() sp500_data_6M = yf.download(‘^GSPC’, start=start_6M, end=end_6M) sp500_data_6M[‘Daily Return’] = sp500_data_6M[‘Adj Close’].pct_change() merged_data_6M = pd.concat([svb_data_6M[‘Daily Return’], sp500_data_6M merged_data_6M.columns = [‘Daily Return’, ‘Daily Return_sp500’] merged_data_6M.dropna(inplace=True) 

covariance_6M = np.cov(merged_data_6M[‘Daily Return’], merged_data_6M[ sp500_variance_6M = np.var(merged_data_6M[‘Daily Return_sp500’]) print(“SVB_cov=”,covariance_6M, “SUB_var=”,sp500_variance_6M) beta_6M = covariance_6M / sp500_variance_6M 

print(f”The beta for SVB using 6M data is {beta_6M:.2f}”) 

[*********************100%***********************] 1 of 1 completed [*********************100%***********************] 1 of 1 completed SVB_cov= 0.0004337453766513327 SUB_var= 0.0001995995664484072 The beta for SVB using 6M data is 2.17 

#Beta of SVB_1M 

start_1M = ‘2023-02-11’ 

end_1M = ‘2023-03-11’ 

svb_data_1M = yf.download(‘SIVB’, start=start_1M, end=end_1M) svb_data_1M[‘Daily Return’] = svb_data_1M[‘Adj Close’].pct_change() sp500_data_1M = yf.download(‘^GSPC’, start=start_1M, end=end_1M) sp500_data_1M[‘Daily Return’] = sp500_data_1M[‘Adj Close’].pct_change() merged_data_1M = pd.concat([svb_data_1M[‘Daily Return’], sp500_data_1M merged_data_1M.columns = [‘Daily Return’, ‘Daily Return_sp500’]

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 5 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

merged_data_1M.columns = [‘Daily Return’, ‘Daily Return_sp500’] merged_data_1M.dropna(inplace=True) 

covariance_1M = np.cov(merged_data_1M[‘Daily Return’], merged_data_1M[ sp500_variance_1M = np.var(merged_data_1M[‘Daily Return_sp500’]) beta_1M = covariance_1M / sp500_variance_1M 

print(“SVB_cov=”,covariance_1M, “SUB_var=”,sp500_variance_1M) print(f”The beta for SVB using 1M data is {beta_1M:.2f}”) print(svb_data_1M) 

#the variance/risk for investing SVB for the last month is extremely risk

[*********************100%***********************] 1 of 1 completed [*********************100%***********************] 1 of 1 completed SVB_cov= 0.0006485760518519044 SUB_var= 9.106473086691223e-05 The beta for SVB using 1M data is 7.12 

 Open High Low Close Adj Clos e \ 

Date  

2023-02-13 308.700012 311.700012 304.459991 311.559998 311.55999 8  

2023-02-14 309.799988 317.500000 303.089996 310.769989 310.76998 9  

2023-02-15 308.959991 318.260010 307.269989 316.750000 316.75000 0  

2023-02-16 308.369995 310.600006 301.820007 301.929993 301.92999 3  

2023-02-17 298.429993 299.959991 286.049988 292.790009 292.79000 9  

2023-02-21 287.250000 290.269989 280.079987 285.709991 285.70999 1  

2023-02-22 285.470001 291.209991 280.799988 287.549988 287.54998 8  

2023-02-23 290.589996 291.299988 282.049988 289.010010 289.01001 0  

2023-02-24 281.000000 284.519989 278.380005 282.920013 282.92001 3  

2023-02-27 287.589996 289.529999 283.959991 285.929993 285.92999 3  

2023-02-28 288.500000 293.660004 286.089996 288.109985 288.10998 5  

2023-03-01 284.640015 286.970001 280.089996 283.029999 283.02999 9  

2023-03-02 276.390015 278.329987 269.429993 277.170013 277.17001 3  

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 6 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

In [33]: 

2023-03-03 280.339996 285.500000 277.859985 284.410004 284.41000 4  

2023-03-06 284.829987 286.519989 280.640015 283.040009 283.04000 9  

2023-03-07 280.390015 283.079987 267.070007 267.390015 267.39001 5  

2023-03-08 266.859985 271.010010 264.000000 267.829987 267.82998 7  

2023-03-09 176.550003 177.750000 100.000000 106.040001 106.04000 1  

2023-03-10 106.040001 106.040001 106.040001 106.040001 106.04000 1  

 Volume Daily Return  

Date  

2023-02-13 558700 NaN  

2023-02-14 641900 -0.002536  

2023-02-15 477500 0.019243  

2023-02-16 450000 -0.046788  

2023-02-17 1338700 -0.030272  

2023-02-21 586300 -0.024181  

2023-02-22 855000 0.006440  

2023-02-23 619100 0.005077  

2023-02-24 649100 -0.021072  

2023-02-27 583900 0.010639  

2023-02-28 573200 0.007624  

2023-03-01 393400 -0.017632  

2023-03-02 746600 -0.020704  

2023-03-03 357200 0.026121  

2023-03-06 542200 -0.004817  

2023-03-07 830500 -0.055293  

2023-03-08 835200 0.001645  

2023-03-09 38746500 -0.604077  

2023-03-10 0 0.000000  

#Stock performances comparison 

import matplotlib.pyplot as plt 

# Define the start and end dates for the historical data start_date = ‘2022-03-11’ 

end_date = ‘2023-03-11’ 

# Retrieve the historical price data for SVB and the S&P 500 index svb_data = yf.download(‘SIVB’, start=start_date, end=end_date) sp500_data = yf.download(‘^GSPC’, start=start_date, end=end_date) 

Is Wells Fargo still a safe bank?

# Calculate the daily returns for SVB and the S&P 500 index svb_data[‘Daily Return’] = svb_data[‘Adj Close’].pct_change() sp500_data[‘Daily Return’] = sp500_data[‘Adj Close’].pct_change()

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 7 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

# Remove any rows with missing data 

svb_data.dropna(inplace=True) 

sp500_data.dropna(inplace=True) 

# Create a time series plot of SVB’s daily returns 

plt.plot(svb_data.index, svb_data[‘Daily Return’]) 

plt.title(“SVB Daily Returns”) 

plt.xlabel(“Date”) 

plt.ylabel(“Daily Return”) 

plt.show() 

# Create a time series plot of the S&P 500 index’s daily returns 

plt.plot(sp500_data.index, sp500_data[‘Daily Return’]) 

plt.title(“S&P 500 Index Daily Returns”) 

plt.xlabel(“Date”) 

plt.ylabel(“Daily Return”) 

plt.show()

[*********************100%***********************] 1 of 1 completed [*********************100%***********************] 1 of 1 completed 

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 8 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

In [36]: 

#Stock performances comparison recent 1M 

import matplotlib.pyplot as plt 

# Define the start and end dates for the historical data start_date = ‘2023-02-11’ 

end_date = ‘2023-03-10’ 

# Retrieve the historical price data for SVB and the S&P 500 index svb_data = yf.download(‘SIVB’, start=start_date, end=end_date) sp500_data = yf.download(‘^GSPC’, start=start_date, end=end_date) 

# Calculate the daily returns for SVB and the S&P 500 index svb_data[‘Daily Return’] = svb_data[‘Adj Close’].pct_change() sp500_data[‘Daily Return’] = sp500_data[‘Adj Close’].pct_change() 

# Remove any rows with missing data 

svb_data.dropna(inplace=True) 

sp500_data.dropna(inplace=True) 

# Create a time series plot of SVB’s daily returns 

plt.plot(svb_data.index, svb_data[‘Daily Return’]) 

plt.title(“SVB Daily Returns”) 

plt.xlabel(“Date”) 

plt.ylabel(“Daily Return”) 

plt.show() 

# Create a time series plot of the S&P 500 index’s daily returns plt.plot(sp500_data.index, sp500_data[‘Daily Return’]) plt.title(“S&P 500 Index Daily Returns”) 

plt.xlabel(“Date”) 

plt.ylabel(“Daily Return”) 

plt.show()

[*********************100%***********************] 1 of 1 completed [*********************100%***********************] 1 of 1 completed 

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 9 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM

In [38]: #Stock performances comparison recent 6M 

import matplotlib.pyplot as plt 

# Define the start and end dates for the historical data 

start_date = ‘2022-09-11’ 

end_date = ‘2023-03-10’ 

# Retrieve the historical price data for SVB and the S&P 500 index svb_data = yf.download(‘SIVB’, start=start_date, end=end_date) sp500_data = yf.download(‘^GSPC’, start=start_date, end=end_date) 

# Calculate the daily returns for SVB and the S&P 500 index svb_data[‘Daily Return’] = svb_data[‘Adj Close’].pct_change() sp500_data[‘Daily Return’] = sp500_data[‘Adj Close’].pct_change() 

# Remove any rows with missing data 

svb_data.dropna(inplace=True) 

sp500_data.dropna(inplace=True) 

# Create a time series plot of SVB’s daily returns 

plt.plot(svb_data.index, svb_data[‘Daily Return’]) 

plt.title(“SVB Daily Returns”) 

plt.xlabel(“Date”) 

plt.ylabel(“Daily Return”) 

plt.show()

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 10 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM 

# Create a time series plot of the S&P 500 index’s daily returns plt.plot(sp500_data.index, sp500_data[‘Daily Return’]) 

plt.title(“S&P 500 Index Daily Returns”) 

plt.xlabel(“Date”) 

plt.ylabel(“Daily Return”) 

plt.show()

[*********************100%***********************] 1 of 1 completed [*********************100%***********************] 1 of 1 completed 

In [ ]: 

http://localhost:8888/notebooks/SVB_beta.ipynb# Page 11 of 12 

SVB_beta – Jupyter Notebook 3/12/23, 11:17 PM http://localhost:8888/notebooks/SVB_beta.ipynb# Page 12 of 12

Who bought SVB? A Look At The Volatility Prior To Collapse.