Я рассчитал распределение изменений цены акций (дифф). Имеются ввиду мультипликативны изменения (diff), во сколько раз меняется цена акции за каждый день, d(t) = p(t) / p(t-1)
Насколько я знаю, распределение должно выглядеть как распределение по Power law (распределение Парето). С CDF, являющейся линией на графике log-log.
Но CDF который я получил не похож на линию на графике log-log. Почему?
Mожет ли это быть вызвано тем, что распределение имеет два хвоста вместо одного? Поскольку имеются два редких событий: редкие огромные ежедневные падения цен с d <0,7 и редкие огромные ежедневные повышения цен d > 1,4
Насколько мне известно, линейный тест распределения парето на логлог графике используется для распределений с одним хвостом. Как например распределение богатства у людей. Можно ли его также использовать для распределения с двумя хвостами?
Ежедневные цены на 4 акции за пару лет, нормированные на 1 за первый день.
Для анализа будем использовать данные ETF c базовой валютой USD: FXCN, FXRL, FXIT, FXUS и FXRU. Временной ряд рассмотрим за три года с 2018 по 2020 года. Само исследование проведем в Google Colaboratory.
Как обычно в начале импортируем все необходимые библиотеки для дальнейшей работы.
import pandas as pd import numpy as np import matplotlib.pyplot as plt from google.colab import files import warnings warnings.filterwarnings("ignore")Сначала необходимо получить данные. Есть несколько способов. Мы воспользовались — взяли их с Finam в формате csv. Дальше написал функцию для обработки полученных данных и при помощи concat свел их в один датафрейм.
def changeDF(df): df['date'] = pd.to_datetime(df['<DATE>'].astype(str), dayfirst=True) name =[x for x in globals() if globals()[x] is df][0] df = df.drop(['<DATE>','<TIME>', '<OPEN>', '<HIGH>', '<LOW>'], axis=1) df = df.set_index(['date']) df.columns = [name+'_cl', name + '_vol'] return df fxgd_change = changeDF(fxgd) fxrl_change = changeDF(fxrl) fxit_change = changeDF(fxit) fxus_change = changeDF(fxus) fxru_change = changeDF(fxru) fxcn_change = changeDF(fxcn) etf = pd.concat([fxgd_change, fxrl_change, fxit_change, fxus_change, fxru_change, fxcn_change], axis=1) etf.head()В результате получили:
Всем привет! Наконец-то решилась начать свой блог на СмартЛабе, а то что-то редки ряды алготрейдеров
Вот уже второй год являюсь членом команды Old School Algo. Всё началось с подготовки материала для сайта, потом прохождение онлайн курсов обучения программированию, но в процессе было принято решение, что более рационально перенаправить мой ресурс на решение других задач, что мы и сделали. Так я стала копирайтером, веб-дизайнером, видеооператором, заведующей административно-хозяйственной частью и правой рукой руководителя. В общем я делаю всё, что нужно для нашего проекта, если что-то не умею – учусь.
Вращаясь в среде алготрейдеров постоянно получаю новую информацию о торговле, знакома с темой ценных бумах, индикаторов, Граалей, всё это очень интересно. Возможно когда-нибудь вернусь к написанию кода, но не сейчас.
За этот год мы сделали много…но впереди ещё больше