def bootstrap(sample_return_data : pd.DataFrame,
repeats : 'repeat times, scalar') -> pd.DataFrame :
asset_index = sample_return_data.columns.values
sample_return_data = sample_return_data.values
asset_cnt = sample_return_data.shape[1]
length = sample_return_data.shape[0]
corr_matrix = np.empty((0, asset_cnt, asset_cnt), float)
cov_matrix = np.empty((0, asset_cnt, asset_cnt), float)
for i in range(0, repeats, 1) :
return_data = pd.DataFrame()
cov = np.zeros((asset_cnt, asset_cnt))
index = np.random.randint(0, length, length)
return_data = pd.DataFrame(sample_return_data[index, :])
cov = return_data.cov()
corr = return_data.corr()
cov_matrix = np.append(cov_matrix, cov.values[np.newaxis, :, :], axis = 0)
corr_matrix = np.append(corr_matrix, corr.values[np.newaxis, :, :], axis = 0)
cov_mean = pd.DataFrame(np.mean(cov_matrix, axis = 0),
index = asset_index, columns = asset_index)
corr_mean = pd.DataFrame(np.mean(corr_matrix, axis = 0),
index = asset_index, columns = asset_index)
return cov_mean, corr_mean