IT

R: Baglæns induktion i et binomialtræ

04. oktober 2011 af hamudenben (Slettet) - Niveau: Universitet/Videregående

Goddag,

Først og fremmest: Er ikke sikker på, om dette spørgsmål skulle have været oprette i IT eller Matematik. Det kan snart komme ud på et.

Efter at have læst rapporten Design of Contingen Capital with a Stock Price Trigger for Mandatory Conversion af Suresh Sundaresan og Zhenyu Wang, har jeg besluttet at (forsøge at) konstruere det binomialtræ (den binomial-model, om man vil), som de beskriver på side 16. Deres papir kan hentes på SSRN.

Jeg har udført min programmering i R, men frygt ikke - hvis du sidder med den bid programmering, der kan hjælpe mig videre, så kan jeg godt læse c, vb, matlab osv... er dog ingen specialist.

Okay - det jeg ved, er at jeg skal bruge et binomialtræ med 2500 steps. Den del er til at klare, og nedenfor er både de input, jeg har anvendt samt træet for udvikling af aktivet.

 

# Sundaresan
# Binomial Tree

A0 <- 100 #Asset value at t=0
vol <- 0.06 #Asset volatility
B0 <- 90.43 #Bond value at t=0
r <- 0.02 #Risk-free rate
CC <- 6 #Par value of CoCo-bonds
steps <- 10 #Steps in the model (=2500. Usually less when testing)
years <- 5 #TTM for debt
DaysPerYear <- 250 #Trading days in one year
t <- (years*DaysPerYear)/steps #t-step
u <- exp(vol*sqrt(t)) #The multiplicator for an up-movement
d <- exp(-vol*sqrt(t)) #The multiplicator for an down-movement

K <- 2 #Trigger-level (2% of A0 = 2)
m <- CC/K #Conversion ratio

Bemærk, at jeg har antaget, at de har gjort som ovenfor med u, d og m. Hvis det jeg skriver er lidt volapyk, så fred være med det. Læs endelig videre.

Herfra konstrueres binomialtræet, der viser the mulige udviklinger for aktivs værdien:

A <- matrix(0,steps, steps)
A[1,1] <- A0 #Making sure the first value (at t=0) is A0

for(i in 2:steps)
{
A[1,i] <- A[1,i-1]*u
for(j in 2:i) A[j,i] <- A[j-1,i-1]*d
}

Så trækker jeg værdien af senior-gælden fra. Således ved jeg i hvilke celler/states, hvor banken er gået fallit, og hvor den er i live (celleværdi = 0 = fallit):

 

B <- A-B0
B[B<0] <- 0


Nu finder jeg de mulige værdier af egenkapitalen, hvis konvertering er/ikke er en ligevægt. Og jeg finder også de mulige værdier for CoCo-obligationen, når konvertering er/ikke er en ligevægt. Det burde ikke være noget problem. Standard binomialtræ-tilgang. Jeg finder slut-værdierne for egenkapitalen (S) ved ingen konvertering som ligevægt, og derefter slut-værdierne for S, når konvertering er en ligevægt. På samme vis behandles CoCo-obligationen:

 

SNoConv <- B-6
SNoConv[SNoConv<0] <- 0

SYesConv <- B/(1+m)
CCYesConv <- m*B/(1+m)
CCNoConv <- CCYesConv

for(j in 1:steps)
{
for(i in 1:steps)
{
if(SNoConv[i,j] <= 2) CCNoConv[i,j] <- m*SYesConv[i,j]
else CCNoConv[i,j] <- 6
}
}

Og nu vil jeg så arbejder min vej tilbage i træet, for at finde værdien i dag:

WB_SNoConv <- matrix(0,steps,steps)
WB_SYesConv <- matrix(0,steps,steps)
WB_CCNoConv <- matrix(0,steps,steps)
WB_CCYesConv <- matrix(0,steps,steps)
WB_SNoConv[,steps] <- SNoConv[,steps]
WB_SYesConv[,steps] <- SYesConv[,steps]
WB_CCNoConv[,steps] <- CCNoConv[,steps]
WB_CCYesConv[,steps] <- CCYesConv[,steps]

for(j in steps:1)
{
for(i in steps:1)
{
WB_SNoConv[i-1,j-1] <- (WB_SNoConv[i,j]+WB_SNoConv[i-1,j])/2 * exp(-(r/(DaysPerYear))*t)
}
}

Her har jeg forsøgt med bare én af variablerne, nemlig særdien af egenkapitalen (S), når ingen konvertering (NoConv) er en ligevægt..... det giver bare ikke det rigtige resultat :(

Sidder der nogle hajer derude?

Alle inputs er velkomne - også hvis noget skal uddybes.

På forhånd tak.


Skriv et svar til: R: Baglæns induktion i et binomialtræ

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.