Вопрос или проблема
У меня есть данные по временным рядам для акций с интервалом в одну минуту.
Как лучше всего рассчитать инкрементный рост, например, если у меня есть цена акции с 9 утра до 2 дня с интервалом в минуту, как я могу рассчитать инкрементный рост. Я не хочу просто вычислять разницу между ценой в 2 часа и 9 утра, я хочу иметь возможность определить акции, которые неуклонно росли в течение двух временных интервалов.
Что мешает вам смотреть на запаздывания?
df = data.frame(c(1,2,3,4,4,3,4,5,6,7))
colnames(df)<-c("price")
df$delta=lag(df$price, 1)
df$inc = df$price-df$delta
df
Это даст:
price delta inc
1 1 NA NA
2 2 1 1
3 3 2 1
4 4 3 1
5 4 4 0
6 3 4 -1
7 4 3 1
8 5 4 1
9 6 5 1
10 7 6 1
Условие здесь будет заключаться в том, что каждое значение inc (кроме первого) должно быть $>0$.
Просто рассчитайте производную уровня цены относительно вашей единицы времени (другими словами, между двумя последующими измерениями).
Если производная равна 0 на каком-то интервале, это означает, что цена была стабильной.
Если производная положительна, это означает, что цена увеличилась в этом диапазоне.
Если производная отрицательна, то цена уменьшилась.
Значение производной (независимо от знака) показывает наклон изменения. Иначе говоря, чем выше производная, тем более агрессивно происходит изменение в направлении, обозначенном знаком.
Вы можете легко сделать это с помощью numpy.diff.
Примечание: Дифференцирование — это “шумный” процесс и может привести к очень резкому графику производной, когда вы его строите, особенно если у вас есть резкие изменения уровня цен. Чтобы решить эту проблему, вам следует учитывать некоторые методы сглаживания, такие как фильтр скользящего среднего, примененный к рассчитанным значениям производной или любому другому фильтру низких частот.
Вы могли бы рассмотреть что-то вроде коэффициента Шарпа (https://en.wikipedia.org/wiki/Sharpe_ratio) с целью максимизации этого значения. По сути, это превратилось бы в поиск акции с наибольшей доходностью и наименьшей волатильностью. Вы могли бы рассчитать простую версию, подобную следующей:
$ {Изменение Процента за Все Время}/СтандартноеОтклонениеОтносительныхРазностей $
Относительные разности могут быть процентным изменением между каждым изменением с минуты на минуту, делённым на значение предыдущей минуты.
Ответ или решение
Для расчета устойчивого или инкрементального роста цен акций, используя временные ряды с минутными интервалами, можно воспользоваться несколькими подходами. Ниже предложены шаги, которые помогут вам выявить акций, которые демонстрируют стабильный рост между двумя временными интервалами (например, с 9:00 до 14:00).
1. Расчет разностей
Для начала, вы можете использовать метод вычисления разностей между последовательными значениями. Это поможет понять, как цена акций изменялась между каждой минутой:
df <- data.frame(c(1, 2, 3, 4, 4, 3, 4, 5, 6, 7))
colnames(df) <- c("price")
df$delta <- lag(df$price, 1)
df$inc <- df$price - df$delta
print(df)
В результате получится таблица с разностями, где столбец inc
покажет изменение цены по сравнению с предыдущей минутой. Чтобы идентифицировать устойчивый рост, необходимо проверить, чтобы все значения в столбце inc
(кроме первого) были больше 0.
2. Вычисление производной
Для более точного анализа вы можете вычислить производную цены акций на каждую минуту:
import numpy as np
prices = [1, 2, 3, 4, 4, 3, 4, 5, 6, 7]
derivative = np.diff(prices)
print(derivative)
Здесь производная показывает скорость изменения цен. Если производная положительна, это означает, что цена росла в данный интервал времени.
3. Применение сглаживающих методов
Обратите внимание, что процесс дифференцирования может быть "шумным", особенно при резких изменениях цен. Чтобы сгладить график производной, рекомендуем использовать методы фильтрации, такие как скользящее среднее.
4. Оценка волатильности
Еще одним важным фактором в анализе инкрементального роста является волатильность цен. Вы можете вычислить коэффициент Шарпа, который показывает соотношение между доходностью и риском (волатильностью):
[
\text{Коэффициент Шарпа} = \frac{\text{Процентное изменение за весь период}}{\text{Стандартное отклонение относительных изменений}}
]
Относительные изменения можно рассчитать как процентное изменение между каждым изменением цены с учетом предыдущего значения.
5. Итоговая проверка
После того, как вы рассчитали все необходимые показатели, убедитесь, что:
- Цены акций увеличиваются на протяжении всего анализируемого периода.
- Выявлены резкие колебания, которые могут указывать на волатильность, и учтите их в дальнейших анализах.
Эти шаги помогут вам не только определить устойчивый рост цен акций, но и проанализировать их стабильность и волатильность, что является важным для принятия инвестиционных решений.