Hull-White модели и MatLab

Slawik75

Не знаю, сюда ли. Но вроде, самое близкое.
В общем, вопрос такой. Предположим, у меня есть кривая доходности в момент ноль (ставка в зависимости от срока инвестирования). А еще есть однопараметрическая Hull-White модель и ее параметры (volatility и mean reversion). Я хочу получить кучу сценариев развития кривой доходности во времени (ну, например, через год кривая будет такая, через 2 - такая и т.д. и все это тысячу раз).
Вот тут первый вопрос. Я не понимаю, как Hull-White модель это дает. Она же короткую ставку моделирует.
И заодно второй вопрос. А как мне это в MatLab'е сделать? Пытался гуглить, но, очевидно, задаю неправильный вопрос. Там что-то гораздо более навороченное все время описывают.

vitamin8808

) в момент времени [math] $t_{sim}$ [/math] у тебя будет засимулирована short rate, через неё выражаются цены всех бондов для любой maturity. Цены бондов и дают тебе твою кривую.
2) По второму вопросу — тебе сам код нужен или просто рассказать что там делать?
Там не очень сложно всё.

vitamin8808

Конкретно модель имплементируется так:
У тебя есть даты в которые надо знать кривую (fixing dates и даты, в которые будут происходить выплаты (coupon/payment dates).
В дни выплат cashflow моделировать ничего не надо по следующей причине:
Допустим что выплата V происходит во время T, а её размер становится известен в момент времени t.
Тогда можно расписать [math]$E[V \cdot df(0, T)]$[/math] как [math]$E[V\cdot df(0,t)\cdot df(t, T)]$[/math], потом переписать это как
[math]$$E[E[V\cdot df(0,t)\cdot df(t, T) | F_t]] = E[V\cdot df(0,t) E[df(t, T) | F_t]]= E[V\cdot df(0,t)\cdot B(t, T)]$$[/math]
внутреннее мат ожидание получается просто ценой бонда [math]$B(t,T)$[/math], и выражается через short rate r(t). Но df(0,t) там стохастический, его симулировать надо.
Чтобы уметь считать цены контрактов надо дисконтировать, и придётся симулировать
сразу пару [math]$\left(r(t \int_0^t r(s)ds\right)$[/math].
Ну выпиши какое у этой пары совместное распределение (в [math]$t_i$[/math] conditional on [math]$t_{i-1}$[/math] и просимулируй по всем fixing dates. Работает всё очень быстро, так как точное распределение явное и простое.

Slawik75

2) По второму вопросу — тебе сам код нужен или просто рассказать что там делать?
Там не очень сложно всё.
Код, конечно, лучше. И еще важно, какие ToolBox'ы он использует.
Пока втыкаю в ответ на первый вопрос (из следующего поста)

Badyss

а кто-нибудь может на пальцах объяснить в каких случаях какую из моделей, моделирующих ставки, лучше использовать?
мы на работе баловались Black-Derman-Toy, чем её применимость лучше/хуже чем Hull-White например?

vitamin8808

а кто-нибудь может на пальцах объяснить в каких случаях какую из моделей, моделирующих ставки, лучше использовать?
мы на работе баловались Black-Derman-Toy, чем её применимость лучше/хуже чем Hull-White например?
Ну я ими не торговал, мы их клиентам продаём, так что когда какая лучше не знаю.
Но навскидку:
1) BDT модель вроде (если я всё правильно помню) имеет такую особенность, что независимо от значения short rate в момент времени t, в момент t+eps с положительной вероятностью short rate у тебя в бесконечность убежит.
2) HW модель принадлежит к классу affine gaussian моделей, они хорошо изучены, и легко обобщаются.
Например ту же HW модель можно делать многофакторной, можно к ней stocks прикрутить ("поженить" с Black-Scholes или вообще сделать n валют, с FX, со стоками, и всё это довольно легко симулируется, так как распределения все красивые.
Но так как она гауссовская, с положительной вероятностью short rate может оказаться отрицательной,
причём если rate получился отрицательным, то discount factor это будет экспонента, и он может
"забить" всё остальное, так как растёт быстро. Например, при большой волатильности floating rate note может отрицательную цену иметь из-за этого (но оооочень большая сигма нужна, так что на практике это не важно).
Вообще эта модель простая, и хорошо изучена, и если какой косяк, то его легко отловить, в отличие от какой-нибудь навороченной версии LIBOR модели со стохастической волатильностью.

Vbif1948

Из того что знаю я, сейчас почти все большие дядьки для прайсинга и хеджинга используют различные (под себя заточенные и откалиброванные) вариации BGM model (она же Libor market model).
Для целей риск-менеджмента (VaR,сценарный анализ) до сих пор используют какую-нибудь short rate model , у которой цены считаются аналитически. Так как надо считать часто и быстро.

Ola-la

Вообще эта модель простая, и хорошо изучена, и если какой косяк, то его легко отловить,

от подобной аргументации все беды современных финансов :grin:

Slawik75

В общем, не очень понял твой ответ. Ты предлагаешь моделировать ставку от времени t до времени T через df(0,t) и df(0,T которые в свою очередь получаются через интеграл короткой ставки? Тогда непонятно, зачем моделировать всю кривую в каждый момент времени. Вся информация будет содержаться в в кривой на момент ноль. А ставки в будущем просто пересчитываться как forward rate.
Или я неправильно тебя понял?

vitamin8808

В общем, не очень понял твой ответ. Ты предлагаешь моделировать ставку от времени t до времени T через df(0,t) и df(0,T которые в свою очередь получаются через интеграл короткой ставки? Тогда непонятно, зачем моделировать всю кривую в каждый момент времени. Вся информация будет содержаться в в кривой на момент ноль. А ставки в будущем просто пересчитываться как forward rate.
Или я неправильно тебя понял?
Нет, чего-то ты понял не так. Я не говорил про ставку от t до T. Я там просто объяснял, почему
переменные модели нужно симулировать только в "fixing dates" (дни, в которые нужно знать какой-то rate а в дни выплат симулировать ничего не надо, они вообще произвольные могут быть. То есть твои Монте Карло пути будут содержать информацию о переменных модели только в fixing dates, большего тебе не надо.
Это на самом деле общая фича всех interest rate models. Хотя дискаунт факторы в модели стохастические, фактор от fixing date до собственно выплаты симулировать не надо, это просто цена бонда в модели.
Что нужно симулировать для дисконтирования, так это df(0,t что и будет
[math]$exp(-\int_0^t r(s)ds)$[/math]. Ну и саму short rate надо симулировать. Так что хоть модель
и однофакторная, симулировать придётся две величины (short rate и её интеграл).
Соответственно в HW 2 factor придётся 4 величины симулировать. Вот это я имел в виду.
Будет время на выходных, я тебе выпишу распределения которые там нужны, после этого код написать — полчаса работы.

Slawik75

Спасибо. Буду благодарен.
ЗЫ. На самом деле, я видел объекты в MatLab'е, которые соответствуют моделям типа HW. И мне показалось, что ответ там есть прямо-таки готовый (нужны только правильные toolbox'ы). Поэтому захотелось кое-что переделать из существующих не самых оптимальных программок.
В теме бол-мен новичок (хотя back ground вникать позволяет так что будет полезно больше внимания уделить концепту.

vitamin8808

Что нужно симулировать для дисконтирования, так это df(0,t что и будет
exp(-интеграл от short rate). Ну и саму short rate надо симулировать. Так что хоть модель
и однофакторная, симулировать придётся две величины (short rate и её интеграл).
Соответственно в HW 2 factor придётся 4 величины симулировать. Вот это я имел в виду.
Кстати, я видел как в одном продукте чуваки заимплементировали HW модель: делали малый шаг по времени, и симулировали только short rate. Для дисконтирования использовали эти малые шажки. За это, конечно, руки отрывать надо :)

Slawik75

За это, конечно, руки отрывать надо :)
Да, у нас таких "специалистов" тоже хватает. Во многом приходится разбираться самому. И писать гневные письма.

vitamin8808

Ну так вот. Допустим тебе надо сгенерировать один Монте Карло путь,
и нужно знать rates в даты [math]$t_i$[/math].
Эту модель часто записывают как
[math]$r(t)=x(t)+\varphi(t)$[/math], где
[math]$dx(t)=-at+\sigma dW, \quad x(0)=0$[/math], a [math]$\varphi(t)$[/math] — детерминистическая функция.
Для начала применим одни трюк, который позволяет вместо пары (x, integral of x) симулировать пару [math]$(\sigma W,x)$[/math].
Так проще формулы в конце получаются.
Можно и в лоб без этого трюка симулировать пару (rate, integral
просто формулы будут чуть сложнее. Советую потом попробовать и в лоб, как упражнение.
Навесив интеграл от [math]$t_{i-1}$[/math] до [math]$t_i$[/math] на второе уравнение, получим после переноса членов, что
[math]$$\int_{t_i}^{t_{i-1}}x(s)ds=\frac{1}{a}[\sigma(W(t_i)-W(t_{i-1} - (x(t_i)-x(t_{i-1}]$$[/math].
Таким образом интеграл от х выражается через x и W.
ОК, чтобы просимулировать пару [math]$(\sigma W, x)$[/math] по всем точкам [math]$t_i$[/math]
надо просто заметить, что они multivariate normal, и если путь до [math]$t_{i-1}$[/math] сгенерирован, то
[math]$$E(\sigma W(t_i) | F_{t_{i-1}}) = \sigma W(t_{i-1})$$[/math]
[math]$$E(x(t_i) | F_{t_{i-1}}) = x(t_{i-1}) e^{-a(t_i-t_{i-1})}$$[/math]
[math]$$Var(\sigma W(t_i) | F_{t_{i-1}})=\sigma (t_i-t_{i-1})$$[/math]
[math]$$Var(x(t_i) | F_{t_{i-1}})=\sigma^2 H(2a, t_i - t_{i-1})$$[/math]
[math]$$Cov(\sigma W(t_i x(t_i) | F_{t_{i-1}})=\sigma^2 H(a, t_i - t_{i-1})$$[/math],
где [math]$H(a, t)= \frac{1-e^{-at}}{a}$[/math].
Формулы эти доказываются через свойства интеграла Ито, ничего сложного.
Ну вот, а уж 2 случайные гауссовские величины по этой формуле ты сможешь засимулировать, я думаю?
Точное распределение ведь дано.
Только вместо псевдослучайных советую Соболевские числа использовать, цены контрактов гораздо быстрее будут сходиться.

wendy8

На пальцах всё очень просто:
(говоря "прогноз", я имею в виду оценку распределения будущего значения - не важно, риск-нейтрального или реального; понятно, что прогноз собственно ставок - это по другому адресу ;-) ).
1) Если тебе просто нужна какая-нибудь модель для того, чтобы вставить в какой-нибудь отчёт результаты какого-нибудь моделирования и дальше эту цифру нигде не использовать, то ты берёшь то, что у всех на слуху (CIR или HW - отличный вариант).
2) Если тебе нужен прогноз мгновенной процентной ставки на достаточно короткий срок (не больше года лучше подобрать достаточно навороченную short rate модель. Их много и они неплохо справляются с этой задачей.
3) Если тебе нужен прогноз всей срочной структуры процентных ставок (кривой доходности а не только мгновенной ставки, то ни в коем случае не использовать short rate модели. Если срок, на который нужен прогноз, не очень велик, можно посмотреть в сторону whole yield curve моделей а-ля HJM или LIBOR.
4) Если нужен прогноз на длительный срок (а такие задачи возникают, например, у пенсионных фондов или в задачах управления долговым портфелем на гос. или муниципальном уровне то можно сразу идти и убиваться о стенку. Потому что не просто нет моделей, которые могут адекватно решить эту проблему, так ещё и применение разных моделей даёт очень сильно разный результат.
5) Отдельно про модели типа Hull-White (double plus модели которые содержат функцию времени, подгоняемую по данным. Когда я вижу такую модель, я всё время вспоминаю Коперника и его эпициклы. Когда стало понятно, что планеты движутся не по окружностям, решили, что они движутся по маленьким окружностям, центры которых движутся по окружностям вокруг Солнца. Потом пришлось добавить ещё один цикл... и ещё... говорят, дошло до 17(!). Так вот, эта зависимость от времени в моделях - чистой воды эпициклы. Косвенно это подтверждается тем, что такие модели нужно калибровать ежедневно, притом параметры меняются весьма существенно. Применение таких моделей для регулярного анализа - под бооольшим вопросом.
6) Если ты строишь интегрированную систему риск-менеджмента, и от модели требуется не только давать прогнозы сценариев, но и участвовать в каких-то других расчётах, возможно, совместно с другими моделями, то крайне важно, чтобы используемая модель давала пристойные мгновенные формы кривых доходностей. Моделей, которые одновременно умеют и давать пристойную кривую доходности, и нетривиальную стохастическую динамику, немного ввиду довольно прикольного фундаментального ограничения, выведенного в самом конце 20-го века. Если что, одна из таких моделей (бесконечномерная, а-ля HJM) составляет мой диссер.

wendy8

По первому - соглашусь. По второму - только если расчёты проводятся "в стол" или по принуждению регулятора. Для расчёта разумного VaR по портфелю облигаций (ещё не дай бог - различного кредитного качества) ты не обойдёшься short rate моделью, как ни крути.

wendy8

Кстати, я видел как в одном продукте чуваки заимплементировали HW модель: делали малый шаг по времени, и симулировали только short rate. Для дисконтирования использовали эти малые шажки. За это, конечно, руки отрывать надо
Зато можно легко обобщить на множество других моделей :) . И в будущем - обосновать необходимость перехода на другую модель: смотрите, у нас отстойная производительность, а точность - ещё хуже; мы можем практически не жертвуя ни тем, ни другим, забабахать что-нибудь гораздо более навороченное (и получить на это ещё денег / оправдать свою зарплату ещё на некоторое время)... Ну или просто - в следующей версии реализовать по-нормальному и преподнести как зашибись оптимизацию ;).