配当株投資の魅力: Rコードで知る韓国株式市場の10大配当株の分析
皆さん、こんにちは!今日はとてもエキサイティングなテーマでお届けします。 それは「配当金投資」についてです。 皆さんも毎月コツコツと入ってくる配当金の魅力に惹かれたことはありませんか?それとも、まだ配当金投資が何なのかよくわからないという方も、ご安心ください。今日の記事を読み終えたら、配当株投資の世界にどっぷりハマること間違いなし!さらに、以下のような視覚化能力も身に付くこと間違いなしです。

今回の記事では、Rプログラミングを使って韓国株式市場の10大配当株を深く分析します。 株価の変動から配当利回り、そして株のボラティリティまで!本当に充実した情報でいっぱいです。それでは、一緒に配当株投資の世界に入りましょう。
配当株投資、なぜ魅力的なのか?
配当株投資は、多くの投資家に愛されている投資戦略のひとつです。 なぜでしょうか?それは、安定した収益が期待できるからです。 株価の上下とは別に、企業が利益の一部を株主に分配するのが配当金です。 このような配当を継続的に受け取ることができる株を配当株といいます。
でも、好きな銘柄を選んで投資すればいいのでしょうか? そうではありません。 良い配当銘柄を選ぶためには、さまざまな要素を考慮する必要があります。 今日はRコードを使って、Rコードで 韓国株式市場の代表的な10の配当銘柄を分析しながら、どのような点に注目すべきかを見てみましょう。

