Shoutout for Atlassian

In the last two days I was able to download and install a great stack of software from Atlassian, which would theoretically allow a small team of 5-10 people to organize software development on enterprise-grade tools:

  • JIRA for issue tracking and planning, with support for Agile project management
  • STASH for hosting and integrating your git repositories
  • Crucible + Fish Eye for Code review
  • Bamboo for Continuous Integration
  • Confluence for Documentation

As a novice to server administration I was able to install the software, set the packages up for integrated work and import my projects from github – including issues, tags and so on, in about 10 working hours. Using the software is rather easy, maybe with the exception of the CI-server, which probable is more a sign of my lack of knowledge in this area, and a lack of templates in the R domain. And the price is a snap: for each package there is a starter licence setting you back 10$, covering 5-10 seats, which Atlassian will donate. So, if you are thinking of starting a startup, you could probably do worse than locking yourself into the Atlassian stack.

Veröffentlicht unter Allgemein | Verschlagwortet mit | Hinterlasse einen Kommentar

SAS on the road

I like some of the ideas what SAS might need that truck for:

Veröffentlicht unter Allgemein | Verschlagwortet mit | Hinterlasse einen Kommentar

PS: Clustering whiskies

I played some more with the app from yesterday, and deployed it with a more usefull user interface and some new functionality on http://ojessen.shinyapps.io/whiskyTastingsApp/. By the way, thanks to the guys at rstudio.com for hosting the app on their servers.

 

Veröffentlicht unter Allgemein | Verschlagwortet mit | Hinterlasse einen Kommentar

Clustering whiskies by taste

Lately I was wondering how to integrate my wordpress blog with a shiny app. This post is an example for the collaboration between these platforms following the advice from this thread in the shiny google group. Looking for a good example for an app, I stumbled upon this article from Luba Gloukhov on the Revolution blog. I shamelessly copied most of the code from Luba. Obviously the layout of this blog is not ideal for the layout of the app, but I will work this out on another day.

You can find the code for the app on github. I also made a standalone-app with some more functions on http://ojessen.shinyapps.io/whiskyTastingsApp/

Veröffentlicht unter Allgemein | Verschlagwortet mit | 1 Kommentar

Analyse einer Barriere-Anleihe

Ich bin heute über ein interessantes Angebot der Landesbank Berlin gestolpert, eine Barriere-Anleihe mit Referenz auf Daimler-Benz. Dieses Produkt verspricht in der Laufzeit 7% p. a., die in jedem Fall gezahlt werden. Interessant ist die Höhe des Rückzahlungsbetrags die vom Basispreis der Aktie zum Zeitpunkt der Emission (=100%) und der Barriere von 70% des Basispreis abhängt: Die Anleihe wird zu 100% zurückbezahlt, wenn der Kurs immer über der Barriere lag, oder, wenn der Kurs zwischenzeitlich unterhalb der Barriere lag, zum Zeitpunkt der Abrechnung jedoch auf oder über dem Basispreis liegt. Hat der Kurs in der Laufzeit die Barriere unterschritten, und liegt der Kurs unterhalb das Basispreises, erhält der Gläubiger einen Ausgleich in Aktien der Daimler-Benz.

Die Laufzeit beträgt 2 Jahre vom 27.11.13-27.11.15, wobei die Bewertung am 20.11.2015 erfolgt.

Die Frage, die ich mir stelle ist, welchen erwarteten Wert hat dieses Geschäft. Aufgrund der Komplexität erscheint mir eine stochastische Simulation als geeignete Methode.

Zunächst definiere ich die Auszahlungsfunktion bei Laufzeitende

payoutEnd = function(basis, barriere, kurse) {
    basis = as.numeric(basis)
    barriere = as.numeric(barriere)
    kurse = as.numeric(kurse)
    if (all(kurse >= barriere)) {
        res = kurse[1]
    } else if (last(kurse) > basis) {
        res = kurse[1]
    } else {
        res = last(kurse)
    }
    return(res)
}

Die Daten ziehe ich aus finance.yahoo.com

