まえがき
こんにちは、さつま芋です。
FXを続けていれば期待値という用語を聞いたことがあると思います。
しかし、大抵は概念(期待値=確率×確率変数)に留まる内容です。
今回は期待値をなんとか実務に活かせられないか、一例を考えてみたいと思います。
期待値を可視化
2023年6月のドル円1時間足を陽線・陰線に分けて本数と変化量を調べてみました。
上段がローソク足の本数割合、中段がローソク足実体の平均変化量、下段が期待利得です。
考え方としては、本数の割合を確率、価格の平均変化量を確率変数として、それらの積を期待値としています。
期待値を観察
期待値の図(下段)を再掲します。
そもそも、相場で期待値を求めること自体が無謀ですが、占いくらいの目安にはなると思います。
ただし、当たらない占いと捉えたほうが無難かもしれません。
つまり、期待しすぎないほうが賢明だということです。
次の図は、期待値を逆数にしたグラフです。
いわば絶望値(?)として考えると、見え方は違ってきます。
サンプルコード
あくまで備忘録としてコードを載せておきます。
library(dplyr)
library(gridExtra)
library(ggplot2)
library(reshape)
df %>%
group_by(Time) %>%
summarise(positive=sum(Change>0, na.rm=TRUE), negative=sum(Change<0, na.rm=TRUE),
positive_change=mean(Change[Change>0], na.rm=TRUE),negative_change=mean(Change[Change<0], na.rm=TRUE)) %>%
mutate(bull = positive * positive_change) %>%
mutate(bear = negative * negative_change) %>%
mutate(expected_value = bull+bear) %>%
as.data.frame() -> to_plot
print(to_plot)
to_plotA <- to_plot[,c("Time","positive","negative")]
meltedA <- melt(to_plotA,id="Time")
p1 <- ggplot(meltedA, aes(x=Time,y=value,fill=variable)) +
geom_bar(stat="identity",position = position_dodge(width = 0.6), alpha=0.9, width = 0.6) +
scale_y_continuous(labels = scales::percent_format(scale = 1)) +
scale_fill_manual(values=c("#00BFC4","#F8867D"),labels=c("Positive", "Negative"))+
labs(title="Positive and Negative Candles by Hour",y="Proportion",fill="Type")+
theme(plot.title = element_text(hjust = 0.5))
to_plotB <- to_plot[,c("Time","positive_change","negative_change")]
meltedB <- melt(to_plotB,id="Time")
p2 <- ggplot(meltedB, aes(x=Time,y=value,fill=variable)) +
geom_bar(stat="identity",position = position_dodge(width = 0.6), alpha=0.9, width = 0.6) +
scale_fill_manual(values=c("dodgerblue", "red"),labels=c("Positive", "Negative")) +
labs(title="Positive and Negative Candles by Hour",y="Change",fill="Type")+
theme(plot.title = element_text(hjust = 0.5))
to_plotC <- to_plot[,c("Time","expected_value")]
p3 <- ggplot(to_plotC, aes(x=Time,y=expected_value)) +
geom_bar(stat="identity", alpha=0.9, width = 0.6, aes(fill = ifelse(expected_value > 0, "Positive", "Negative"))) +
scale_fill_manual(values=c("Positive"="blue","Negative"="red")) +
guides(fill = guide_legend(reverse = TRUE)) +
labs(title="Positive and Negative Candles by Hour",y="Expectation",fill="Type")+
theme(plot.title = element_text(hjust = 0.5))
grid.arrange(p1, p2, p3,nrow = 3)
print(to_plot)
あとがき
誰もが必死に分析しているにもかかわらず、個人トレーダーの6割は四半期で負けているそうです。
皮肉を言えば、コインを投げたほうが無用な思い込みは排除できそうです。
まぁ実際の敗因は、おそらく分析ではなく資金管理にあるとは思うのですが…
私見ながら、資金管理を守るところで本人の哲学が試される気がします。
以上、さつま芋でした。