Экспонента Херста в количественных финансах

Экспонента Херста является статистической мерой, которая может быть использована для количественной оценки долговременной памяти или персистентности временного ряда. Временной ряд представляет собой серию точек данных, собранных за определенный период времени, и экспонента Херста может быть использована для определения того, демонстрирует ли ряд тенденции или закономерности, которые сохраняются с течением времени. Он назван в честь Гарольда Эдвина Херста, который разработал концепцию в 1950-х годах как способ анализа течения реки Нил. Экспонента Херста является статистической мерой, которая может быть использована для характеристики долговременной памяти временного ряда. Он обычно используется в области количественных финансов для анализа поведения финансовых рынков и прогнозирования будущих тенденций.

Экспонента Херста вычисляется с использованием метода, называемого анализом перемасштабированного диапазона. Основная идея анализа перемасштабируемого диапазона состоит в том, чтобы вычислить диапазон кумулятивной суммы временных рядов и сравнить его со стандартным отклонением ряда.

Например, рассмотрим временной ряд ежедневных цен на акции для конкретной компании. Если показатель Херста для этого временного ряда высок, это говорит о том, что цена акций, вероятно, будет продолжаться в том же направлении (либо увеличиваясь, либо уменьшаясь) в течение более длительного периода времени. С другой стороны, если показатель Херста низок, это говорит о том, что цена акций с большей вероятностью будет колебаться случайным образом и может не демонстрировать каких-либо долгосрочных тенденций.

Экспонента Херста может быть рассчитана с использованием различных методов, включая метод анализа перемасштабированного диапазона, разработанный самим Херстом. После того, как экспонента Херста была рассчитана, ее можно использовать для прогнозирования будущего поведения временных рядов. Например, в случае цен на акции высокая экспонента Херста может быть использована, чтобы предположить, что акции, вероятно, будут продолжать расти (или уменьшаться) в будущем, в то время как низкий показатель Херста может быть использован, чтобы предположить, что акции, вероятно, будут колебаться случайным образом. Экспонента Херста обычно обозначается буквой H и может принимать значения от 0 до 1. Значение H больше 0,5 указывает на то, что временной ряд демонстрирует долгосрочные тенденции, в то время как значение H меньше или равно 0,5 указывает на то, что временной ряд колеблется случайным образом.

Одним из способов вычисления экспоненты Херста является метод анализа перемасштабированного диапазона. Этот метод включает в себя вычисление кумулятивной суммы временных рядов, обозначаемых S(t), и диапазона кумулятивной суммы, обозначаемой R(n). Затем экспонента Херста может быть вычислена следующим образом:

H = R(n) / S(n)

где n — длина временных рядов.

Давайте углубимся в практическое использование Python:

Импорт необходимых библиотек для скрипта

Библиотека используется для численных вычислений, библиотека используется для обработки данных, библиотека используется для извлечения биржевых данных из Yahoo Finance, а библиотека используется для построения графиков.numpypandasyfinancematplotlib

import numpy as np
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt

Затем определяет функцию, которая принимает биржевой тикер в качестве входных данных и возвращает экспоненту Херста для этой акции. Сначала функция использует библиотеку для извлечения исторических данных для акций из Yahoo Finance.calculate_hurst_exponentyfinance

def calculate_hurst_exponent(stock_ticker):
# Get the stock data from Yahoo Finance
stock = yf.Ticker(stock_ticker)
data = stock.history(period="max")

Затем извлекает цены закрытия акций из данных.

    # Extract the closing prices
close_prices = data["Close"].values

Эта строка вычисляет логарифмические возвраты цен закрытия, используя формулу, указанную ранее.

    # Calculate the log returns of the closing prices
log_returns = np.log(close_prices[1:] / close_prices[:-1])

Затем инициализируйте диапазон масштабов, которые следует учитывать при вычислении экспоненты Херста. Масштабы определяются длиной возвращаемого массива журнала, а функция используется для создания диапазона целых чисел от 10 до длины массива, увеличенного на 10.range

    # Initialize the range of scales to consider
scales = range(10, len(log_returns) + 1, 10)

Эта строка инициализирует пустой список для хранения экспонент Херста, которые будут вычисляться для каждой шкалы.

    # Initialize an empty list to store the Hurst exponents
hurst_exponents = []

Этот код вычисляет экспоненту Херста для каждой шкалы путем зацикливания по шкалам и применения формулы, предоставленной ранее. Затем он добавляет экспоненту Херста в список экспонент Херста.

    # Calculate the Hurst exponent for each scale
for scale in scales:
# Calculate the cumulative sum of the log returns
cumulative_sum = np.cumsum(log_returns[:scale])

# Calculate the range of the cumulative sum
R = np.max(cumulative_sum) - np.min(cumulative_sum)

# Calculate the standard deviation of the log returns
std = np.std(log_returns[:scale])

# Calculate the Hurst exponent for this scale
H = R / (std * scale ** 0.5)

# Add the Hurst exponent to the list
hurst_exponents.append(H)

Этот код вычисляет среднюю экспоненту Херста по всем масштабам, принимая среднее из экспонент Херста в списке. Затем он возвращает среднюю экспоненту Херста.

    # Calculate the mean Hurst exponent over all scales
hurst_exponent = np.mean(hurst_exponents)

return hurst_exponent
# Calculate the Hurst exponents for two stocks
stock_1_hurst_exponent = calculate_hurst_exponent("AAPL")
stock_2_hurst_exponent = calculate_hurst_exponent("GOOG")

print("Stock 1 Hurst Exponent:", stock_1_hurst_exponent)
print("Stock 2 Hurst Exponent:", stock_2_hurst_exponent)

Затем этот код сравнивает экспоненты Херста двух акций и печатает сообщение, указывающее, какие акции с большей вероятностью будут демонстрировать долгосрочные тенденции. Затем он строит тенденции двух фондов бок о бок с помощью библиотеки. График показывает цены закрытия двух акций с течением времени.matplotlib

# Compare the Hurst exponents of the two stocks
if stock_1_hurst_exponent > stock_2_hurst_exponent:
print("Stock 1 is more likely to exhibit long-term trends than Stock 2.")
elif stock_1_hurst_exponent < stock_2_hurst_exponent:
print("Stock 2 is more likely to exhibit long-term trends than Stock 1.")
else:
print("Stock 1 and Stock 2 are equally likely to exhibit long-term trends.")

# Plot the trends of the two stocks side by side
fig, ax = plt.subplots(1, 2)

# Plot the trend for Stock 1
ax[0].plot(yf.Ticker("AAPL").history(period="max")["Close"].values)
ax[0].set_title("Trend in Stock 1")
ax[0].set_xlabel("Time")
ax[0].set_ylabel("Price")

# Plot the trend for Stock 2
ax[1].plot(yf.Ticker("GOOG").history(period="max")["Close"].values)
ax[1].set_title("Trend in Stock 2")
ax[1].set_xlabel("Time")
ax[1].set_ylabel("Price")

plt.show()

Сток 1 Херст Экспонент: 1.786794575255644

Сток 2 Экспонента Херста: 2.616319144316089

Акция 2 с большей вероятностью будет демонстрировать долгосрочные тенденции, чем Акция 1.

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

«Спасибо, что прочитали эту статью о экспоненте Херста. Мы надеемся, что вы нашли его информативным и полезным. Если вы знаете кого-то, кому может быть полезно прочитать эту статью, пожалуйста, поделитесь ею с ними. Мы ценим вашу поддержку и с нетерпением ждем возможности предоставить вам более ценный контент в будущем».

GitHub: «https://github.com/AIM-IT4»

Истточник