Based on Wan Lei (ไธ็ฃ), Retail Investor Turnaround (ๅฐๆฃ้่ขญ๏ผๆๆๆๆไฝ ๅ้ๅๅฎๆ)
Wan Lei's Retail Investor Turnaround addresses the most common problem facing Chinese retail investors: how to invest consistently and profitably without the time, expertise, or temperament for active stock picking or trading. The answer, according to Wan, is quantitative dollar-cost averaging (้ๅๅฎๆ) into index funds โ but not the naive "buy the same amount every month" approach taught in most introductory books.
Instead, Wan presents a series of increasingly sophisticated DCA algorithms that adjust investment amounts based on market valuation, price levels, and momentum conditions. These "smart DCA" strategies have been backtested against Chinese market data and shown to significantly outperform both naive DCA and the majority of actively managed funds.
Chinese retail investors face a unique set of challenges:
| Challenge | Impact |
|---|---|
| A-share volatility | Shanghai Composite has experienced multiple 50%+ drawdowns |
| Information disadvantage | Retail investors cannot compete with institutions on research |
| Time constraints | Most retail investors have full-time non-investing jobs |
| Behavioral biases | Buy high (during euphoria), sell low (during panic) |
| Product complexity | Thousands of funds and stocks to choose from |
DCA directly addresses all five challenges: it reduces the impact of volatility through time diversification, requires no information edge, takes minimal time, automates the investment decision to remove behavioral bias, and can be implemented with a small number of index funds.
The book's central thesis: the average retail investor who implements a disciplined quantitative DCA strategy into Chinese index funds will outperform 80% of active equity fund managers over a 5+ year horizon. This is achievable with less than 1 hour of effort per month.
DCA works because of a mathematical property: when you invest a fixed dollar amount regularly, you automatically buy more shares when prices are low and fewer shares when prices are high. This produces an average cost per share that is lower than the arithmetic average price over the same period.
PSEUDOCODE: DCA vs. Lump Sum Illustration
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// Example: Invest 1000 RMB per month for 4 months
// Price sequence: 10, 5, 5, 10 (arithmetic average = 7.5)
month_1: buy 100 shares at 10 RMB
month_2: buy 200 shares at 5 RMB
month_3: buy 200 shares at 5 RMB
month_4: buy 100 shares at 10 RMB
total_invested = 4000 RMB
total_shares = 600
average_cost = 4000 / 600 = 6.67 RMB per share
// Average cost (6.67) < arithmetic average price (7.5)
// When price returns to 10, profit = (10 - 6.67) ร 600 = 2000 RMB (50% return)
The more volatile the market, the greater the DCA advantage. The A-share market, being one of the most volatile major markets in the world, is therefore one of the best environments for DCA investing. Wan provides data showing that DCA in the CSI 300 has outperformed DCA in the S&P 500 on a risk-adjusted basis precisely because of higher A-share volatility.
Wan acknowledges that in perpetually rising markets, lump sum investing outperforms DCA. However, the A-share market does not perpetually rise โ it cycles violently. In a cycling market, DCA's ability to accumulate shares cheaply during downturns gives it a significant edge.
Consistency: Invest on schedule regardless of market conditions, news, or personal feelings. The system must run automatically.
Quantification: Every parameter โ investment amount, timing, fund selection, take-profit level โ is defined by objective rules, not subjective judgment.
Patience: DCA requires a minimum 3-year commitment to show results. In bear markets, the system accumulates shares cheaply. The payoff comes during the subsequent bull market.
Discipline: Follow the rules even when โ especially when โ they feel counterintuitive. Investing more when the market is crashing feels wrong but is mathematically optimal.
Wan evaluates Chinese index funds across several criteria and recommends:
Core holdings:
Satellite holdings:
| Criterion | What to Look For |
|---|---|
| Tracking error | < 0.2% annualized vs. the index |
| Expense ratio | < 0.5% total (management + custody) |
| Fund size | > 1 billion RMB AUM for liquidity |
| Fund age | > 2 years of track record |
| Replication method | Full replication preferred over sampling |
| ETF vs. index fund | ETF for lump adjustments; index fund for automated DCA |
Wan recommends a simple two or three-fund portfolio:
Conservative: 70% CSI 300 + 30% Dividend index Balanced: 50% CSI 300 + 30% CSI 500 + 20% Dividend index Aggressive: 40% CSI 300 + 40% CSI 500 + 20% ChiNext
The simplest strategy: invest a fixed amount (e.g., 2000 RMB) into the chosen index fund on a fixed schedule (e.g., the 15th of each month).
Advantages: Simple to implement and automate. No decisions required. Disadvantages: Does not adapt to market conditions. Invests the same amount whether the market is expensive or cheap.
Wan's backtesting shows minimal difference between weekly and monthly DCA for periods > 3 years. Monthly is recommended for most investors due to simplicity and alignment with salary cycles.
Specific timing within the month matters little in the long run. Wan debunks the common myth that certain days of the month are systematically better for DCA entries.
A common concern: "What if I start DCA at a market peak?" Wan's backtesting shows that even starting at the absolute peak of the 2007 or 2015 bull markets, DCA into the CSI 300 recovered and became profitable within 18-24 months. The starting point matters far less than consistency and patience.
Adjust the investment amount based on the relationship between current price and a moving average:
PSEUDOCODE: MA-Based Smart DCA
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
base_amount = 2000 // Base monthly investment
ma_250 = moving_average(index_price, 250) // 250-day (1-year) MA
current_price = index_current_price
ratio = current_price / ma_250
if ratio > 1.2: // Price 20%+ above MA โ market expensive
invest_amount = base_amount * 0.5
elif ratio > 1.0: // Price above MA โ slightly expensive
invest_amount = base_amount * 0.8
elif ratio > 0.8: // Price below MA โ slightly cheap
invest_amount = base_amount * 1.2
else: // Price 20%+ below MA โ very cheap
invest_amount = base_amount * 1.5
Instead of investing a fixed amount, target a fixed value increase each period:
PSEUDOCODE: Value Averaging
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
target_monthly_growth = 2000 // Want portfolio to grow by 2000/month
month_number = current_month - start_month
target_value = target_monthly_growth * month_number
current_value = shares_held * current_price
investment_needed = target_value - current_value
// In cheap markets: invest more to hit the target
// In expensive markets: invest less (or even sell) to stay on target
invest_amount = max(investment_needed, 0) // Floor at zero for simplicity
invest_amount = min(invest_amount, base_amount * 3) // Cap at 3x base
When the current index price is below your average cost, invest extra to bring the average cost down faster:
PSEUDOCODE: Cost Averaging Enhancement
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
avg_cost = total_invested / total_shares
current_price = index_current_price
if current_price < avg_cost * 0.9: // Price 10%+ below cost
invest_amount = base_amount * 2.0
elif current_price < avg_cost: // Price below cost
invest_amount = base_amount * 1.5
else: // Price above cost
invest_amount = base_amount * 1.0
Wan's most sophisticated DCA algorithm uses the index PE ratio's historical percentile to determine investment amounts:
PSEUDOCODE: PE Percentile DCA
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
pe_current = index_pe_ratio()
pe_percentile = historical_percentile(pe_current, lookback_years=10)
// pe_percentile = 0.2 means current PE is lower than 80% of historical values
if pe_percentile < 0.2: // Very cheap (bottom 20%)
invest_amount = base_amount * 2.0
action = "Aggressive buying โ market deeply undervalued"
elif pe_percentile < 0.4: // Cheap (20th-40th percentile)
invest_amount = base_amount * 1.5
action = "Increased buying โ market undervalued"
elif pe_percentile < 0.6: // Fair value (40th-60th percentile)
invest_amount = base_amount * 1.0
action = "Normal DCA โ market fairly valued"
elif pe_percentile < 0.8: // Expensive (60th-80th percentile)
invest_amount = base_amount * 0.5
action = "Reduced buying โ market overvalued"
else: // Very expensive (top 20%)
invest_amount = 0
action = "Stop buying โ consider taking profits"
Using a simplified Graham valuation: when the index's earnings yield (1/PE) exceeds twice the 10-year government bond yield, increase DCA allocation. When the earnings yield falls below the bond yield, decrease allocation.
Combine multiple valuation metrics for a more robust signal:
| Metric | Weight | Cheap Threshold | Expensive Threshold |
|---|---|---|---|
| PE percentile (10yr) | 40% | < 30th percentile | > 70th percentile |
| PB percentile (10yr) | 30% | < 30th percentile | > 70th percentile |
| Dividend yield | 20% | > 3% | < 1.5% |
| Buffett indicator (market cap/GDP) | 10% | < 60% | > 100% |
Unlike Western DCA advice that emphasizes "never sell," Wan argues forcefully that in the A-share market, take-profit rules are essential. The A-share market cycles violently โ failing to take profits in 2007 or 2015 would have erased years of accumulated gains within months.
The simplest approach: sell when the DCA portfolio reaches a target return:
PSEUDOCODE: Target Return Take-Profit
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
target_return = 0.30 // 30% total return target
current_return = (current_value - total_invested) / total_invested
if current_return >= target_return:
sell_all()
restart_dca() // Begin a new DCA cycle from scratch
More sophisticated: target an annualized return rate rather than absolute return:
PSEUDOCODE: Annualized Return Take-Profit
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
target_annual_return = 0.15 // 15% annualized
years_invested = months_invested / 12
target_return = (1 + target_annual_return)^years_invested - 1
current_return = (current_value - total_invested) / total_invested
if current_return >= target_return:
execute_take_profit()
Sell when the market becomes expensive by valuation metrics:
Wan's recommended approach combines elements:
Wan presents extensive backtesting across multiple A-share market cycles:
Test period: 2005-2020 (includes two full bull-bear cycles)
| Strategy | Annualized Return | Max Drawdown | Sharpe Ratio |
|---|---|---|---|
| Buy-and-hold CSI 300 | 8.2% | -65% | 0.32 |
| Naive monthly DCA | 9.5% | -38% | 0.48 |
| MA-based smart DCA | 12.1% | -28% | 0.65 |
| PE percentile DCA | 13.4% | -25% | 0.72 |
| PE percentile DCA + take-profit | 15.8% | -18% | 0.91 |
Wan tests the PE percentile strategy developed on 2005-2015 data against 2016-2020 out-of-sample data. The strategy maintained its edge, though the magnitude was somewhat smaller (as expected with any backtest).
For a multi-fund portfolio, rebalance annually:
PSEUDOCODE: Annual Rebalancing
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
target_allocation = {csi300: 0.50, csi500: 0.30, dividend: 0.20}
current_values = get_current_values(portfolio)
total_value = sum(current_values)
for fund in portfolio:
target_value = total_value * target_allocation[fund]
current_value = current_values[fund]
difference = target_value - current_value
if abs(difference / target_value) > 0.05: // >5% deviation
if difference > 0:
buy(fund, difference)
else:
sell(fund, abs(difference))
Maintain a cash reserve equivalent to 6-12 months of DCA contributions. This serves two purposes:
As the investor ages or circumstances change:
Sin 1: Stopping during bear markets โ The most common and most costly mistake. Bear markets are when DCA accumulates shares cheaply. Stopping during a bear market eliminates the primary advantage of DCA.
Sin 2: No take-profit plan โ Accumulating for years then watching gains evaporate in a crash because there was no exit strategy.
Sin 3: Investing money that is needed โ DCA requires a 3-5 year minimum horizon. Investing money needed within 1-2 years creates forced selling at the worst times.
Sin 4: Chasing hot funds โ Switching from the planned index fund to whatever sector fund has performed best recently. This is the opposite of DCA's logic.
Sin 5: Over-diversifying โ Holding 10+ funds creates complexity without additional diversification benefit. 2-3 index funds are sufficient.
Sin 6: Ignoring fees โ The difference between a 0.5% expense ratio fund and a 1.5% fund compounds dramatically over 10-20 years.
Sin 7: Checking too frequently โ Monitoring a DCA portfolio daily introduces emotional interference. Monthly review is sufficient; quarterly is ideal.
Add a momentum filter: increase DCA amount when the index is above its 20-month moving average (bull market confirmation) and reduce when below (bear market):
PSEUDOCODE: Momentum-Enhanced DCA
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ma_20m = moving_average(monthly_close, 20)
if current_price > ma_20m:
// Bull market regime: normal or increased investment
invest_amount = base_amount * valuation_multiplier
elif current_price < ma_20m and pe_percentile < 0.4:
// Bear market but cheap: aggressive buying
invest_amount = base_amount * 2.0
elif current_price < ma_20m and pe_percentile > 0.6:
// Bear market and still expensive: minimal buying
invest_amount = base_amount * 0.3
Invest more during low-volatility periods (calm accumulation) and less during high-volatility periods (uncertain, higher risk):
PSEUDOCODE: Volatility-Adjusted DCA
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
current_vol = rolling_std(daily_returns, 20) * sqrt(252) // Annualized vol
median_vol = median(historical_vol, 3_years)
vol_ratio = current_vol / median_vol
if vol_ratio < 0.8: // Low volatility
invest_amount = base_amount * 1.2
elif vol_ratio > 1.5: // High volatility
invest_amount = base_amount * 0.7
else:
invest_amount = base_amount
After large drawdowns, increase investment aggressively based on the statistical tendency of A-shares to mean revert:
Wan reframes bear markets for DCA investors: a bear market is not a disaster but a sale. Every month you invest during a bear market, you are buying shares at discounted prices. The longer the bear market lasts, the more cheap shares you accumulate, and the more explosive your returns will be in the subsequent bull market.
DCA investors must develop emotional detachment from:
Wan recommends treating DCA like a utility bill: automatic, regular, and not subject to deliberation. Set up automatic transfers on a fixed date and do not look at the account except during quarterly reviews.
To maintain motivation, Wan suggests tracking the cumulative number of fund shares owned rather than the account balance. The share count only goes up during accumulation, providing positive reinforcement even during bear markets when the account balance may be declining.
"The retail investor's greatest weapon is not intelligence or information โ it is patience. DCA converts patience into returns."
"In a bear market, every DCA contribution is a seed planted in fertile soil. You will not see the harvest immediately, but when spring comes, your garden will flourish."
"The most important investment decision for most people is not which stock to buy, but whether to start investing at all. DCA removes every excuse not to start."
"Smart DCA is not about timing the market. It is about adjusting the dose of medicine based on the patient's condition. More medicine when the market is sick (cheap), less when it is healthy (expensive)."
"A DCA investor who stops during a bear market is like a farmer who stops planting during the rainy season. The rain is what makes the crops grow."
"Take-profit discipline is what separates profitable DCA from hopeful DCA. In the A-share market, if you do not sell during euphoria, euphoria will sell you during panic."
"Checking your DCA portfolio daily is like opening the oven every five minutes to see if the cake is done. All you achieve is preventing it from baking properly."
"The power of quantitative DCA is that it replaces the hardest thing in investing โ making decisions under uncertainty โ with a set of rules that a computer could follow. And unlike humans, rules do not panic."