require(quantmod)
getSymbols("DAI.DE", from = "2000-01-01")
## Warning: downloaded length 176116 != reported length 200
## [1] "DAI.DE"

Beschreiben lässt sich der Kursverlauf der Daimler als jahrzehntelange Seitwärtsbewegung mit großen Schwankungen

chartSeries(DAI.DE)

plot of chunk unnamed-chunk-3

Für die Analyse verwende ich das Bootstrap-Verfahren. Das heisst, ich ziehe zufällig ein Startdatum, und ermittle, welchen Payout ich zwei Jahre später bekommen würde. Dabei vernachlässige ich einfachheitshalber, dass die Bewertung 1 Woche vor Laufzeitende erfolgt.

Hier der Algorithmus

funBootstrap = function(basisPerc, barrierePerc, kurseKomplett) {
    # Bestimme Start- und Enddatumg
    startDate = last(index(kurseKomplett))
    lastPossibleDate = seq(startDate, by = "-2 years", length.out = 2)[2]
    while (startDate >= lastPossibleDate) {
        startDate = sample(index(kurseKomplett), 1)
    }

    endDate = seq(startDate, by = "2 years", length.out = 2)[2]
    kurse = as.numeric(kurseKomplett[paste0(startDate, "/", endDate)])
    res = payoutEnd(basisPerc, barrierePerc, kurse/kurse[1])
    return(res)
}

Und hier die Ergebnisse für die Rückzahlung bei 30.000 Wiederholungen.

payouts = replicate(30000, funBootstrap(1, 0.7, DAI.DE[, 3]))

summary(payouts)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.309   0.710   1.000   0.850   1.000   1.000
hist(payouts)

plot of chunk unnamed-chunk-5

quantile(payouts, 0.05)
##     5% 
## 0.4578

Betrachte ich nur die Rückzahlung, würde ich zwar in mehr als der Hälfte der Fälle meine Einlage zurückerhalten, aber müsste im Mittelwert mit einer Rückzahlung in Höhe von nur 85.0184% rechnen. In 5% der Fälle würde ich allerdings nur 45.7779% zurückerhalten

Für die Anlageentscheidung aber ist der gesamte Cashflow in einer Barwertbetrachtung entscheidend. Im folgenden gehe ich von einer risikofreien Anlagealternative von 2% aus, was für 2 Jahre sicherlich schon optimistisch ist, insbesondere für Privatanleger.

riskfree = 0.02
dcf = 0.07/(1 + riskfree) + 0.07/(1 + riskfree)^2 + payouts
hist(dcf)

plot of chunk unnamed-chunk-6

summary(dcf)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   0.445   0.846   1.140   0.986   1.140   1.140
quantile(dcf, 0.05)
##     5% 
## 0.5937

In dieser Betrachtung liegt der Mittelwert des Barwerts des Cashflows bei 98.6094%, der Anleger müsste also trotz Kuponzahlung in Höhe von 7% mit einem Verlust von 1.3906% rechnen.

Der Erwartungswert des Geschäfts auf Basis der vergangenen gut 13 Jahre ist also negativ. Sollte man daher von vornherein von der Anlage abraten? Dies hängt zum großen Teil von der Einschätzung der zukünftigen Marktlage ab: Wenn man der Meinung ist, dass Daimler in den nächsten 2 Jahren zumindest nicht weiter als 30% unter den aktuellen Kurs fällt, dann wäre dies sicherlich eine Möglichkeit, um einen vergleichsweise hohen Kupon zu erhalten.

Zumdem geht das Modell davon aus, dass sich der Kurs der Aktie prinzipiell so verhält wie in den letzten 13 Jahren. Diese Zeit war durch 2 große Einbrüche karakterisiert, in denen der Kurs um 2/3 bzw. ¾ zurückging. Teilt man die Einschätzung, dass die Zentralbanken für die nächsten zwei Jahre bei ihrer Politik des quantitative easing bleiben, dann ist für diese Zeit nicht mit einem massiven Einbruch der Märkte zu rechnen.

Veröffentlicht unter Allgemein | Verschlagwortet mit , , | Hinterlasse einen Kommentar