めも

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)

    #  DataFrameへ変換
    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