Skip to content

bonsook/REN

Repository files navigation

‘REN’: Regularization Ensemble for Portfolio Optimization

R-CMD-check

Overview

The ‘REN’ package provides a set of tools for performing portfolio optimization using various regularization and ensemble learning methods. The package is designed to produce stable out-of-sample return predictions, particularly in the presence of strong correlations between assets. The core functions enable users to prepare data, set up parallel processing, and perform in-depth portfolio analysis.

Installation

To install the ‘REN’ package, you can use the following command:

# Install the development version from GitHub
devtools::install_github("bonsook/REN")

Main Functions

1. setup_parallel()

This function sets up parallel processing to speed up the computation of portfolio optimization tasks.

  • Parameters:
    • num_cores: The number of cores to use for parallel processing. Default is 7.
  • Example:
# Set up parallel processing with the default number of cores
cl <- setup_parallel()

# Set up parallel processing with 4 cores
cl <- setup_parallel(num_cores = 4)

# Stop the cluster after completing the analysis
stopCluster(cl) 

2. prepare_data()

This function prepares the input data for portfolio optimization by structuring it into the required format and calculating necessary metrics.

  • Parameters:
    • data: A data frame containing the asset returns and other relevant metrics.
  • Example:
# Prepare the data for analysis
ff25 <- read.csv("data/FF25.csv")

# Define the date column index, start date, and end date
date_column_index <- 1  # Update this based on your data
start_date <- "19990101"  # Adjust as needed
end_date <- "20231231"  # Adjust as needed

# Prepare the data for analysis
data_prep <- prepare_data(ff25, date_column_index, start_date, end_date)
x <- data_prep$x
mon <- data_prep$mon
count <- data_prep$count
Date <- data_prep$Date

3. perform_analysis()

This function performs portfolio analysis using various methods such as Mean-Variance (MV), James-Stein (JM), LASSO, Ridge Regression, and Equal Weighting (EW). It calculates portfolio weights, turnover, returns, Sharpe ratios, volatility, and maximum drawdown for each method.

  • Parameters:
    • x: A numeric matrix where each column represents asset returns and rows represent time periods.
    • mon: A numeric vector representing the number of months since the start date for each time period.
    • count: A numeric vector indicating the number of entries per month.
    • Date: A vector of Date objects representing the dates of the time periods.
    • num_cores: The number of cores to use for parallel processing. Default is 7.
  • Returns:
    • A list containing components such as cumulative return plots, cumulative turnover plots, and performance metrics (Sharpe ratio, volatility, max drawdown).
  • Example:
# Perform the portfolio analysis
result <- perform_analysis(x, mon, count, Date, num_cores)

# Accessing the results
cumulative_return_plot <- result$cumulative_return_plot
turnover_mean <- result$turnover_mean
sharpe_ratio <- result$sharpe_ratio
volatility <- result$volatility
max_drawdown <- result$max_drawdown

# Display the cumulative return plot
print(cumulative_return_plot)

Example Workflow

Here’s an example workflow using the ‘REN’ package:

# Step 1: Set up parallel processing
cl <- setup_parallel(num_cores = 4)

# Step 2: Prepare the data
data_prep <- prepare_data(ff25, date_column_index, start_date, end_date)
x <- data_prep$x
mon <- data_prep$mon
count <- data_prep$count
Date <- data_prep$Date

# Step 3: Perform portfolio analysis
result <- perform_analysis(x, mon, count, Date, num_cores)

# Step 4: Plot and interpret the results
print(results$cumulative_return_plot)
print(results$turnover_mean)
print(results$sharpe_ratio)

# Remember to stop the cluster after completing the analysis
stopCluster(cl)

Contributing

Contributions to the ‘REN’ package are welcome. Please feel free to submit a pull request or report any issues you encounter.

License

This package is licensed under the MIT License.


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages