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.
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