Learn R Programming

PortfolioTesteR (version 0.1.4)

weight_by_risk_parity: Risk Parity Weighting Suite

Description

Collection of risk-based weighting methods for portfolio construction. Each method allocates capital based on risk characteristics rather than market capitalization or equal weights.

Usage

weight_by_risk_parity(
  selected_df,
  prices_df,
  method = c("inverse_vol", "equal_risk", "max_div"),
  lookback_periods = 252,
  min_periods = 60
)

Value

Weight matrix with the same dates as selected_df; each row sums to 1.

Arguments

selected_df

Binary selection matrix (data.frame with Date column).

prices_df

Price data for risk calculations (typically daily). Returns are calculated internally from prices.

method

Optimization method for risk parity.

lookback_periods

Number of periods for risk estimation (default: 252).

min_periods

Minimum periods required (default: 60).

Details

Methods

inverse_vol

Weights proportional to 1 / volatility (e.g., 1 / sd of returns over lookback_periods). Lower volatility stocks receive higher weights.

equal_risk

Equal Risk Contribution (ERC): finds weights so each position contributes equally to total portfolio risk (iterative optimization).

max_div

Maximum Diversification: maximizes the ratio of weighted average volatility to portfolio volatility.

The function accepts price data and calculates returns internally, ensuring consistency with other library functions. Daily prices are recommended for accurate volatility estimation.

Examples

Run this code
data("sample_prices_daily")
data("sample_prices_weekly")
momentum <- calc_momentum(sample_prices_weekly, lookback = 12)
selected <- filter_top_n(momentum, n = 10)
weight_by_risk_parity(selected, sample_prices_daily, method = "inverse_vol")
weight_by_risk_parity(selected, sample_prices_daily, method = "equal_risk")
weight_by_risk_parity(selected, sample_prices_daily, method = "max_div")

Run the code above in your browser using DataLab