Как получить Posterior для нестационарного распределения? Или, может быть, правильнее называть это
калибровкой распределения?
Проблема в том, что распределение
не стационарно, поэтому получить нужно не просто posterior distribution, но
функцию преобразования, которая трансформирует априорное распределение в постериорное, изменяя его
среднее,
разброс,
асимметрию,
скошенность.
Дано: Нестационарный Гауссовский Микс как prior, и наблюдаемые значения.
Параметры: sigma1, sigma2, rate
Prior: 0.6N(rate, sigma1) + 0.4N(rate, sigma2)
Цель: найти наилучшее правдоподобие (Likelihood) апостериорного распределения по отношению к
return.
Данные:
Код:
sigma1 sigma2 rate return
0.091 0.231 0.018 0.08
0.097 0.223 0.018 0.28
...
Результат: некая функция преобразования
T, которая получив на вход prior (который будет разный для каждой строки данных), преобразует его в posterior PDF .
PDF может быть аналитической, смесью нормальных, либо численным приближением (векторная функция).
Код:
T(sigma1, sigma2, rate) => Posterior_PDF(x: number): number
Возможно использование байесовского или других методов, таких как
калибровка распределения,
quantile mapping и т.п. (по Байесовскому методу, было бы интересно услышать критику подхода, если например эта задача вообще не подходит для баесовских методов.)
Возможное решение:Эту функцию можно создать вручную, и улучшить likelehood но это очень времязатратно, и при любых изменениях входных данных (параметров), старую фунцкию трансформы приходится опять переделывать, тратить очень много времени заново подбирая функцию трансформы вручную.
Мне видится как возможное решение: финальное распределение будет гауссовской смесью из 3х компонент (оно достаточно гибкое и может симитировать требуемую форму финального распределения). И тогда можно задать функцию трансформы как преобразование вектора из 3х чисел, в вектор из 9ти чисел, через линейную (или не совсем линейную) регрессию:
Код:
T([sigma1, sigma2, rate]) => [weight1', mean1', sigma1', weight2', mean2', sigma2', weight3', mean3', sigma3']
Вопрос по линейной/нелинейной регрессии. При таком подходе, возникает проблема с исходными параметрами - sigma1 и sigma2 - проблема в том что они могут быть как sigma1 < sigma2 так и sigma1 > sigma2. И (я так думаю) функция преобразования должна знать какое больше а какое меньше. Получается что регрессия должна быть нелинейной с включением условия min/max, какой вариант регрессии может это сделать? (можно использовать хитрость и сделать предобработку исходных данных, подготовить их как sigma1=min(sigma1, sigma2), sigma2=max(sigma1, sigma2. Но, такая предобработка, меняя параметры местами, теряет связь с из весами (0.6 и 0.4), непонятно как это сделать).
P.S.
Данные — с финансового рынка: сигмы - оценки волатильности лог-доходностей акций, rate безрисковая ставка и return наблюдаемая лог-доходность акции.