Julia anyone?

Interessantes ohne bestimmtes Thema!

Moderator: student

Benutzeravatar
student
Beiträge: 609
Registriert: Fr Okt 07, 2016 9:52 am

Re: Julia anyone?

Beitrag von student »

Hallo Bernhard,

ein paar gute Wort zum Thema. Wie gesagt, wir werden sehen was mit Julia passiert.

Ich habe ab und an den Eindruck, dass das Beschäftigen mit Julia für mich vertane Zeit war. Aber etwas positives kam für mich dann doch raus, nämlich die Beschäftigung mit C/C++. Dieses "alte Schachtschiff" halte ich tatsächlich neben R (für die Datenanalyse) für eine optimale Programmiersprache. Aber damit will ich keine neue Diskussion lostreten! :lol: Das geht sogar soweit, dass ich an einem Video "R & RCpp" arbeite...

Von mir ebenfalls einen guten Rutsch und ein gutes neues Jahr!
Viele Grüße,
Student
-----------------------------------------------------------------------------------------------------------------------
faes.de, Datenanalyse mit R & das Ad-Oculos-Projekt
Das Ad-Oculos-Projekt auf YouTube

Habe Mut, dich deines eigenen Verstandes zu bedienen! (Kant)
schubbiaschwilli
Beiträge: 229
Registriert: Di Jun 27, 2017 12:09 pm

Re: Julia anyone?

Beitrag von schubbiaschwilli »

Gude!

Ich beschäftige mich ja mit Finanzmathematik, und da aktuell mit Parameterschätzung, also Numerik.
In diesem Rahmen habe ich mal julia vs. python vs R verglichen, und auch Auswertungen, Analysen, Plots usw. erstellt - Siehe:
https://thepathisthegoalblog.wordpress. ... ity-model/
bzw.
https://thepathisthegoalblog.wordpress. ... g-formula/
(der Vergleich)
https://thepathisthegoalblog.wordpress. ... x-options/
(ein paar Auswertungen zu den mit julia berechneten Parametern - Aus gutem Grund mit R)

Folgendes habe ich für mich mitgenommen:
julia und r unterscheiden sich nicht viel in der Geschwindigkeit - In den ersten beiden Beispielen von oben ist R je nach verwendeter Methode zur Integration schneller oder langsamer, und das ist dann auch das Ergebnis bei der Numerik (Optimierung mit Nelder-Mead; sieht man im zweiten Beispiel): Verwendet man die schnellere Methode zur Integration ist R bei der Numerik schneller, bei der langsameren halt nicht. (Und ja, R nutzt an dieser Stelle Fortran.)
Was das Erstellen von Plots usw. angeht, ziehe ich R vor - Einfach, weil es mehr bietet. Der Code von julia kommt mir manchmal komisch vor, aber das war bei R am Anfang auch so, deswegen möchte ich da nichts zu sagen. Ich habe aber den Eindruck, dass bei den Themen, mit denen ich mich beschäftige, R mächtiger ist als julia - Es gibt mehr Arten von Plots, Tests, Algorithmen, Verfahren usw.usf.

Dank&Gruß
Schubbiaschwilli
schubbiaschwilli
Beiträge: 229
Registriert: Di Jun 27, 2017 12:09 pm

Re: Julia anyone?

Beitrag von schubbiaschwilli »

Kleiner Nachtrag:
Aus Gründen hab' ich mal die Laufzeiten einer Monte-Carlo-Simulation des HestonSV-Modells in Gnu R, julia und python gemessen. Das HestonSV-Modell ist in der Praxis ein übliches Modell, um Optionen zu bewerten, und beinhaltet ein CIR (https://de.wikipedia.org/wiki/Wurzel-Di ... oss-Modell), was bei Zinsmodellen ebenfalls Standard ist.

Falls jemand meinen gaaaz tollen Blog nicht lesen möchte (https://thepathisthegoalblog.wordpress. ... o-pricing/) hier kurz die Ergebnisse: julia ist ungefähr 25x schneller als Gnu R, und etwa 50x schneller als python.
Allerdings habe ich den Code nicht mit wasauchimmer optimiert - Sind auch nur ein paar verschachtelte Schleifen und ein wenig Kram drumherum.

Dank&Gruß
Schubbiaschwilli
Athomas
Beiträge: 675
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Julia anyone?

Beitrag von Athomas »

Ich hab den R-Part aus Neugier mal unbesehen laufen lassen wollen, :( !

Code: Alles auswählen

Error in nrow(Values) : object 'Values' not found
schubbiaschwilli
Beiträge: 229
Registriert: Di Jun 27, 2017 12:09 pm

Re: Julia anyone?

Beitrag von schubbiaschwilli »

Oh, hups... Danke für's Ausprobieren, und dass du einen Fehler gefunden hast... Ich hatte Value durch Results ersetzt - Zumindest ab und zu...

Code: Alles auswählen

HestonSV_MC <- function(S,T,r,q,v0,theta,rho,kappa,sigma,NPaths,seed=606060){
	set.seed(seed)

	NSteps <- floor(T*252)
	Results <- rep(0, NPaths)
	dt <- T/NSteps
	
	for(Path in 1:(NPaths)){
		St <- S  # Stock price
		vt <- v0 # Volatility

	for(Step in 1:NSteps){
		Wt1 <- rnorm(1)
		Wt2 <- rho * Wt1 + sqrt(1 - rho^2) * rnorm(1)
		
		St <- St*exp((r - q - vt/2)*dt + sqrt(vt*dt)*Wt1)

		dt_vt <- kappa*(theta-vt)*dt + sigma*sqrt(vt*dt)*Wt2
		vt <- vt + dt_vt
		
		if(vt <= 0) vt <- vt - 2*dt_vt
	}
	Results[Path] <- St
	}

	return(Results)
}

r <- 0.01
T <- 1

St <- HestonSV_MC(S=100,T=T,r,q=0.02,v0=0.04,theta=0.25,rho=-0.5,kappa=4.0,sigma=1.0,NPaths=10^6)

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*T)*mean(pmax(St - Results$Strike[i], 0))
	Results$PricePut[i] <- exp(-r*T)*mean(pmax(Results$Strike[i] - St, 0))
}

print(Results)
Antworten