Блог им. AlexeyPetrushin

Что лучше для прогноза, последняя волатильность, или за всю историю?

Делаем прогноз на год AMD, двумя способами а) считаем последнюю волатильность за прошлый год и считаем будущий год такой же б) считаем волатильность за всю историю и считаем что будущий будет такой же.

Какая разница? Без разницы, цифры подобия (Likelihood) получатся одинаковы, если проверить по историч данным. Но хотя разница есть, последняя волатильность ошибается редко но метко, а историческая на чуть но постоянно. В среднем получается одно и тоже. И даже если их использовать обе сразу, цифра тоже получится той же. :)

Результаты подобия прогноза с реально наблюдаемыми прибылями, для акции АМД, попробуй найди отличия… (недавняя волатильность чуть лучше, но именно что на чутъ...)

Recent:
  E[log likelihood]: -1.0211
Hist:
  E[log likelihood]: -0.9591
Mixture (0.5 recent + 0.5 hist):
  E[log likelihood]: -0.9660


«в среднем» получается одинаково что последняя волатильность что историческая. Неожиданно, я ожидал что «недавняя» будет заметно лучше «исторической» :)




Данные, столбики в таблице — историч волатильн, реальная прибыль, безрисковый рейт, последн волатильн

hist    lr_actual   lrf_return  recent
0.594   -0.017  0.02    0.556
0.594   0.477   0.011   0.693
0.594   0.933   0.012   0.771
0.594   1.337   0.005   0.844
0.594   1.414   0.004   0.865
...
полные данные 

и код

import pandas as pd
import numpy as np
from scipy.stats import norm

def mean_log_pseudo_prob_and_loglh(df, mean_col, sigma_col, actual_col):
  lh = norm.pdf(df[actual_col], loc=df[mean_col], scale=df[sigma_col])
  log_lh = np.log(lh)
  pseudo_prob = lh / lh.sum()
  log_pseudo_prob = np.log(pseudo_prob)
  return log_pseudo_prob.mean(), log_lh.mean()

def mean_log_pseudo_prob_and_loglh_mixture(df, mean_col, sigma_col1, sigma_col2, actual_col):
  # PDF of each component
  lh1 = norm.pdf(df[actual_col], loc=df[mean_col], scale=df[sigma_col1])
  lh2 = norm.pdf(df[actual_col], loc=df[mean_col], scale=df[sigma_col2])

  # Mixture likelihood: 0.5 * lh1 + 0.5 * lh2
  lh_mix = 0.5 * lh1 + 0.5 * lh2
  log_lh_mix = np.log(lh_mix)

  pseudo_prob = lh_mix / lh_mix.sum()
  log_pseudo_prob = np.log(pseudo_prob)

  return log_pseudo_prob.mean(), log_lh_mix.mean()

# Read the data
df = pd.read_csv('tmp/data.tsv', sep='\t')

# Individual models
a_lpp, a_llh = mean_log_pseudo_prob_and_loglh(df, 'lrf_return', 'recent', 'lr_actual')
b_lpp, b_llh = mean_log_pseudo_prob_and_loglh(df, 'lrf_return', 'hist', 'lr_actual')

# Mixture model
m_lpp, m_llh = mean_log_pseudo_prob_and_loglh_mixture(df, 'lrf_return', 'recent', 'hist', 'lr_actual')

# Output
print('Recent:')
print(f'  E[log pseudo-prob]: {a_lpp:.4f}')
print(f'  E[log likelihood]: {a_llh:.4f}')

print('Hist:')
print(f'  E[log pseudo-prob]: {b_lpp:.4f}')
print(f'  E[log likelihood]: {b_llh:.4f}')

print('Mixture (0.5 recent + 0.5 hist):')
print(f'  E[log pseudo-prob]: {m_lpp:.4f}')
print(f'  E[log likelihood]: {m_llh:.4f}')



Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
482
6 комментариев
А какой вывод?
avatar
Михаил Шардин, просто интересное наблюдение… мне было неожиданно увидеть что нет разницы… я когда заметил думал ошибка в расчетах…
avatar
На более коротких интервалах разница есть
avatar
Если в среднем получается одно и то же, то надо делать арбитраж между ними и получится почти безрисковая прибыль?
avatar
Sergey Pavlov, скорей получается что оба показателя лишь очень грубо и отдаленно предсказывают будущую цену.
avatar

Читайте на SMART-LAB:
Фото
Хэдхантер проведёт Headconf 2026
ПАО «ЭсЭфАй» представило финансовые результаты по МСФО за первое полугодие 2026 года
ПАО «ЭсЭфАй» объявляет результаты деятельности за первое полугодие 2026 года, подготовленные в соответствии с международными стандартами...
Фото
Финансовые результаты ПАО «АПРИ» по МСФО за первое полугодие 2026 года: рост LTM EBITDA на 67,9%
Финансовые результаты ПАО «АПРИ» по МСФО за первое полугодие 2026 года: рост LTM EBITDA на 67,9% 🔵Выручка составила 12,01 млрд руб....
Фото
Рубль снова упал - на календаре третий квартал. Анализ исторической сезонности курса рубля
Здравствуйте! Мне стало интересно проверить, существует ли статистически значимая сезонность курса рубля относительно равновзвешенной корзины...

теги блога Alex Craft

....все тэги



UPDONW
Новый дизайн