Rコードで配当株を分析する
さて、そろそろ本格的にRコードを見ていきましょう。 コードが少し長く見えますが、心配しないでください。一つ一つ丁寧に説明します。
# 必須ライブラリの読み込み
library(quantmod)
library(ggplot2)
library(reshape2)
library(dplyr)
library(gridExtra)
library(scales)
library(furrr) #並列処理ライブラリ
# 分析する株式銘柄情報の設定
stocks_info <- data.frame(
symbol = c("005930.KS", "017670.KS", "033780.KS", "000270.KS", "051910.KS"、
"032640.KS", "030200.KS", "000810.KS", "035250.KS", "316140.KS")、
name = c("Samsung Electronics", "SK Telecom", "KT", "Kia", "LG Chem"、
"LG Uplus", "KT&G", "Samsung Fire", "POSCO Holdings", "Woori Financial")
)コード解説
- まず、必要なRパッケージを呼び出します。 これらのパッケージは、株式データ収集、データ処理、可視化などに使用されます。
stocks_infoデータフレームを作成し、分析する10銘柄のシンボルと名前を保存します。これらの会社は韓国証券市場で代表的な配当株として知られている企業です。
それでは、株式データを収集して分析する関数を定義してみましょう。
# 株式データ収集関数の定義
get_stock_data <- function(symbol) { {
tryCatch({ {
# 最近10年間のデータ収集
data <- getSymbols(
symbol, src = "yahoo"、
from = Sys.Date() - years(10)、
to = Sys.Date()、
auto.assign = FALSE
)
# データチェック
if (is.null(data)) stop("No data retrieved.")
# 現在の日付以降のデータ削除
data <- data[index(data) <= Sys.Date()]].
# 年間データに変換
annual_close <- to.yearly(Cl(data))
annual_open <- to.yearly(Op(data))
annual_high <- to.yearly(Hi(data))
annual_low <- to.yearly(Lo(data))
annual_volume <- to.yearly(Vo(data))
#の配当金処理(ない場合は0で埋める)
annual_dividends <- if ("配当金" %in% colnames(data)) {
to.yearly(data$Dividends)
} else {
xts(rep(0, nrow(annual_close)), order.by = index(annual_close))
}
cbind(annual_open, annual_high, annual_low, annual_close、
annual_volume, annual_dividends)
}, error = function(e) {
warning(paste("Data fetch failed for", symbol, ":", e$message))
return(NULL)
})
}コード解説
get_stock_data関数は、指定された株式シンボルについて、Yahoo Financeから最近10年間のデータを取得します。- データを年単位で変換し、始値、高値、安値、終値、取引量、配当情報を含みます。
- エラー処理により、データ収集に失敗してもプログラムが中断されないようにします。
こうして収集したデータを視覚化する関数も作ってみましょう。
# データ可視化関数
plot_stock_data <- function(data, stock_info) { { if (is.is.null(data) { )
if (is.null(data)) { {
warning(paste("No data available for", stock_info$name))
return(NULL)
}
#データフレーム生成及び指標計算
df %
mutate(
DividendYield = (Dividends / Close) * 100, #の配当利回り
AnnualReturn = (Close / lag(Close) - 1)* 100, # 年間収益率
VolatilityRange = High - Low #のボラティリティ範囲
)
# NA値を削除
df <- na.omit(df)
# 最新トレンドカラーを適用
close_color <- "#1f77b4"
dividend_color <- "#2ca02c"
return_color <- "#d62728"
volatility_color <- "#9467bd"
volume_color <- "#8c564b"
#の株価と取引量チャートを作成する
p1 <- ggplot(df, aes(x = Year)) + p1 <- ggplot(df, aes(x = Year))
geom_line(aes(aes(y = Close), color = close_color, size = 1) + + geom_line(aes(y = Close), color = close_color, size = 1)
geom_point(aes(aes(y = Close), color = close_color) + geom_point(aes(y = Close), size = 1)
geom_text(aes(y = Close, label = round(Close, 0))、
vjust = -0.6, size = 3) + vjust(vjust = -0.6, size = 3)
geom_col(aes(y = Volume/max(Volume, na.rm = TRUE) * max(Close, na.rm = TRUE))、
fill = volume_color, alpha = 0.3) +
scale_y_continuous(
name = "価格 (円)"、
labels = scales::comma、
sec.axis = sec_axis(~./max(df$Close, na.rm = TRUE) * max(df$Volume, na.rm = TRUE)、
name = "ボリューム")、
expand = expansion(mult = c(0.05, 0.1))
) + ↑...
labs(title = paste(stock_info$name, "(", stock_info$symbol, ")")、
subtitle = "年間売買代金と出来高") +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold")、
axis.title = element_text(size = 10)、
legend.position = "bottom"
)
#の収益率チャートを作成
p2 <- ggplot(df, aes(x = Year)) + + p2 <- ggplot(df, aes(x = Year))
geom_line(aes(y = DividendYield, color = "Dividend Yield"), size = 1) + + geom_line(aes(y = DividendYield, color = "Dividend Yield"), size = 1)
geom_point(aes(aes(y = DividendYield), color = dividend_color) + geom_point(aes(y = DividendYield), size = 1)
geom_text(aes(y = DividendYield, label = round(DividendYield, 1))、
color = dividend_color, vjust = -0.6, size = 3) + geom_line(aes(y = DividendYield, label = round(DividendYield, 3))
geom_line(aes(aes(y = AnnualReturn, color = "AnnualReturn"), size = 1) +
geom_point(aes(aes(y = AnnualReturn), color = return_color) + geom_text(aes(y = AnnualReturn), vjust = -0.6) + size = 1)
geom_text(aes(y = AnnualReturn, label = round(AnnualReturn, 1))、
color = return_color, vjust = 1.5, size = 3) +
scale_color_manual(values = c("配当利回り" = dividend_color、
"年間リターン" = return_color)) +
labs(y = "レート(%)", color = "メトリクス") +
scale_y_continuous(expand = expansion(mult = c(0.05, 0.1)) +
theme_minimal() + theme_minimal()
theme(legend.position = "bottom")
# ボラティリティチャート作成
p3 <- ggplot(df, aes(x = Year, y = VolatilityRange)) + p3 <- ggplot(df, aes(x = Year, y = VolatilityRange)) + geom_line()
geom_line(color = volatility_color, size = 1) + + geom_line(color = volatility_color, size = 1)
geom_point(color = volatility_color) + geom_line(color = volatility_color, size = 1) + geom_line(size = 1)
geom_text(aes(label = round(VolatilityRange, 0))、
vjust = -0.6, size = 3, color = volatility_color) +
labs(y = "ボラティリティレンジ(High-Low)") +
scale_y_continuous(labels = scales::comma、
expand = expansion(mult = c(0.05, 0.1))) + expand = expansion(mult = c(0.05, 0.1)) +
theme_minimal()
# チャートの配置
gridExtra::grid.arrange(p1, p2, p3, ncol = 1、
heights = c(1.2, 1, 1))
} }コード解説
1. plot_stock_data 関数は株式データを受け取り、3つのチャートを生成します:
- 株価・取引量チャート
- 配当利回り・年間利回りチャート
- ボラティリティレンジチャート
2.ggplot2を使用して各チャートを作成し、gridExtraを使用して3つのチャートを一つのグラフに結合します。
3.各チャートにはカラーコードとラベルが適用され、読みやすさを向上させました。
では、株式データを分析する関数を作ってみます。
# 株式データ分析関数
analyze_stocks <- function(stock_data, stocks_info) {
results <- lapply(1:nrow(stocks_info), function(i) {
if (is.null(stock_data[[i]])) return(NULL)
symbol <- stocks_info$symbol[i] <- stocks_info$symbol[i]].
data <- stock_data[[i]]]
df <- data.frame(
閉じる = as.numeric(data[,4])、
配当 = as.numeric(data[,6])
)
list(
StockName = stocks_info$name[i]、
Symbol = symbol、
MeanPrice = mean(df$Close, na.rm = TRUE)、
PriceStdDev = sd(df$Close, na.rm = TRUE)、
MeanDividend = mean(df$Dividends, na.rm = TRUE)、
TotalReturn = (tail(df$Close, 1) / df$Close[1] - 1)* 100
)
})
results <- results[!sapply(results, is.null)] # NULLを削除します。
do.call(rbind, lapply(results, as.data.frame))
}コード解説
はい、引き続きコード解説を続けます。
analyze_stocks関数は、各株式について、平均価格、価格の標準偏差、平均配当金、総収益率などを計算します。- 各銘柄の分析結果をリスト化し、それをデータフレームに変換して返します。
さて、今度は実際にこれらの関数を使用してデータを収集し、分析してみましょう!
# メイン実行部
plan(multisession) #並列セッションの設定
# データ収集及び可視化
stock_data <- future_map(1:nrow(stocks_info), function(i) {
symbol <- stocks_info$symbol[i], function(i) { symbol <- stocks_info$symbol[i], function(i)
data <- get_stock_data(symbol)
if (!is.null(data)) {
plot_stock_data(data, stocks_info[i,])
}
data
})
# 分析結果出力
analysis_results <- analyze_stocks(stock_data, stocks_info)
print(analysis_results)コード解説
プラン(マルチセッション)で並列処理を設定します。これにより、複数の株式データを同時に収集することができ、時間を節約することができます。future_map関数を使用して、各株式についてデータを収集し、視覚化します。- 最後に
analyze_stocks関数を呼び出してすべての銘柄の分析結果を取得して出力します。




配当株投資、こうやってアプローチしてみてください!
さて、私たちが作ったRコードで韓国株式市場の10大配当株を分析してみました。 この結果をもとに、配当株投資にどのようにアプローチすればいいのか、いくつかのヒントをお教えします。
- 配当利回りを確認する: 私たちのコードで計算した
配当利回りに注目してみてください。 この値が高いほど、投資額に対して多くの配当を受け取ることができます。 - 株価ボラティリティを考慮する:
VolatilityRangeで株価の変動幅を確認することができます。 ボラティリティの低い銘柄が一般的に安定した配当銘柄とされています。 - 総収益を見る:
TotalReturnは、株価の上昇と配当の両方を考慮した収益率です。 この値が高い銘柄は、長期投資価値がある可能性があります。 - 企業の財務健全性の確認: 私たちのコードには含まれていませんが、配当株に投資する際は、企業の財務諸表もぜひチェックしてみてください。安定的な収益を出している企業は継続的に配当を支払うことができます。
- 業界動向を把握する各企業が属する産業の将来展望も重要で、成長可能性の高い産業の企業は配当も増える可能性が高いです。
おわりに:配当株投資の魅力
配当株投資は、安定した収益を求める投資家にとって魅力的な戦略です。 しかし、すべての投資がそうであるように、配当株投資にもリスクがあります。私たちが作ったRコードで得た情報は、投資判断を下すのに役立ちますが、それだけでは十分ではありません。
実際の投資を行う前に、より深い分析と個人の投資性向、そして専門家のアドバイスを総合的に考慮してください。配当株投資の真の魅力は、長期的な視点で見ることができる場合が多いです。
皆さんも今すぐRコードを活用して自分だけの配当株ポートフォリオを作ってみてはいかがでしょうか?投資の世界は広くて深いです。一緒に学び、成長していきましょう!
Pythonコーディングによる配当株のおすすめ投稿も 今見ていただいている記事と比較していただければ、どの銘柄が良いか、よりイメージが湧くのではないでしょうか。
#全コード
# 必須ライブラリの読み込み
library(quantmod)
library(ggplot2)
library(reshape2)
library(dplyr)
library(gridExtra)
library(scales)
library(furrr) #並列処理ライブラリ
# 分析する株式銘柄情報の設定
stocks_info <- data.frame(
symbol = c("005930.KS", "017670.KS", "033780.KS", "000270.KS", "051910.KS"、
"032640.KS", "030200.KS", "000810.KS", "035250.KS", "316140.KS")、
name = c("Samsung Electronics", "SK Telecom", "KT", "Kia", "LG Chem"、
"LG Uplus", "KT&G", "Samsung Fire", "POSCO Holdings", "Woori Financial")
)
# 株式データ収集関数の定義
get_stock_data <- function(symbol) {
tryCatch({ {
# 最近10年間のデータ収集
data <- getSymbols(
symbol, src = "yahoo"、
from = Sys.Date() - years(10)、
to = Sys.Date()、
auto.assign = FALSE
)
# データチェック
if (is.null(data)) stop("No data retrieved.")
# 現在の日付以降のデータ削除
data <- data[index(data) <= Sys.Date()]].
# 年間データに変換
annual_close <- to.yearly(Cl(data))
annual_open <- to.yearly(Op(data))
annual_high <- to.yearly(Hi(data))
annual_low <- to.yearly(Lo(data))
annual_volume <- to.yearly(Vo(data))
#の配当金処理(ない場合は0で埋める)
annual_dividends <- if ("配当金" %in% colnames(data)) {
to.yearly(data$Dividends)
} else {
xts(rep(0, nrow(annual_close)), order.by = index(annual_close))
}
cbind(annual_open, annual_high, annual_low, annual_close、
annual_volume, annual_dividends)
}, error = function(e) {
warning(paste("Data fetch failed for", symbol, ":", e$message))
return(NULL)
})
}
# データ可視化関数
plot_stock_data <- function(data, stock_info) { {
if (is.null(data)) {
warning(paste("No data available for", stock_info$name))
return(NULL)
}
#データフレーム生成及び指標計算
df %
mutate(
DividendYield = (Dividends / Close) * 100, #の配当利回り
AnnualReturn = (Close / lag(Close) - 1)* 100, # 年間収益率
VolatilityRange = High - Low #のボラティリティ範囲
)
# NA値を削除
df <- na.omit(df)
# 最新トレンドカラーを適用
close_color <- "#1f77b4"
dividend_color <- "#2ca02c"
return_color <- "#d62728"
volatility_color <- "#9467bd"
volume_color <- "#8c564b"
# 株価と取引量チャートを作成する
p1 <- ggplot(df, aes(x = Year)) + p1 <- ggplot(df, aes(x = Year))
geom_line(aes(aes(y = Close), color = close_color, size = 1) + + geom_line(aes(y = Close), color = close_color, size = 1)
geom_point(aes(aes(y = Close), color = close_color) + geom_point(aes(y = Close), size = 1)
geom_text(aes(y = Close, label = round(Close, 0))、
vjust = -0.6, size = 3) + # vjust値調整
geom_col(aes(y = Volume/max(Volume, na.rm = TRUE) * max(Close, na.rm = TRUE))、
fill = volume_color, alpha = 0.3) + + fill = volume_color, alpha = 0.3)
scale_y_continuous(
name = "価格 (円)"、
labels = scales::comma、
sec.axis = sec_axis(~./max(df$Close, na.rm = TRUE) * max(df$Volume, na.rm = TRUE)、
name = "ボリューム")、
expand = expansion(mult = c(0.05, 0.1)) # 上部の余白を追加します。
labs(title = paste(stock_info$name, "(", stock_info$symbol, ")")、
subtitle = "Annual Price and Volume") + subtitle = "")
theme_minimal() + theme_minimal()
theme(
plot.title = element_text(size = 14, face = "bold")、
axis.title = element_text(size = 10)、
legend.position = "bottom"
)
#の収益率チャートを作成
p2 <- ggplot(df, aes(x = Year)) + + p2 <- ggplot(df, aes(x = Year))
geom_line(aes(y = DividendYield, color = "Dividend Yield"), size = 1) + + geom_line(aes(y = DividendYield, color = "Dividend Yield"), size = 1)
geom_point(aes(aes(y = DividendYield), color = dividend_color) + geom_point(aes(y = DividendYield), size = 1)
geom_text(aes(y = DividendYield, label = round(DividendYield, 1))、
color = dividend_color, vjust = -0.6, size = 3) + # vjust値調整
geom_line(aes(aes(y = AnnualReturn, color = "Annual Return"), size = 1) + geom_line(aes(y = AnnualReturn, size = 1))
geom_point(aes(aes(y = AnnualReturn), color = return_color) + + geom_point(aes(y = AnnualReturn), size = 1)
geom_text(aes(y = AnnualReturn, label = round(AnnualReturn, 1))、
color = return_color, vjust = 1.5, size = 3) +
scale_color_manual(values = c("配当利回り" = dividend_color、
"年間リターン" = return_color)) +
labs(y = "レート(%)", color = "メトリクス") +
scale_y_continuous(expand = expansion(mult = c(0.05, 0.1))) + # 上部余白追加
theme_minimal() + theme(legend.position = "bottom")
theme(legend.position = "bottom")
#ボラティリティチャート作成
p3 <- ggplot(df, aes(x = Year, y = VolatilityRange)) + p3 <- ggplot(df, aes(x = Year, y = VolatilityRange)) + + ggplot()
geom_line(color = volatility_color, size = 1) + + geom_line(color = volatility_color, size = 1)
geom_point(color = volatility_color) + geom_line(color = volatility_color, size = 1) + geom_line(size = 1)
geom_text(aes(label = round(VolatilityRange, 0))、
vjust = -0.6, size = 3, color = volatility_color) + # vjust値を調整します。
labs(y = "Volatility Range (High-Low)") + scale_y_continuous(y = "Volatility Range (High-Low)")
scale_y_continuous(labels = scales::comma、
expand = expansion(mult = c(0.05, 0.1))) + # 上部余白追加
theme_minimal()
#チャートの配置
gridExtra::grid.arrange(p1, p2, p3, ncol = 1、
heights = c(1.2, 1, 1, 1))
} }
# 株式のデータ分析関数
analyze_stocks <- function(stock_data, stocks_info) {
results <- lapply(1:nrow(stocks_info), function(i) {
if (is.null(stock_data[[i]])) return(NULL)
symbol <- stocks_info$symbol[i] <- stocks_info$symbol[i]].
data <- stock_data[[i]]]
df <- data.frame(
閉じる = as.numeric(data[,4])、
配当 = as.numeric(data[,6])
)
list(
StockName = stocks_info$name[i]、
Symbol = symbol、
MeanPrice = mean(df$Close, na.rm = TRUE)、
PriceStdDev = sd(df$Close, na.rm = TRUE)、
MeanDividend = mean(df$Dividends, na.rm = TRUE)、
TotalReturn = (tail(df$Close, 1) / df$Close[1] - 1)* 100
)
})
results <- results[!sapply(results, is.null)] # NULLを削除します。
do.call(rbind, lapply(results, as.data.frame))
}
# メイン実行部
plan(multisession) # 並列セッション設定
# データ収集及び可視化
stock_data <- future_map(1:nrow(stocks_info), function(i) {
symbol <- stocks_info$symbol[i], function(i) { symbol <- stocks_info$symbol[i], function(i)
data <- get_stock_data(symbol)
if (!is.null(data)) {
plot_stock_data(data, stocks_info[i,])
}
data
})
# 分析結果出力
analysis_results <- analyze_stocks(stock_data, stocks_info)
print(analysis_results)




