Table of Contents
Over the years of managing my portfolio, I've experimented with various approaches to improve risk-adjusted returns. One method that has consistently helped me is volatility targeting—a systematic way to adjust position sizes based on market conditions.
While not revolutionary, it's been a reliable addition to my investment toolkit. I'd like to share some insights from my experience implementing this approach.
Trading Rules That Work for Me
My approach to volatility targeting involves several practical guidelines that have helped me apply this concept effectively:
Setting Risk Parameters
I've found it helpful to:
Establish a target volatility level aligned with my overall risk tolerance
Use this target as a benchmark for portfolio adjustments
Review and adjust this target periodically as my financial situation evolves
This gives me a consistent framework for making allocation decisions.
Measuring Volatility Effectively
After trying various methods, I've settled on:
Using realized historical volatility as my primary metric
Employing an Exponential Moving Average (EMA) to give greater weight to recent market behavior
Calculating this at a weekly frequency to balance responsiveness with stability
Making Portfolio Adjustments
My general framework includes:
Moderately increasing exposure when market volatility falls below my target
Reducing position sizes when volatility exceeds my comfort zone
Implementing a weekly rebalancing schedule to maintain consistency
Practical Considerations
Some additional lessons I've learned along the way:
Focusing on liquid ETFs helps minimize transaction costs when adjusting positions
Consolidating adjustments to reduce overall trading frequency works better for my schedule
Maintaining diversification across asset classes provides additional stability
Implementation in Python
To make this approach systematic, I've implemented a straightforward Python solution:
import numpy as np
import pandas as pd
class VolatilityTargetingModel:
def __init__(self):
self.name = "Volatility Targeting Model"
def set_params(self, target_vol=0.10, lookback_period=63):
"""
Set the parameters for the model
target_vol: annual volatility target (e.g., 0.10 for 10%)
lookback_period: number of trading days to use for volatility calculation
"""
self.target_vol = target_vol
self.lookback_period = lookback_period
def predict(self, prices, target_vol=0.10, period=63):
"""
Calculate position sizes based on volatility targeting
"""
# Standard trading days in a year
trading_days = 252
# Calculate volatility using exponential weighted moving average
volatility = prices.pct_change().ewm(
span=period,
min_periods=period
).std()
# Calculate position sizes - inverse relationship with volatility
position_sizes = target_vol / (volatility * np.sqrt(trading_days))
return position_sizesThe underlying mathematics is straightforward. The position sizing formula:
Position Size = Target Volatility / (Current Volatility × Square Root of number Trading Days)
automatically adjusts exposure based on current market conditions in a measured way.
Results
I've applied this approach primarily to SPY in my portfolio, and the results have been encouraging, if not dramatic:
Compared to a simple buy-and-hold strategy, my volatility-targeted approach has provided modest improvements in several areas. Most notably, I've experienced a reduction in maximum drawdown—those difficult periods when portfolios decline significantly in value.
The approach has also yielded a slightly improved Sharpe ratio, indicating better risk-adjusted returns. My Compound Annual Growth Rate (CAGR) saw a modest increase while maintaining comparable levels of overall volatility.
I later applied the same methodology to my bond allocation through TLT, again with subtle but positive results. The equity curve has been somewhat smoother, especially during periods of interest rate volatility.
What I particularly appreciate about this method is its systematic nature. During market downturns, my portfolio naturally reduces exposure, which has helped me avoid some of the larger swings experienced by traditional buy-and-hold portfolios.
Thoughts on Moving Forward
After implementing volatility targeting for several years, I find it to be a useful complement to traditional asset allocation strategies. Its ability to moderately reduce extreme returns and provide some stability during volatile periods has been beneficial for my investment approach.
The most valuable aspect has been the reduction in severity of drawdowns—helping preserve capital during market stress while still maintaining exposure to capture upside when conditions improve.
That said, volatility targeting is just one approach among many useful portfolio management techniques. I'm currently exploring several complementary methods:
Trend-following approaches for additional context during extended market movements
Factor-based allocations to potentially enhance security selection
More sophisticated volatility forecasting models that might improve the timing of adjustments
For those considering implementing volatility targeting, I recommend starting with a modest portion of your portfolio to see how it fits with your broader investment approach. Tools like QuantConnect or Backtrader can be helpful for testing before committing significant capital.
Remember that no single strategy is perfect for all market conditions. Volatility targeting has been a helpful addition to my investment process, but it works best as part of a thoughtful, comprehensive approach aligned with your personal financial goals.
I'm interested in hearing from others who have implemented similar approaches. What has been your experience with volatility management strategies? Have you found particular techniques that work well in conjunction with this approach?
Further Reading:




