最適化のバックテスト

Rで学ぶ中級ポートフォリオ分析

Ross Bennett

Instructor

最適化のバックテスト: 実行

# 定期リバランスで最適化を実行
opt_base <- optimize.portfolio.rebalancing(R = returns,
                    optimize_method = "ROI",
                    portfolio = base_port_spec,
                    rebalance_on = "quarters",
                    training_period = 60,
                    rolling_window = 60)

# ポートフォリオのリターンを計算 base_returns <- Return.portfolio(returns, extractWeights(opt_base)) colnames(base_returns) <- "base"
Rで学ぶ中級ポートフォリオ分析

最適化のバックテスト: 分析

# 最適ウェイトをプロット
chart.Weights(opt_base)

時系列とポートフォリオのウェイトのプロット

Rで学ぶ中級ポートフォリオ分析

最適化のバックテスト: 分析

# ベンチマークとポートのリターンを結合
ret <- cbind(benchmark_returns, base_returns)

# 年率換算パフォーマンス
table.AnnualizedReturns(ret)
                          benchmark   base
Annualized Return            0.0775 0.0772
Annualized Std Dev           0.1032 0.0436
Annualized Sharpe (Rf=0%)    0.7509 1.7714
Rで学ぶ中級ポートフォリオ分析

最適化のバックテスト: 制約を精緻化

時系列とポートフォリオのウェイトのプロット

Rで学ぶ中級ポートフォリオ分析
# ポートフォリオ仕様をコピー
box_port_spec <- base_port_spec

# 制約を更新 box_port_spec <- add.constraint(portfolio = box_port_spec, type = "box", min = 0.05, max = 0.4, indexnum = 2)
# バックテスト opt_box <- optimize.portfolio.rebalancing(R = returns, optimize_method = "ROI", portfolio = box_port_spec, rebalance_on = "quarters", training_period = 60, rolling_window = 60)
# ポートフォリオのリターンを計算 box_returns <- Return.portfolio(returns, extractWeights(opt_box)) colnames(box_returns) <- "box"
Rで学ぶ中級ポートフォリオ分析

最適化のバックテスト: 制約の精緻化を分析

# 最適ウェイトをプロット
chart.Weights(opt_box)

時系列とポートフォリオのウェイトのプロット

Rで学ぶ中級ポートフォリオ分析

最適化のバックテスト: 制約の精緻化を分析

 

# ボックス制約ポートのリターンを結合
ret <- cbind(ret, box_returns)

# 年率換算パフォーマンス table.AnnualizedReturns(ret)
                          benchmark   base    box
Annualized Return            0.0775 0.0772 0.0760
Annualized Std Dev           0.1032 0.0436 0.0819
Annualized Sharpe (Rf=0%)    0.7509 1.7714 0.9282
Rで学ぶ中級ポートフォリオ分析

Vamos praticar!

Rで学ぶ中級ポートフォリオ分析

Preparing Video For Download...