このコードは、 fitSvensson関数に従って債券の価格を設定します。一部の債券に価格が欠落しているNaNエントリがある日付が選択された場合に、MatlabにCleanPriceベクトルのNaN値を無視させるにはどうすればよいですか。ゼロ曲線を導出するときに、その結合を完全に無視するにはどうすればよいですか?NaNの多くの解決策は、補間またはゼロへの設定に頼っているようですが、これは誤った曲線につながります。
Maturity=gcm3.data.CouponandMaturity(1:36,2);
[r,c]=find(gcm3.data.CleanPrice==datenum('11-May-2012'));
row=r
SettleDate=gcm3.data.CouponandMaturity(row,3);
Settle = repmat(SettleDate,[length(Maturity) 1]);
CleanPrices =transpose(gcm3.data.CleanPrice(row,2:end));
CouponRate = gcm3.data.CouponandMaturity(1:36,1);
Instruments = [Settle Maturity CleanPrices CouponRate];
PlottingPoints = gcm3.data.CouponandMaturity(1,2):gcm3.data.CouponandMaturity(36,2);
Yield = bndyield(CleanPrices,CouponRate,Settle,Maturity);
SvenssonModel = IRFunctionCurve.fitSvensson('Zero',SettleDate,Instruments)
ParYield=SvenssonModel.getParYields(Maturity);
データは次のようになります。各列は債券、列1は日付、要素はクリーン価格です。ご覧のとおり、データの最初の部分には、まだ価格が設定されていない債券のNaNが多数含まれています。ある時点以降、すべての債券に価格が設定されますが、残念ながら1日または2日の価格が欠落している場合があります。理想的には、NaNが存在する場合、生成される曲線が多いほど(使用される結合の数に関係なく)、可能であればその日付のその結合を無視したいと思います。これが不可能な場合は、その日付を無視することもできますが、多くの曲線が生成されなくなります。