[R-SIG-Finance] YieldCurve package

Joshua Ulrich josh.m.ulrich at gmail.com
Mon Aug 12 18:37:30 CEST 2013


Hi Jaimie,

The YieldCurve package works much better if you use a time-series of
rates/maturities.  For example, using xts:

# create xts object with a custom "maturity" attribute
x <- xts(t(NEW.VECT.1[,2]), Sys.Date(), maturity=NEW.VECT.1[,1],
  dimnames=list(NULL, paste("X", NEW.VECT.1[,1], sep="")))
xNSParam <- Nelson.Siegel(rate=x, maturity=attr(x,'maturity'))
xFitted <- NSrates(xNSParam, attr(x,'maturity'))

If you just want your code to work, convert NSParameters to xts before
you call NSrates:
fitted.rates= NSrates(xts(NSParameters,Sys.Date()), NEW.VECT.1[,1])

Best,
--
Joshua Ulrich  |  about.me/joshuaulrich
FOSS Trading  |  www.fosstrading.com


On Sun, Aug 11, 2013 at 10:56 AM, jaimie villanueva
<jaimie.villanueva at gmail.com> wrote:
> Hi there,
>
> I'm facing some problems since I've updated  the YieldCurve package from <<
> YieldCurve_4.0 >> to << YieldCurve_4.1 >>
>
> I would like to get Nelson Siegel rates. To do so, I'm using
> "Nelson.Siegel" function in order to compute beta and lambda parameters and
> "NSrates" function to compute Nelson Siegel rates. The thing is that the
> following code I'm about to show You, did work in the past with my older
> version of the package, but It doesn't work now.
>
> The problem occurs when setting up Nelson Siegel function:
>
> This is the code:
>
>> Sys.info()
>                      sysname                      release
>    version
>                    "Windows"                      "7 x64" "build 7601,
> Service Pack 1"
>                     nodename                      machine
>      login
>                     "JVC-PC"                     "x86-64"
>      "JVC"
>                         user               effective_user
>                        "JVC"                        "JVC"
>
>   library(RODBC)
>>  library(TSA)
>>  library(grDevices)
>>  library(YieldCurve)
>>  library(xts)
>>
>>
>>  #########  CONFIGURACIÓN INICIAL
>>  #
>>
>>  plazos.NG=array(c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
> + 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,
> + 42,43,44,45,46,47,48,49,50))
>>
>>
>  CURVA.EUR=array(c(1.415943,1.302205,1.380278,1.533634,1.725201,1.920058,2.083162,2.214956,
> +   2.32518,2.422087,2.591747,2.735049,2.739023,2.644585,2.543769))
>>
>>  m=length(plazos.NG)
>>  CURVA.EUR.NG=array(NA,c(m))
>>  plazos.EUR=array(c(1,2,3,4,5,6,7,8,9,10,12,15,20,25,30))
>>
>>  #
>>  #########
>>
>>  NEW.VECT.1=cbind(plazos.NG,CURVA.EUR.NG)
>>  NEW.VECT.2=cbind(plazos.EUR,CURVA.EUR)
>>
>>
>>  # CREAMOS EL VECTOR CON TIPOS
>>
>>  l= length(plazos.EUR)
>>  posicX=1
>>  posicY=1
>>
>>  for(k in 1:l)
> +  {
> + # BUSCAMOS LA POSICION DE CADA PUNTO DE LA CURVA.
> +
> + while(NEW.VECT.1[posicY,1]!= NEW.VECT.2[posicX,1]){posicY=posicY+1}
> + NEW.VECT.1[posicY,2]=NEW.VECT.2[posicX,2]
> + posicX=posicX+1
> + posicY=posicY+1
> +
> +  }
>>
>>  NSParameters= Nelson.Siegel(rate=NEW.VECT.1[,2],maturity=NEW.VECT.1[,1])
>>  fitted.rates= NSrates(NSParameters, NEW.VECT.1[,1])
>
> *Error in xts(matrix(0, nrow(Coeff), length(maturity)), order.by =
> time(Coeff)) : *
> *  order.by requires an appropriate time-based object*
> *
> *
> Any help would be kindly appreciated.
> Thanks in advance.
>
> --
> *Jaimie.*
>
>         [[alternative HTML version deleted]]
>
>
> _______________________________________________
> R-SIG-Finance at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.



More information about the R-SIG-Finance mailing list