2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Выжать максимум из временного ряда без overlap bias?
Сообщение05.08.2025, 09:27 
Задача - временной ряд ${s_t}$ - месячные цены акций, нужно построить ряд годовой лог прибыли $log(r_i) = log(s_i/s_{i-12})$ и посчитать эмпирическую CDF. (не переносите в раздел экономики пожалуйста, это чисто задача из статистики).

а) Простое решение: сделать движущееся окно размером 12, и провести его по месячной прибыли с шагом 12, так чтобы окна не пересекались. Проблема - 11/12 данных упущено.

Вопрос - есть ли способ лучше? Как использовать данные по максимуму, не выкидывая огромную иx часть?

б) Пересекающиеся окна, двигать окно с шагом 1, все данные будут использованы, но, мы получим другую проблему, корреляцию, overlap bias, которая сильно искажает данные, особенно хвост распределения CDF (видно резкий обвал черных точек на конце графика https://i.imgur.com/APxPkWi.jpeg искажения также есть и в других местах, но они не так заметны).

в) Максимум энтропии сделать 12 рядов годовой прибыли с не пересекающимися окнами, каждое сдвинутое относительно другого на 1. И выбрать имеющий максимальную энтропию. И, вопрос - как именно считать энтропию?

г) Усреднить CDF сделать 12 рядов годовой прибыли с не пересекающимися окнами, построить 12 CDF и затем их усреднить, можно попробовать усреднить их как лог среднее CDF = exp(mean(log(cdf_i)).

Структура случайного процесса: мы знаем что процесс месячных цен - стационарный но не нормальный. Если рассмотреть его как процесс месячных лог прибылей, это будет случайный сэмпл log r ~ SkewStudentT(μ, σ, ν, λ) все параметры константы. Уточнение, в реальности процесс не стационарный и выглядит как log r ~ SkewStudentT(μ(t), σ(t), ν(t), λ(t)), но, данные можно сгруппирровать и в пределах каждой группы считать процесс стационарным.

Почему важно использовать все данные: например у нас есть данные месячные цены 250 акций за 30 лет. И за эти 30 лет было всего 2 кризиса с сильным падением и оба они пришлись на скажем 6й месяц. Если мы посчитаем годовую прибыль используя начало как 1 месяц и затем двигая окно с шагом 12 - мы пропустим эти ключевые данные о кризисе, и получим совершенно неверную CDF словно кризисов никогда не бывает.

Примечание - хвост распределения не менее важен чем центральная часть (а может и более важен), выбранный метод не должен перекашивать параметры хвоста в угоду центральной части. Т.е. оценки качества типа КолмогороваСмирнова которые измеряют восновном центральную часть использовать нельзя, лучше использоваться что то типа АндерсонДарлинг.

Пример, симуляция на Python

На картинке красные точки это вариант а) не пересекающиеся окна (часть данных упущена), черные точки вариант б) все данные, но неверно. https://i.imgur.com/APxPkWi.jpeg (как вставлять картинки? пишет "Не удалось определить размеры изображения.")

Код симуляции на Python и Julia https://gist.github.com/al6x/a769abfe18 ... 40f49f5d6e

 
 
 
 Re: Выжать максимум из временного ряда без overlap bias?
Сообщение05.08.2025, 10:48 
удалено

 
 
 
 Re: Выжать максимум из временного ряда без overlap bias?
Сообщение05.08.2025, 19:51 
Brizon
Вы там все на своих рынках думаете только об инструментах, а надо думать о том, где взять инсайдерскую информацию. В формуле, которая вычисляет среднее значение или скользящее среднее - никакой инсайдерской информации нет. Это общеизвестная информация, математика: берешь числа, складываешь, делишь на количество таких чисел, получаешь одно другое число.

 
 
 
 Re: Выжать максимум из временного ряда без overlap bias?
Сообщение07.08.2025, 11:20 
Я склоняюсь к варианту г) усреднению, мне кажется это лучшее что можно сделать. Построить 12 конгруэнтных (сдвинутых на +1, не пресекающихся окон), по ним построить 12 CDF, и построить финальную CDF = mean(CDF_i(x)), либо через усреднение квантили и затем инверсию в CDF. Используются 100% данных, и идея боль менее корректно выглядит.

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

Mihaylo: согласен. анализ рыночных данных не даст прибыль больше чем простое вложение в SP500 (если только ты не гений как Эд Торп или Джим Симонс). Но, он поможет а) изменить параметры прибыли на нужные тебе, например сделать прибыль более стабильной (используя страховку пут опционами например, а это требует понимания статистич параметры рынка) и б) может использоваться как prior для дальнейшего уточнения через например финотчетность, анализ транзакций инсайдеров и т.п. Т.е. - цель не прибыль, а максимально качественный prior. Или, это способ увидеть что происходит на рынке, своего рода построить карту местности, она не покажет где золото, но хотя бы вслепую блуждать не будешь.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group