Вычисление cov_matrix с использованием определенного фрейма данных

avatar
Mikolaj
1 июля 2021 в 21:29
60
1
0

У меня есть такой кадр данных:

dataframe

Ticker означает Stock Name, и я вычислил pct_change, и теперь мне нужно вычислить cov matrix для каждого тикера = StockName.

Вывод должен выглядеть примерно так:

output

Есть идеи, как рассчитать матрицу, как указано выше, для моего столбца pct_change??

Я начал с этого кода, и мой следующий шаг — вычисление ковариации.

import pandas as pd

import glob
import os

os.chdir('C:\\Users\xxxxx')
files_list = glob.glob('*.txt')
stocks = {}

for i, file in enumerate(files_list):
    stocks[i] = pd.read_csv(files_list[i], names=['Ticker', 'Date', 'Open', 'High', 'Low', 'Close', 'Vol'], 
                            header=None).drop(index=0).reset_index().drop(columns='index')
    stocks[i].iloc[:, stocks[i].columns.get_loc('Open'):] = stocks[i].iloc[:, stocks[i].columns.get_loc('Open'):].astype('float')
    stocks[i]['pct_change'] = stocks[i]['Close'].pct_change()

Заранее спасибо за помощь :)

Источник

Ответы (1)

avatar
MRR
1 июля 2021 в 23:18
1

Вот некоторые поддельные данные, которые имитируют характеристики ваших данных — панельные данные с датой тикера в качестве уникального идентификатора наблюдения.

df

enter image description here

Что я сделал, так это повернул данные следующим образом

dfp = df.pivot(index='date',columns='ticker',values='pct_change')
dfp

enter image description here

Теперь я могу использовать функцию ковариационной матрицы Numpy.

cov = np.cov(df.values)
cov

enter image description here