Programming lesson
Building an Active Portfolio for a Young Professional: A Step-by-Step Fama-French Analysis
Learn how to construct an active portfolio for a 25-year-old investor using CAPM and Fama-French three-factor model. This tutorial covers stock selection, beta estimation, and portfolio optimization with real-world data from S&P 400 stocks.
Introduction: Tailoring a Portfolio to Kim's Investment Goals
As of June 10, 2026, Kim, a 25-year-old young professional, is looking to add individual stocks to her retirement portfolio. She follows Benjamin Graham's value investing philosophy and seeks stable, well-managed companies with long-term prospects. In this tutorial, we will build a six-stock active portfolio for Kim using the Fama-French three-factor model. We'll walk through stock selection, monthly return calculation, CAPM beta estimation, alpha forecasting, and portfolio construction. By the end, you'll understand how to apply these techniques to real-world data from the S&P 400 index.
Step 1: Selecting Six Stocks for a Young Professional
For Kim, we need stocks with solid fundamentals, good management, and stable growth. From the S&P 400 (mid-cap stocks), we choose: Company A, Company B, Company C, Company D, Company E, and Company F. Each company has a strong business model and financial ratios that align with a long-term buy-and-hold strategy. For example, Company A operates in the technology sector with a low debt-to-equity ratio of 0.3 and a consistent return on equity above 15%. Company B is a consumer staples firm with a dividend yield of 2.5% and a payout ratio of 40%, indicating sustainable dividends. We justify each pick based on the investor profile: Kim wants stability and growth, so we avoid high-beta or distressed firms.
Step 2: Computing Monthly Returns from Stock Prices
Using the stock price file from Blackboard (S&P 400 data from January 2020 to December 2024), we obtain 61 monthly closing prices for each stock. To compute monthly returns, use the formula: R_t = (P_t - P_{t-1}) / P_{t-1}. For example, if Company A's price on Jan 31, 2020 is $50 and on Feb 28, 2020 is $52, the return is 4%. We calculate 60 monthly returns for each stock. Ensure you have the correct dates and adjust for stock splits or dividends if needed. This step is crucial for the regression analysis that follows.
Step 3: Downloading Fama-French Factors and Computing Excess Returns
Download the Fama-French three-factor data from the Dartmouth website (F-F_Research_Data_Factors_CSV.zip). This file contains the excess market return (MKT), SMB (small minus big), HML (high minus low book-to-market), and the risk-free rate (RF). For each month, compute the excess return for each stock: Excess Return = Stock Return - RF. For instance, if Company A's return is 2% and RF is 0.1%, the excess return is 1.9%. These excess returns will be used in the regressions.
Step 4: Running CAPM Regression to Find Beta
Regress each stock's excess returns against the excess market return (MKT) using ordinary least squares (OLS). The CAPM equation is: R_i - RF = α + β(R_m - RF) + ε. The slope coefficient β measures the stock's market risk. For example, if Company A's beta is 0.85, it is less volatile than the market, suitable for Kim's conservative approach. Use a statistical tool like Excel, Python, or R to run the regression. Record the beta and its p-value to assess significance.
Step 5: Forecasting Alpha for Each Stock
Alpha represents the expected return beyond the CAPM prediction. For each stock, forecast alpha based on its business model and financial ratios. For instance, Company C has a strong competitive advantage and a price-to-earnings ratio of 12, below its industry average, suggesting undervaluation. We forecast a positive alpha of 1.5% annually. Justify each alpha with concrete reasoning: low debt, high ROE, or consistent earnings growth. This step aligns with Graham's value investing philosophy.
Step 6: Building an Active Portfolio Using Chapter 27.1
According to Chapter 27.1 of the textbook (Bodie, Kane, Marcus), we construct an active portfolio by weighting stocks based on their alpha and beta. The formula for the optimal weight of each stock in the active portfolio is: w_i = α_i / σ^2(ε_i), where σ^2(ε_i) is the residual variance from the CAPM regression. Then, combine with the market portfolio to form the complete portfolio. For simplicity, we assume a risk aversion coefficient and compute the weights. For example, if Company A has alpha 1.5% and residual variance 0.04, its weight is 0.375. Normalize weights so they sum to 1. The resulting portfolio will have higher exposure to stocks with higher alphas.
Step 7: Fama-French Three-Factor Regression for Each Stock
Now run a multiple regression of each stock's excess returns against MKT, SMB, and HML. The model is: R_i - RF = α + β_mkt * MKT + β_smb * SMB + β_hml * HML + ε. For each stock, interpret the betas:
- Market beta (β_mkt): If < 1, defensive; if ≈1, neutral; if > 1, aggressive.
- SMB beta (β_smb): Positive indicates small-cap tilt; negative indicates large-cap tilt; insignificant means neutral.
- HML beta (β_hml): Positive indicates value tilt; negative indicates growth tilt; insignificant means neutral.
For example, Company D might have β_mkt=0.95 (neutral), β_smb=0.20 (small tilt), β_hml=0.30 (value tilt). This categorization helps understand each stock's factor exposures.
Step 8: Fama-French Regression for the Active Portfolio
Using the portfolio weights from Step 6, compute the portfolio's monthly excess return as a weighted average of the six stocks' excess returns. Then run the same three-factor regression on the portfolio. The resulting betas (β_mkt, β_smb, β_hml) describe the portfolio's factor exposures. For instance, if the portfolio β_mkt is 0.90, it is slightly defensive. If β_smb is 0.10 (insignificant), the portfolio is neutral on size. If β_hml is 0.25 (significant), the portfolio has a value tilt, which aligns with Kim's value investing approach.
Step 9: Selecting a Risk-Adjusted Benchmark
Based on the portfolio's factor exposures, choose a benchmark that matches its risk profile. For a portfolio with β_mkt=0.90, β_smb=0.10, β_hml=0.25, a suitable benchmark could be a blend of 90% S&P 400 Index (mid-cap) and 10% a value ETF like IWD, adjusted for the size and value tilts. Alternatively, use a custom benchmark that mimics the factor loadings. The goal is to compare the portfolio's performance against a passive strategy with similar risk.
Step 10: Creating a Mutual Fund Report for Your Portfolio
Recreate the sections of a mutual fund report (as in the assignment image) for your active portfolio. Include:
- Portfolio Objective: Long-term capital appreciation with a value focus.
- Top Holdings: List the six stocks with their weights.
- Risk Metrics: Beta, standard deviation, Sharpe ratio.
- Performance: Cumulative return over the period, compared to benchmark.
- Factor Exposures: Market, size, value betas.
- Expense Ratio: Assume 0.5% for active management.
This report summarizes the portfolio's construction and expected performance, helping Kim make an informed decision.
Conclusion: Applying Quantitative Tools to Real-World Investing
By following these steps, you have built an active portfolio tailored to a young professional like Kim. The Fama-French model provides a framework to understand risk exposures and generate alpha. As of 2026, this approach remains relevant for investors seeking to outperform passive benchmarks. Remember to update your data periodically and reassess your assumptions. Happy investing!