И, правдоподобие для SV модели — его же не посчитать просто так. MCMC фиттинг это сглаживание (с заглядыванием в будущее, весь интервал 1-T). А правдоподобие требует фильтрации (без заглядывания в будущее, только 1-t). MCMC что я использую STAN этого неделает. Нужен Particle Filter что вообще отдельная тема.
я кажется слишком не понимаю, что именно вы делаете, я попробую конечно переварить как вы пришли к тому, что нужно фиттится на всём [1;T], но я вот сколько этим занимался всегда было рекуррентно… ну т.е. там был проход по всему интервалу, да, но без подглядываний ....
вообще я из этого ничего рабочего не вынес и ушел в «безарбитражные постановки» (это я вот сейчас собрал в кучу и БШ и APT и бонды) там и параметров поменьше и «правильный» хедж возникает более менее естественным путём
но попробую предложить мысль:
забудем на некоторое время про гарчи итд и рассмотрим модель с конечной памятью r(n+1) = \mu(r(n)… r(n-k)) + \sigma(r(n)… r(n-k))dW
r(n+1) = ln(P(n+1)/P(n))
дальше вариантов не так уж и много — скажем, что sigma^2 это какой-то полином второй степени от r(n)… r(n-k), да еще и не отрицательный
это сведётся к тому, что он представим как x^T S x + C
где S положительно определенная _диагональная_ матрица, C — какая-то константа сдвига, а x — вектор _ортогональной_ замены (поворота) переменных от r(n)..r(n-k), вобщем там что-то типа k(k-1)/2 + 1 параметров, если я не напутал (требование положительно-определенности уменьшает количество параметров в 2 раза)
идея в том, чтобы зафитить такую модель под данные, ей не нужны рекурентные цепочки, для расчёта её правдоподобия, подойдёт набор батчей из {r(n+1);r(n)..r(n-k)}
правдоподобие «всей кастрюли» будет равно сумме энтропий (логарифмов плотностей) батчей (может всё с минусом, в зависимости от конвенций) + то, что придёт от вашего инфо-критерия, это так или иначе что-то типа количества параметров k, но для начала я бы на инфокритерий забил, это тюнинг второго уровня
распределение r(n+1) — ну возьмите какое вам нравится, главное чтоб вы могли посчитать энтропию батча, задать ему центр \mu и скейл-фактор \sigma
далее вы ищите минимум суммарной энтропии (размера архива), подбирая параметры, хорошо бы, чтобы сама энтропия аналитически пару раз дифференцировалась, а это так и есть, если не брать какие-то совсем экзотические распределения
важно — вам нужна энтропия r(n+1), а не dW, если это не понятно — то нужно это понять
всё выше написанное это «разминка» для того, чтобы получить полином второй степени \sigma^2(r(n)..r(n-k))
если в нём коэффициенты при r(n-i) убывают «почти экспоненциально» и кросс продукты r(n-i)r(n-j) «почти отсутствуют» — поздравляю, вы посути можете свернуть это в рекурентное соотношение и получить XXX-GARCH сильно уменьшив кол-во параметров
и это не безнадёжная идея, вот почему: мы до сих пор ничего не говорили о dW, мы никак не предполагали его нормальность итд, а потому, нам ничто не мешает сказать, что в него вшит и джамп и толстые хвосты и ассиметрия итд, всё, что от него требуется это MdW = 0 и DdW = 1
я бы стартанул с предположения нормальности для «дебага», если хотите таки стьюдента для dW, то это требует его «отскейлить» до энтропии r(n+1)
то есть entropy(n+1) = ln(\sigma(r(n)...r(n-k))) + ln(pdf_stud(r(n+1)/\sigma(r(n)...r(n-k))) — это важно понять
кажется я столько написал, что это уже не переварить
но, если до сюда поняли, то вообще эту идею можно полностью отвязать от «предвыбора» распределения (однако контролируя MdW=0 DdW=1):
если сделать скейлинг r(n+1)/\sigma(...), то финальное правдоподобие это sum_i [ln(\sigma(r(n-i)..r(n-i-k))] + sum_i [ln(pdf(r(n-i+1)/\sigma(r(n-i)..r(n-i-k)))]
это значит, что pdf мы можем взять «какое получилось», и таки это медленнее, но не фатально, за один проход мы считаем \sigma(...) и r(n+1)/\sigma(...), далее чем-то надо аппроксимировать ln(pdf(r(n+1)/\sigma(...))
или, можно подумать в сторону какой-то параметризации асимметрии, так же как и \mu \sigma — skew_param(r(n)..r(n-k)) и его таки тоже есть шансы свернуть в рекурсию
ps: представьте, что dW имеет ассиметрию такую, что вниз может прям вот сильно — это создаст резкость в падении актива и последующий рост волатильности, как раз то что нужно. простые диффужн процессы не могут, у них или симметрично «лишняя» волатильность вверх или слишком плавный разгон, но для характерного поведения — нужна асимметрия — её вводят или джамп-процессом или корреляцией как в хестоне
pps: скорректируйте данные на дивы, если еще не скорректировали

