This post is over a year old, some of this information may be out of
date.
Things Learned
- auto_corr()
- diff()
- resample()
- pct_change()
- scatter()
Notes 006
# Compute the daily change in interest rates
daily_data['change_rates'] = daily_data.diff()
# Compute and print the autocorrelation of daily changes
autocorrelation_daily = daily_data['change_rates'].autocorr()
print("The autocorrelation of daily interest rate changes is %4.2f" %(autocorrelation_daily))
# Convert the daily data to annual data
annual_data = daily_data['US10Y'].resample(rule='A',how='last')
# Repeat above for annual data
annual_data['diff_rates'] = annual_data.diff()
autocorrelation_annual = annual_data['diff_rates'].autocorr()
print("The autocorrelation of annual interest rate changes is %4.2f" %(autocorrelation_annual))
Notes 005
- negative means mean reverting
# Convert the daily data to weekly data
MSFT = MSFT.resample(rule='W', how='last')
# Compute the percentage change of prices
returns = MSFT.pct_change()
# Compute and print the autocorrelation of returns
autocorrelation = returns["Adj Close"].autocorr()
print("The autocorrelation of weekly returns is %4.2f" %(autocorrelation))
Notes 004
# Import the statsmodels module
import statsmodels.api as sm
# Compute correlation of x and y
correlation = x.corr(y)
print("The correlation between x and y is %4.2f" %(correlation))
# Convert the Series x to a DataFrame and name the column x
x = pd.DataFrame(x, columns=['x'])
# Add a constant to the DataFrame x
x = sm.add_constant(x)
# Fit the regression of y on x
result = sm.OLS(y,x).fit()
# Print out the results and look at the relationship between R-squared and the correlation above
print(result.summary())
Notes 003
# Compute percent change using pct_change()
returns = stocks_and_bonds.pct_change()
# Compute correlation using corr()
# .corr() method for Series which has the syntax series1.corr(series2)
correlation = returns["SP500"].corr( returns["US10Y"] )
print("Correlation of stocks and interest rates: ", correlation)
# Show a scatter plot of the percentage change in stock and bond yields
plt.scatter( returns["SP500"], returns["US10Y"] )
plt.show()
Notes 002
- To get the intersection of dates, use the argument how='inner'
# Import pandas
import pandas as pd
# Convert the stock index and bond index into sets
set_stock_dates = set(stocks.index)
set_bond_dates = set(bonds.index)
# Take the difference between the sets and print
print(set_stock_dates - set_bond_dates)
# Merge stocks and bonds DataFrames using join()
stocks_and_bonds = stocks.join( bonds, how='inner' )
Notes 001
# Import pandas and plotting modules
import pandas as pd
import matplotlib.pyplot as plt
# Convert the date index to datetime
diet.index = pd.to_datetime( diet.index )
# Plot 2012 data using slicing
diet['2012'].plot()
plt.show()
# Plot the entire time series diet and show gridlines
diet.plot(grid=True)
plt.show()