Welcome to THETAWIKI. If you like to create or edit a page please make sure to login or register an account. All registered users please make sure to provide a valid email address.

CDO

From ThetaWiki
Jump to: navigation, search

Product description

Collateralized Debt Obligation (CDO) is a type of asset-backed security or structured finance product. In a CDO, a portfolio of bonds, loans or other fixed income securities is gathered and used to create a new set of fixed-income securities.

This allows the use of a technique called "credit tranching" by which losses from the portfolio are repackaged. A CDO typically issues four classes of securities designated as senior debt, mezzanine debt, subordinate debt, and equity. Any losses from the portfolio of investments are applied first to the lower-ranked classes of debt then to the more senior ones. As a result, a range of products are created ranging from the risky equity debt to the relatively riskless senior debt.

ThetaML implementation

The model 'CDO' computes the CDO prices based on the first 30% (equity) tranche. The stock prices 'S' and the discount numeraire 'EUR' are processes simulated externally. The process 'S' is a multi-dimensional asset price process like Geometric Brownian Motion N-Dimensional. The discount numeraire 'EUR' is a stochastic process that has a dynamics as defined in the Vasicek model.

%% CDO model following the Vasicek Model
%% Price of first 30% (equity) tranche
model CDO
  import S    "Stock price"
  import EUR  "Discount numeraire"
  import B    "Barrier for default"
  import F    "Payment"
  import T    "CDO maturity"
  export P    "CDO value"
  export perc "Accumulated defaults"
 
  %at current time, set the option value to have the same distribution
  %as the variable 'V'; the ThetaML future operator '!' accompanying the
  %variable 'V' acts like a function on 'V', such that the values of 'V'
  %at current time remain to be determined at a later instance when 'V'
  %is assigned some values
  P = V!
 
  sumP = 0
  C = 0
  %loop 'T*4' times
  loop T*4
    %the ThetaML command 'Theta' passes time by '1/4' years
    Theta 1/4
    %loop through the arrays 'S' and 'C'; the variable 's' and 'c'
    %serve as array iterators that point to and take the value of the
    %corresponding elements of the arrays 'S' and 'C'
    loop s,c : S,C
    %knock-out asset if price < barrier
      if s < B
        c = 1
      end
    end
 
    %compute percentage of surviving assets
    perc = sum(C)/length(S)
    %compute payments for 30% equity tranche
    sumP =sumP + (max(0.3 - perc,0) * F ) * EUR
  end
 
  V = sumP
end