Question: Why does the first code not provide a two dimensional array for the Daily returns, while the second one does? What would I need to

Why does the first code not provide a two dimensional array for the Daily returns, while the second one does? What would I need to do to correct it so that it does work?

All code is in Python.

Code 1:

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from pandas_datareader import data import datetime import yfinance as yf

Symbols=['AAPL', 'ABBV', 'AXP', 'BAC', 'DIA', 'EPD', 'EWT', 'EWU', 'EWZ', 'GS', 'HD', 'JEPI', 'KO', 'LMT', 'MMM', 'MSFT', 'NVDA', 'O', 'PG', 'RCI', 'RIO', 'SPY', 'TGT', 'TSM', 'XLE', 'XOM'] start = datetime.datetime(2020,2,24) end = datetime.datetime(2023,2,24) # create empty dataframe stock_final = pd.DataFrame() # iterate over each symbol for i in Symbols: # print the symbol which is being downloaded print( str(Symbols.index(i)) + str(' : ') + i, sep=',', end=',', flush=True) try: # download the stock price stock = [] stock = yf.download(i,start=start, end=end, progress=False) # append the individual stock prices if len(stock) == 0: None else: stock['Name']=i stock_final = stock_final.append(stock,sort=False) except Exception: None

Stocks=stock_final['Name'].unique().tolist() for name in Stocks: globals()[name]=stock_final.loc[stock_final['Name']==name]

Companies=[AAPL,ABBV,AXP,BAC,DIA,EPD,EWT,EWU,EWZ,GS,HD,JEPI,KO,LMT,MMM, MSFT,O,PG,RCI,RIO,SPY,TGT,TSM,XLE,XOM,NVDA]

for i in range(len(Companies)): Companies[i]['Daily Returns'] = Companies[i]['Adj Close'].pct_change() Dail=Companies[i]['Daily Returns'].dropna() sns.displot(Dail, bins=50, color='blue', kde=True) plt.title(Symbols[i]) plt.show()

stock_returns = pd.DataFrame(data=np.array([data['Daily Returns'] for data in Companies]).T, columns=Symbols) stock_returns.head() Companies[i]['Daily Returns'].dropna()

Code 2:

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from pandas_datareader import data import datetime import yfinance as yf

start = datetime.datetime(2011,9,1) end = datetime.datetime(2022,3,4)

start1=datetime.datetime(2022,3,5) end1=datetime.datetime(2022,10,19)

Symbols=['AAPL','TSLA','NVDA','GOOGL','BRK-B','AMZN','O','AMT','INTC','JNJ', 'GME','SRGHY','MSFT','COST', 'AA','X','OXY','PG','AMD','HD','V','UPS', 'HMC','GS','PEP','LMT','UL','IBM','KO','OKE']

Symbols.sort()

# create empty dataframe stock_final = pd.DataFrame() # iterate over each symbol for i in Symbols: # print the symbol which is being downloaded print( str(Symbols.index(i)) + str(' : ') + i, sep=',', end=',', flush=True) try: # download the stock price stock = [] stock = yf.download(i,start=start, end=end, progress=False) # append the individual stock prices if len(stock) == 0: None else: stock['Name']=i stock_final = stock_final.append(stock,sort=False) except Exception: None Stocks=stock_final['Name'].unique().tolist() for name in Stocks: globals()[name]=stock_final.loc[stock_final['Name']==name] BRKB=stock_final.loc[stock_final['Name']=='BRK-B']

Companies=[AA,AAPL,AMD,AMT,AMZN,BRKB,COST,GME,GOOGL,GS,HD,HMC,IBM,INTC,JNJ, KO,LMT,MSFT,NVDA,O,OKE,OXY,PEP,PG,SRGHY,TSLA,UL,UPS,V,X]

for i in range(len(Companies)): Companies[i]['Daily Returns'] = Companies[i]['Adj Close'].pct_change() Dail=Companies[i]['Daily Returns'].dropna() sns.displot(Dail, bins=50, color='blue', kde=True) plt.title(Symbols[i]) plt.show()

stock_returns = pd.DataFrame(data=np.array([data['Daily Returns'] for data in Companies]).T, columns=Symbols) stock_returns.head() Companies[i]['Daily Returns'].dropna()

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!