8月終了時点で7勝1敗の時、年間収益率は?
概要
1950年以降2023年までのS&P500月間収益率データを年次月次の行列とする。
上記行列のうち1月から8月分までを抜き出す。
各行に対して、マイナス月数をカウントしする。それに該当年西暦及び年次収益率を付加しデータフレームを作る。
データフレームからマイナス月数=1の年のみを抽出し年次収益率を平均、出力する。
同じく抽出した収益率をヒストグラムにする。
注意:データフレームをselect しただけではvector化できないのでデータフレーム→行列→ベクターの順で変換する。
ソース
データの生成
monthlyReturn(GSPC)["1950::2023"] %>% matrix(.,nrow=12) %>% t() -> m
# m[,-1*seq(9,12,1)] -> m
l <- c(); y <- c(); p <- c()
for(i in seq(1,74,1)){m[i,seq(1,9,1)]->n; y <<- c(y,i+1949); l <<- c(l,length(n[n<0])) ;p <<- c(p,as.vector(yearlyReturn(GSPC)[as.character(i+1949)]))};as.data.frame(cbind(y,l,p) ) -> df
dplyr::filter(df,l==1) %>% dplyr::reframe(.,mean(p))
dplyr::filter(df,l==1) %>% dplyr::select(.,p) %>% as.matrix() %>% as.vector() %>% hist(.,breaks=10)
dplyr::filter(df,l==1) %>% dplyr::select(.,p) %>% as.matrix() %>% as.vector() %>% mean()
dplyr::filter(df,l==1)
dplyr::slice(as.data.frame(m),(dplyr::filter(df,l==1))$y-1949)
ヒストグラムの作成
データが以下の通りの時。該当するのは13例。平均は23.1%。
以下の会話を通してAIを使用してコードを生成する。
生成されたコード
# Load necessary library
library(ggplot2)
# Create a vector with the provided data
data <- c(0.22629052, 0.45022174, 0.38059505, 0.23128552, 0.12969879, 0.15633272, 0.02027503,
0.26306703, 0.34110656, 0.20263666, 0.13619432, 0.19419966, 0.26892739)
# Create a data frame
df <- data.frame(value = data)
# Plot the histogram
ggplot(df, aes(x = value)) +
geom_histogram(binwidth = 0.05, boundary = 0, color = "black", fill = "blue") +
scale_x_continuous(limits = c(0, 0.5), breaks = seq(0, 0.5, by = 0.05)) +
labs(title = "Histogram of Data", x = "Value", y = "Frequency") +
theme_minimal()
結果
データの生成 その2
dfにrownames が付与されている時。
dplyr::slice(as.data.frame(m),as.numeric(dplyr::filter(df,l==1) %>% rownames())) %>% dplyr::select(.,y) %>% as.matrix() %>% as.vector() %>% as.character() %>% yearlyReturn(GSPC)[.]
この記事が気に入ったらサポートをしてみませんか?