I came across a BIS note about the estimation of the Nelson-Siegel-Svensson method. Currently, I'm trying to implement this. However, one step is not fully clear to me. Let me outline the steps of the algorithm to make the question self-contained. Although the note is very short (essentially 2 pages) and up to my question easy accessible.
The proposed algorithm works essentially the following way. For given $N$ bonds with prices $P=(P_1,\dots,P_N)$ and corresponding cash flow matrix $C\in\mathbb{R}^{N\times L}$ (so columns are maturities):
- Calculate spot rates $r_l$ for all maturities, $r=(r_1,\dots,r_L)$
- Calculate discount factors $d_l$, $d=(d_1,\dots,d_L)$
- Given a cash flow matrix of all bonds, calculate the theoretical prices as $\hat{P}=Cd$
- Using Newton-Raphson we calculate the estimated yield-to-maturity, $\hat{ytm}=(\hat{ytm}_1,\dots,\hat{ytm}_N)$
Now, for the actual objective there is the step which isn't fully clear to me. I quote directly the paper:
5. Computing the function $\sum_{i=1}^N (ytm_i-\hat{ytm}_i(b_t,P,C))^2$ (sum of squared yield errors) using first the Simplex algorithm and then the BHHH algorithm in order to determine a new $b_{t+1}$
Where $b_t$ is the current set of parameters to be estimated. Before stating this they add the following sentence
The optimisation is performed using a numerical non-linear optimisation to maximise a log-likelihood function subject to the constraint on the parameter $\beta_1$ (= overnight rate – $\beta_0$). First, we use the Simplex algorithm to compute starting values and then the Berndt, Hall, Hall and Hausmann (BHHH) algorithm to estimate the final parameters.
Question I understand that they somehow want to use the simplex method in 5. for getting better starting values and then run a ordinary non-linear optimisation using BHHH. However, the first part using the Simplex (linear programming) is unclear to me. Maybe someone with more expertise in optimisation can shed some light on this.