install.packages(c(“quantmod”, “PerformanceAnalytics”, “pbapply”, “data.table”))
library(quantmod) library(PerformanceAnalytics) library(pbapply) library(data.table)
symbols <- c(“AAPL”, “MSFT”, “GOOGL”) # Example stocks getSymbols(symbols, src = “yahoo”, from = “2020-01-01”, to = “2025-01-01”, auto.assign = TRUE)
prices <- do.call(merge, lapply(symbols, function(sym) Cl(get(sym)))) colnames(prices) <- symbols
momentum <- function(price_data, n = 60) { ROC(price_data, n = n, type = “discrete”) }
momentum_data <- na.omit(momentum(prices))
rebalance_portfolio <- function(momentum_data, top_n = 5) { latest_momentum <- tail(momentum_data, 1) selected <- names(sort(latest_momentum, decreasing = TRUE)[1:top_n]) # Select top N assets return(selected) }
evaluate_performance <- function(asset) { returns <- Return.calculate(Cl(get(asset))) charts.PerformanceSummary(returns) }
selected_assets <- rebalance_portfolio(momentum_data) print(paste(“Selected assets:”, paste(selected_assets, collapse = “,”)))
lapply(selected_assets, evaluate_performance)