Seite 3 von 3

Re: Julia anyone?

Verfasst: Sa Feb 04, 2023 3:45 pm
von Athomas
OK, kann auch Rotwein (ungekühlt) sein
Assmannhäuse Höllebesch!

Beim "Umschreiben" des Programms habe ich mich stark an Deine Vorlage gehalten, da müsste man meine Ergänzungen noch etwas glätten.
Auch müsste man - wenn die exakte Reproduzierbarkeit für Dich wichtig ist - noch etwas investieren.
Bitte beachten: das läuft so auf Linux (Ubuntu) - was bei Windows (wg. parallel) passiert, kann ich nicht sagen...

Code: Alles auswählen

library(Rcpp)
library(parallel)

#-------------------------------------------------------------------------------

cppFunction('double Simulation(double vStart, double SStart, double dt, double r, 
                                double q, double theta, double kappa,  double sigma,
                                NumericVector randv, NumericVector randS) {
  int n = randv.size();
  double v = vStart;
  double S = SStart;
  double vneu = 0;
  double Sneu = 0;
  double dt_vt = 0;
  for(int i = 0; i < n; ++i) {
    dt_vt = kappa*(theta - v)*dt + sigma*sqrt(v*dt)*randv[i];
    vneu = v + dt_vt;
    if (vneu <= 0) 
      vneu = vneu - 2*dt_vt;
    Sneu = S*exp((r - q - v/2)*dt + sqrt(v*dt)*randS[i]);
    v = vneu;
    S = Sneu;
  }
  return S;
}')

#-------------------------------------------------------------------------------

einWert <- function(lnr, S, Tm, r, q, v0, theta, rho, kappa, sigma){  
  NSteps <- floor(Tm*252)
  dt <- Tm/NSteps
  rand.v <- rnorm(NSteps)
  rand.h <- rnorm(NSteps)
  sqrho  <- sqrt(1 - rho^2)
  rand.S <- rho * rand.v + sqrho * rand.h
  Wert   <- Simulation(v0, S, dt, r, q, theta, kappa, sigma, rand.v, rand.S)
  return(Wert)
}

#-------------------------------------------------------------------------------

HestonSV_MC <- function(S, Tm, r, q, v0, theta, rho, kappa, sigma, NPaths, seed){
  set.seed(seed)
  
# Hier mc.cores auf die verfügbaren Threads ändern!  
  
  Results <- mclapply(1:NPaths, FUN="einWert", S=S, Tm=Tm, r=r, q=q, v0=v0, theta=theta, 
                    rho=rho, kappa=kappa, sigma=sigma, mc.cores = 40)
  return(unlist(Results))
}

#-------------------------------------------------------------------------------

r <- 0.01
Tm <- 1

St <- HestonSV_MC(S=100, Tm=1, r=0.01, q=0.02, v0=0.04, theta=0.25, rho=-0.5, 
                  kappa=4.0, sigma=1.0, NPaths=1000000, seed=606060)

Results <- data.frame(Strike=seq(80,120,10))
Results$PriceCall <- NA
Results$PricePut <- NA

for(i in 1:nrow(Results)){
  Results$PriceCall[i] <- exp(-r*Tm)*mean(pmax(St - Results$Strike[i], 0))
  Results$PricePut[i] <- exp(-r*Tm)*mean(pmax(Results$Strike[i] - St, 0))
}

print(Results)

Re: Julia anyone?

Verfasst: Sa Dez 02, 2023 11:28 am
von student
Hallo!

Nach ein paar Monaten wieder etwas zu Julia! Ich habe an der Julia-Con in Eindhoven (91.12.2023) teilgenommen und basierend auf den Vorträgen, fühle ich mich in meinem Eindruck bestätigt. Im Vergleich zu vergangenen Veranstaltungen, spielte die statistische Datenanalyse keine Rolle. Es drehte sich alles um Simulationen, entweder über pure Mathematik oder mit Unterstützung durch Neuronale Netze. Auch ging es um Julia-Internes, wie z. B. warum ein compiliertes Julia-Skript einen recht großen Umfang hat.

Die Vorträge fanden nur auf PowerPoint-Ebene statt, ich vermisste z. B. die Visualisierung als Screen-Video einer Simulation/Optimierung durch einer der vorgestellten Pakete/Methoden. Eine Real-time-Darstellung ist immer "gefährlich" und habe ich auch nicht erwartet.

Es gab 21 Vorträge, inkl. der Sponsoren. Die Örtlichkeit war ansprechend und das Umfeld war positiv. Grenzwertig war der Kaffee-Bereich für Sprecher. Das hat eine innere Kommunikationsgrenze aufgebaut. M. E., schwang die Botschaft "Tut etwas für Julia und die Community, sonst führt Julia ein Nischendasein!" mit. Ist aber nur mein Eindruck.

Re: Julia anyone?

Verfasst: Sa Dez 02, 2023 1:13 pm
von bigben
Schöner kleiner Bericht und schön, dass Du dran bleibst. In meiner persönlichen Bubble taucht Julia eher seltener auf als vor einem Jahr, aber das hat vielleicht gar nichts zu bedeuten.

Viele Grüße,
Bernhard