Кокс-Ингерсолл-Росс (CIR)
Модель Кокса-Ингерсолла-Росса (CIR) можно использовать при оценке производных процентных ставок. Мы также называем моделью квадратного корня или однофакторной процентной ставкой, потому что термин диффузии позволяет избежать возможности отрицательных процентных ставок и изображается одним источником рыночного риска.
Параметр a соответствует скорости адаптации к среднему значению, b, и сигма к волатильности. Движения ставок следуют приведенному ниже SDE:
Модель CIR очень чувствительна к параметрам. Если модель используется для прогнозирования процентных ставок в течение периода времени, в котором волатильность выходит за рамки параметров, выбранных исследователем, CIR ограничена по своему охвату и надежности.
2 режима переключения состояний
Мы включили идею цепи Маркова, как если бы мы наблюдали более чем один тип движения ставок. Например, может быть нормальное состояние, когда ставки низкие и менее волатильные, и может быть другое состояние, вызванное экономической или сезонной активностью. Эти состояния менялись время от времени, как будто они сосуществовали. Чтобы выразить эту динамику, мы можем смоделировать ее с помощью матрицы перехода.
Таким образом, для матрицы перехода с двумя состояниями (состояние A и состояние B) вероятность получения процентной ставки от B при условии, что текущая процентная ставка, если от A равна a. Обратите внимание, что предельное распределение этой цепи Маркова показано ниже
Вот симуляция за 10 лет, чтобы показать, как модель CIR с двумя состояниями переключается между стадиями до и после коронавируса, а не просто за счет увеличения волатильности одной модели CIR.
r0 = 0.15 P = [[0.95, 0.05], [0.15, 0.85]] # P(X = b| X = a) = 0.95 a = [0.5, 0.2] # reversion speed b = [0.2, 3.0] # long term rate sigma = [0.1, 0.3] # volatility of 2 state CIR
Калибровка модели
Мы будем калибровать модель CIR, используя OLS.
Цена облигации
Основываясь на смоделированной процентной ставке с использованием CIR, мы могли бы получить цены облигаций с разным сроком погашения для каждого пути.
Ниже приведен пример. Сначала мы выбираем первый путь из смоделированного CIR, а затем строим график эволюции цен облигаций с разными сроками погашения в первые несколько дней.
t = 0 rates = cir1[sim_i] T = [1/12, 3/12, 6/12, 1, 2, 3, 5, 6, 8, 10, 15, 20, 25, 30] res = np.array(BondCurve(rates, t, T, a[0], b[0], sigma[0])) curve = np.log(1/res)/T