Damit hier mal was sinnvolles gepostet wird! Welche Programmiersprache das ist dürft ihr raten. Die meisten werden eh davor stehen wie der Spacko vor der Schlange. Manches ist nicht notwendig, habe ich aber zur Verwirrung und zum Spielen drin gelassen. Das Bildchen könnt ihr zur Übung selbst machen und auch die Farben dürft ihr selbst interpretieren. Ist zwar nicht so schön wie in dem einen Beispiellink, soll aber auch nur ein Startpunkt für weitere, tiefere Analysen sein. Wer Fehler findet darf sie behalten und dafür Korrekturen hergeben.
library(anytime);
library(data.table);
library('depmixS4');
table <- read.csv(file="bitstampUSD.csv"); # Pfad anpassen
colnames(table) <- c("EPOCH", "PRICE", "VOLUME");
table <- cbind(table, "DATE"=anydate(table[,1]));
DT <- data.table(table);
x <- DT[,list(MEAN_PRICE = weighted.mean(PRICE,VOLUME)),by=DATE];
open <- aggregate(PRICE ~ DATE, table, function(x){return(head(x, 1))});
close <- aggregate(PRICE ~ DATE, table, function(x){return(tail(x, 1))});
x <- cbind(x, "OPEN_PRICE"=open$PRICE);
x <- cbind(x, "CLOSE_PRICE"=close$PRICE);
x <- cbind(x, "RETURN"=(x$CLOSE_PRICE - x$OPEN_PRICE)/x$OPEN_PRICE);
change <- c(NA, as.integer(diff(x$MEAN_PRICE) > 0));
color <- as.integer(x$CLOSE_PRICE-x$OPEN_PRICE > 0);
x <- cbind(x, "CHANGE"=change);
x <- cbind(x, "COLOR"=color);
# build and fit the HMM
hmm <- depmix(RETURN ~ 1, family = gaussian(), nstates = 3, data=x);
hmmfit <- fit(hmm, verbose = FALSE);
post_probs <- posterior(hmmfit);
matplot(post_probs[,-1], type="l");
Noch ein paar Quellen dazu:
https://api.bitcoincharts.com/v1/csv/http://web.stanford.edu/class/stats366/exs/HMM1.htmlhttps://www.quantstart.com/articles/hidden-markov-models-for-regime-detection-using-rhttps://www.fool.com/knowledge-center/how-to-calculate-return-on-indices-in-a-stock-mark.aspx