0

このコードは、 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が存在する場合、生成される曲線が多いほど(使用される結合の数に関係なく)、可能であればその日付のその結合を無視したいと思います。これが不可能な場合は、その日付を無視することもできますが、多くの曲線が生成されなくなります。 CleanPriceデータ

4

1 に答える 1

2

これは、問題の一般的な解決策です。仕事用のコンピューターにそのツールボックスがないため、IRFunctionCurve.fitSvenssonコマンドで機能するかどうかをテストできません。

[row,~]=find(gcm3.data.CleanPrice(:,1)==datenum('11-May-2012'));
col_set=find(~isnan(gcm3.data.CleanPrice(row,2:end)));
CleanPrices=transpose(gcm3.data.CleanPrice(row,col));
于 2012-08-13T18:58:36.503 に答える