0

I want to solve a dynamic set of equations that from a algebraic perspective a = bX, where a is a vector of 1's, b is a vector of discount factors and X is a lower triangular matrix of cash flows. I want to solve for X; however, as far as my understanding goes I can't solve for X since b is does not have an inverse. Therefore, I am trying to write a system of equations by a fuction as the following:

Aux2 = as.data.frame(matrix("X", nrow = nrow(Tasas), ncol = 1))
colnames(Aux2) = "Cash Flow"


for (j in 1:nrow(Tasas)){
  
  Func = function(X){
    
    Aux2 %*% Tasas$`Discount Factor`[1:j] + 1 * Tasas$`Discount Factor`[j] - 1
    
  }
  
  uniroot(Func, c(0,1))$root * 360/28
  
}

where

Tasas$'Discount Factor' = c(0.991, 0.982, 0.973, 0.965, 0.957, 0.951)

As the mathematical equation must be:

1 = X* DF1 + X* DF2 + ... + (1+X)* DFn

being DF the discount factor at time n and X the coupon payment of the instrument.

I that regard I get this output:

Error in Aux2 %*% Tasas$`Discount Factor`[1:j] : 
  requires numeric/complex matrix/vector arguments
  • 1
    Is the math equation correct? ie `Xb1 + Xb2 + Xb3 ... + (1+X)bn`? Why do you have `(1+X)bn = bn + Xbn`? also if X is just a vector, is this not just `X(b1+b2+b3...)`?? Something is not correct – Onyambu Jun 05 '23 at 19:52

0 Answers0