Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calculation and Display of Sharpe Ratio #243

Closed
wants to merge 6 commits into from

Conversation

simpsus
Copy link
Contributor

@simpsus simpsus commented Feb 15, 2015

Das ist konzeptionell wieder nicht so einfach, aber ich wollte die Zeit nicht ungenutzt verstreichen lassen.
Die Definition der Sharpe Ratio ist sehr einfach. Die Herausforderung ist wieder, dass wir die richtigen Zahlen vergleichbar miteinander bekommen.

Differenz von Ertrag zu risikofreiem Ertrag:
der Risikofreie Ertrag (ein Benchmark oder Kapitalmarktzins) ist als jährlicher Return angegeben (3% zb.) Das muss für den Vergleich der Tageswerte erst wieder umgerechnet werden. Mit der Faustregel dass es 250 Tage in einem Finanzjahr gibt können wir das machen.

Ertrag:
Der tägliche Ertrag ist meiner Überlegung nach nicht der durchschnitt des Deltas Arrays sondern ebenfalls die denormalisierung des gesamten Ertrags

Vola:
Die ist als täglicher Wert momentan berechnet ==> passt

Small Typo in TradeCalendar
@buchen
Copy link
Member

buchen commented Feb 15, 2015

Der Build meckert über die fehlende SharpeRatio Klasse:

SharpeRatio cannot be resolved to a type
Nicht eingecheckt?

Mit der Faustregel dass es 250 Tage in einem Finanzjahr gibt können wir das machen.

Klingt plausibel. Du hast aber auch die echten Daten (Anfangs- und Enddatum). Vielleicht kann man damit rechnen?

Ertrag:
Der tägliche Ertrag ist meiner Überlegung nach nicht der durchschnitt des Deltas Arrays sondern ebenfalls die denormalisierung des gesamten Ertrags

Diese Frage/Aussage verstehe ich nicht.
Man muss doch die durchschnittliche Überrendite berechnen. Die Überrendite errechnest Du doch durch den Vergleich der "delta" mit den risikolosen 3%, oder?

@simpsus
Copy link
Contributor Author

simpsus commented Feb 17, 2015

Sorry, da war ich zu schnell und habe auch nicht mehr gewartet bis travis fertig war.

Die letzte offene Frage ist, wie das "delta" zwischen erzielt und risikolos berechnet wird. Wir haben ja tägliche werte. Momentan berechne ich

sum(deltas) / sqrt(deltas.length) - risk-free/250

also den auf die gleiche weise normierten täglichen return.

@buchen
Copy link
Member

buchen commented Mar 7, 2015

@simpsus: ich habe mir jetzt die Change etwas näher angeschaut. Ich kann die momentan so nicht mergen. Da ist doch einiges passiert... Insbesondere PerformanceIndex nutzt das Predicate jetzt anders. Siehe auch filterReturnsForVolatilityCalculation. Könntest Du einen Rebase und Squash machen und noch mal pushen?

Warum SharpeRatio eine inner class von "Performance" machen? Ich denke das darf auch eine Top-level Klasse sein.

(Nicht unbedingt im ersten Change)
Dann müssen wir lösen, wie der risk-free return eingegeben werden kann. 3% ist ja schon ganz schön mutig wenn man für Bundesanleihen negative Zinsen zahlen muss. Vielleicht könnte man ein Zahnrad oben rechts einfügen und dem Benutzer die mit einem Menüpunkt "Set benchmark risk-free return" die Eingabe ermöglichen?

Und: durch den Filter weißt Du ja die echte Anzahl von Handelstagen im betrachteten Zeitraum. Bringt Dir das was? Oder rechnet man trotzdem mit 250 Handelstagen im Jahr? Weil der Berichtszeitraum ja auch sehr viel kleiner (oder grösser) sein kann?

* commit '2474990a985523819ef5517a0d6322e004a0292b': (29 commits)
  Update Sonarqube configuration
  Prevent reporting periods to extend into the future
  Fixed typo, changed 'duration low to high' to 'recovery time'
  Added note column to list of transactions in security view
  Implementation of portfolio-performance#253
  Fixed Typo
  Add default exchange to available exchanges if not present in result
  Fixed menus being active even though client file was not decrypted yet
  Fixed time grid for quarterly values (was shifted by one)
  Update to Eclipse 4.4.2
  Next development version 0.17.1-SNAPSHOT
  Release 0.17.0
  Added classifications to export options of return vs volatility
  Added option to extract text from PDF to help debugging PDF imports
  Fixed volatility of investment vehicles if sold during reporting period
  Added support for '.' as decimal separator when importing quotes from HTML
  Fix German labels 'Volatilität'
  Fix parsing of Deutsche Bank PDF documents
  Fix German label Maximum Drawdown Duration
  Fix lookup of latest quote from HTML table if 'use as historic' flag is set
  ...

Conflicts:
	name.abuchen.portfolio.ui/src/name/abuchen/portfolio/ui/messages_de.properties
	name.abuchen.portfolio/src/name/abuchen/portfolio/snapshot/PerformanceIndex.java
@simpsus
Copy link
Contributor Author

simpsus commented Mar 7, 2015

so, das mit dem squashen und rebasen habe ich bestimmt nicht richtig gemacht, aber ich hoffe so kann man das verwenden.

Risk-free return: absolut richtig; das ist so alles andere als gut. Die seiten die man bei google findet (wikipedia, investopedia) nennen staatsanleihen mit kurzer laufzeit. Das könnte man machen. Dann haben wir aber das Problem, dass man

  • ein ticker symbol oder generell ISIN finden muss die das abbildet und deren kurse man auch bekommen kann
  • dass das bei jedem vorliegt, also da ist ohne das man es added und es nicht gelöscht werden kann
  • dass an der stelle wo die sharpe ratio aufgerrufen wird zur verfügung steht

Aber abwegig ist das nicht. Insbesondere wenn das anklang findet oder allgemein als Benchmark ist das sicherlich interessant.

250-Thema:
die 250 haben mit der akkumulated oder delta reihe nichts zu tun. Die werden benutzt um den benchmark (1%) auf tägliche werte runter zu rechnen. Also die antwort auf die frage: wie hoch muss der return an einem tag sein, damit es aufs jahr gesehen 1% wird? ==> 1%/sqrt(250)
Wenn man stattdessen die anzahl der tageswerte nimmt, dann setzt man ja vorraus, dass die genau ein Jahr darstellen (also im Börsenjargon genau 250 sind)

@simpsus
Copy link
Contributor Author

simpsus commented Mar 7, 2015

Nachtrag zur risk-free return rate:
EURIBOR 3M: EU0009652783 (http://en.wikipedia.org/wiki/Euribor)
wenn ich den etf selektor auf comdirect anwerfe finde ich einen der 3 monate - 2 jahre abdeckt:
LU0444606700 Wenn ich mir die Entwicklung anschaue macht das schon sinn.
Evtl. macht auch ein Zinssatz mehr sinn: http://www.comdirect.de/inf/maerkte/zinsuebersicht.html

buchen pushed a commit that referenced this pull request Mar 8, 2015
Issue: #243
Signed-off-by: simpsus <bastian.kennel@gmail.com>
[squashed commits]
Signed-off-by: Andreas Buchen <andreas.buchen@gmail.com>

Signed-off-by: Andreas Buchen <andreas.buchen@gmail.com>
@buchen buchen mentioned this pull request Mar 8, 2015
@buchen
Copy link
Member

buchen commented Mar 8, 2015

Lass uns in #258 weiter machen.

@buchen buchen closed this Mar 8, 2015
@simpsus simpsus deleted the performance branch June 8, 2016 17:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants