I want to estimate the Nelson Siegel parameters of daily WTI Crude Oil Futures Term Structure. It consists of 12 contracts with maturity of approximately 1-12 months. I have 2 datasets. The first one contains the 12 settlement prices of each day. I use nearest futures data, where CL1 represents the contract that is closest to expiry and CL12 is the 12th nearest. My second dataset is the daily „day to maturity“ of CL1-CL12. For CL1 for example, they range from 32 days to 0 and jump again to approximately 30. This is repeated until the end of the dataset. CL2 ranges logically from around 60 to 30.
I have 3 questions regarding the estimation of the 3 parameters (Level, Slope, Curvature) of the Nelson Siegel Model.
In the description of the Nelson.Siegel function of the YieldCurve Package in R, it says that the maturity vector should be in months. Since my DTM dataset is in days should I just divide all numbers by 30? I have done this but it now gives me a positive slope on a day when the term structure (CL1-CL12) is negative.
If I have to convert the DTM data to months frequency, should I divide by 30 (avg days in month) or 21 (avg trading days in month)? My data is trading days only.
Since my DTM dataset sometimes has the value of 0 for CL1 (the day the future expires), the Nelson Siegel function outputs 3 zeros for each parameter. Is there a way to fix that?
Many thanks for answering my questions!