ich schreibe momentan meine Thesis und muss mich nun zum ersten mal mit Programmieren beschäftigen. Ich habe einen Code für R, welcher dazu dient Wandelanleihen zu Bewerten.
Leider habe ich absolut keine Ahnung vom Programmieren und habe mich erst seit einigen Tagen damit beschäftig. Daher hoffe ich, dass Ihr mir helfen könnt.
Ich habe das Problem, dass wenn ich die Funktion mit Werten eingebe ständig " ERROR: object 'xyz' not found" als Fehlermeldung bekomme.
Was jemand wo das Problem liegt?
Ganz unten ist die Funktion mit Werten, wenn ich auf Run gehe zeig er sich mir in der Console einfach an ohne etwas zu rechnen. Falls jemand ein Link für ein gutes Tutorial (wenn möglich kostenlos, da armer Student) hat wäre ich auch sehr dankbar.
Gruß
Maxel
Code: Alles auswählen
CCBond <- function(S0, FV, ttm, r, sigma, L, k , CallPrice,rho, c, PD, CallYN)
#definition der Intervalle und Längen'
dt <- 1/12
n <-ttm/dt+1
n <- ceiling(n)
#ceiling verwendet ein einzelnes numerisches Argument n und gibt einen numerischen
#Vektor zurück, der die kleinsten ganzen Zahlen enthält,
#die nicht unter den entsprechenden Elementen von n liegen
u <- exp((r-(sigma^2)/2)* dt + sigma *sqrt(dt))
d <- exp((r-(sigma^2)/2)* dt - sigma *sqrt(dt))
p = 1/2
gamma <- -log(1-PD)*S0
#Aktienkurs entwickeln und Ausfallwahrscheinlichkeit
S <- lambda <- rep(0, times(n*n)
dim(S) <- c(n,n)
dim(lambda) <- c(n,n)
S[1,1] <- S0
lambda[1,1] <- gamma/S[1,1]
for (j in 2:n) {
for (1 in 1:j) {
if(i==j){
S[i,j]= S[i-1,j-1]*d* exp(lambda[i-1,j-1]*dt)
lambda[i,j] <- gamma/S[i,j]
} else {
if(i<j){
s[i,j] = S[i-1,j-1]*u* exp(lambda[i,j-1]*dt)
lambda[i,j] <- gamma/S[i,j]
} else {
S[i,j]= 0
lambda[i,j] <- 0
}
}
CCValue <- NoCall<- Y <- Call <- rep(0,times=n*n)
dim(CCValue) <- c(n,n)
dim(NoCall) <- c(n,n)
dim(Y) <- c(n,n)
dim(Call) <- c(n,n)
for (j in seq(from = n, to = 1, by =-1)) {
for (i in 1:j) {
if (j==n){
CCValue[i,j]<- max(FV, k*S[i,j])
} else
{
NoCall[i,j] <- exp(-r*dt)*(exp(-lambda[i,j]*dt)*(p*CCValue[i,j+1] + (1-p)
*CCValue[i+1,j+1])+ (1-exp(-lambda[i,j]*dt))
*(1-L)*FV)
Coupon <- exp(-(r+lambda[i,j])*dt)*c*FV*(ttm/n)
if (Call == 1) {
Call[i,j] <- max(k*S[i,j],CallPrice)
Y[i,j]<- (NoCall[i,j]/Call[i,j])-1
if (Y[i,j]<0) {Y[i,j]=0 }
} else {
Call[i,j] <- 0
Y[i,j] <- 0
}
CCValue[i,j] <- Coupon + exp(-(rho*Y[i,j])*dt)* NoCall[i,j] + (1-exp(-(rho*
Y[i,j]*dt)))* Call[i,j]
}
}
}
CCValue[1,1]
}
CCBond(23,100,3.6,0.015,0.1,0.677,12,0,7,0.03,0.076,0)