The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.

‘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.

# 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.

# 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.

# 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.


These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.