如何最小化 Nelson-Siegel 參數形式
問題
我得到了以下函式來最小化(wrt $ \theta $ ) $$ f= \sum_{k=1}^5 \Big [ \sum_{i=1}^{N_k} CF_{k, i} \cdot e^{-r(t_{k, i}, \theta)\cdot t_{k, i}} - P_k^* \Big]^2 $$ 在哪裡 $ \theta = (\beta_0, \beta_1, \beta_2, \lambda) $ 和 $$ r(t, \theta) = \beta_0 + \beta_1 \big(\frac{1-e^{-\frac{t}{\lambda}}}{\frac{t}{\lambda}} \big) + \beta_2 \big(\frac{1-e^{-\frac{t}{\lambda}}}{\frac{t}{\lambda}} - e^{-\frac{t}{\lambda}} \big) $$
上下文
我們有 5 只債券,它們的現金流量, $ CF_{k, i} $ , 和市場價格, $ P_k^* $ . 所有這些值都以數字的形式提供給我們。
我嘗試
使用 python 應用牛頓法。但是,我很確定這種方法在這裡不適用,我需要另一種最小化算法。
誰能建議哪種算法最適合這種功能??
幾年前,當我們使用該模型時,我們使用了差分進化,並且效果很好。請參閱校準 Nelson-Siegel-Svensson 模型。至少在標準版本中,最佳梯度搜尋(使用隨機初始值)也能很好地工作。請參閱數值優化中關於“良好起始值”的註釋。如果您也願意使用 R,NMOF 包文件中有許多程式碼範例。
我建立了類似於您嘗試在這裡使用多年前在 VBA 中使用 Bbg 債券報價來估計各個行業的收益率曲線的東西。對於參數的校準,我使用了 Nelder Mead。它不需要一階和二階導數或它的估計量,例如 Newton-Ralphson 等。