这篇文章的目的是将我的日常工作和R相结合。

如果我们有一些根据固定概率随时间在状态之间切换的对象,我们可以使用马尔可夫链 来模拟该对象的长期行为。

一个很好的例子是抵押贷款。在任何给定的时间点,贷款都有违约概率。总的来说,我们将这些称为“转移概率”。假设这些概率在贷款期限内是固定的。

R语言使用马尔可夫链Markov Chain, MC来模拟抵押违约_R语言

举个例子,我们将看一下传统的固定利率30年期抵押贷款。让我们假设每个当前贷款的时间T有75%的可能性保持,10%的违约机会,15%的机会在T + 1时间内偿还。这些转换概率在上图中列出。

R语言使用马尔可夫链Markov Chain, MC来模拟抵押违约_R语言_02

由于我们知道转移概率,我们可以预测在30年期间任何给定点的贷款百分比。假设我们从T = 0开始,有100个当前贷款,0个违约和已付清贷款。在时间T + 1,我们知道(根据我们的转换概率),这100个中的75个将保持。但是,15笔贷款将被清偿,10笔贷款将被违约。由于我们假设转移概率在贷款期限内是不变的,我们可以用它们来查找当前贷款的时间t = 2。在目前T + 1的75笔贷款中,56.25笔贷款将保持在T + 2(75 * .75 = 56.25)。

R语言使用马尔可夫链Markov Chain, MC来模拟抵押违约_编程开发_03

R语言使用马尔可夫链Markov Chain, MC来模拟抵押违约_编程开发_04

如果我们重复这个过程28次(在代码中完成)并绘制点,我们得到上面绘制的时间序列。更多的贷款得到了偿还而不是违约。


使用马尔可夫链来模拟抵押贷款有许多缺点。这个模型假设我在我的例子中使用的所有100个贷款的转移概率是相同的。实际上,贷款并不相同(例如,借入一笔贷款的信用评分可能比另一笔贷款高得多。这种差异会使前者的违约机会低很多),而且转移概率在贷款的整个生命周期中并不是一成不变的。然而,我将该曲线与我在工作中的经验数据进行了比较,结果非常相似。

 

非常感谢您阅读本文,有任何问题请联系我们!