Skip to main content

Faber Strategy Analysis

Strategy ID: Community Strategy (unofficial)
Strategy Type: Long-Term Trend Following
Timeframe: 1 Hour / 4 Hours


I. Strategy Overview

Faber is a long-term trend-following strategy based on Simple Moving Averages. Proposed by investor Mebane Faber, its core philosophy comes from the classic investment book The Ivy Portfolio. It uses the 200-day moving average as the primary trend filter, entering on pullbacks after confirming long-term trends, and exiting when prices break below the long-term moving average.

Core Characteristics

FeatureDescription
Buy Conditions3 core conditions (trend confirmation + pullback entry + volume verification)
Sell Conditions1 base sell signal (price breaks below long-term MA)
ProtectionHard stop-loss + graded take-profit
Timeframe1 Hour / 4 Hours (daily recommended)
DependenciesTA-Lib

II. Strategy Configuration Analysis

2.1 Basic Risk Parameters

# ROI Exit Table
minimal_roi = {
"0": 0.15, # 15% profit immediate exit
"120": 0.10, # After 2 hours: 10% profit
"480": 0.05 # After 8 hours: 5% profit
}

# Stop-Loss Settings
stoploss = -0.08 # -8% hard stop-loss

Design Philosophy:

  • High take-profit target: 15% initial target suits long-term trend trading, providing adequate price volatility room
  • Graded decrease: The longer the holding time, the lower the take-profit threshold, avoiding profit pullback
  • Wide stop-loss: -8% is relatively loose, fitting long-term trend trading characteristics, avoiding being stopped out by normal fluctuations

2.2 Order Type Configuration

The strategy employs standard market orders to ensure timely entry and exit when trend signals appear.


III. Entry Conditions Details

3.1 Core Buy Logic

Faber strategy's buy signal consists of three independent conditions that must be simultaneously met:

dataframe.loc[
(
(dataframe['close'] > dataframe['sma200']) & # Condition 1: Long-term trend confirmed
(dataframe['close'] < dataframe['sma50']) & # Condition 2: Pullback confirmed
(dataframe['volume'] > dataframe['volume'].rolling(20).mean()) # Condition 3: Volume increase
),
'buy'
] = 1

3.2 Condition Details

Condition #1: Long-Term Trend Confirmation

dataframe['close'] > dataframe['sma200']

Logical Meaning: Current price above the 200-day simple moving average, confirming an upward long-term trend. This is the most fundamental trend filter; entries are only considered in bull market environments.

Condition #2: Pullback Entry Opportunity

dataframe['close'] < dataframe['sma50']

Logical Meaning: Although the long-term trend is up, the current price has pulled back to below the 50-day moving average. This is a "buy on pullback" entry strategy, finding relatively low points in an uptrend.

Condition #3: Volume Verification

dataframe['volume'] > dataframe['volume'].rolling(20).mean()

Logical Meaning: Current volume exceeds the 20-day average volume, confirming increased market participation and improving signal reliability.


IV. Exit Conditions Details

4.1 Core Sell Logic

Faber strategy employs simple and clear sell logic:

dataframe.loc[
(dataframe['close'] < dataframe['sma200']),
'sell'
] = 1

Trigger Condition: Price breaks below the 200-day simple moving average.

Design Philosophy: Exit immediately once the long-term trend reverses. This is a typical "trend-following" exit strategy; it does not predict tops and bottoms, only exiting after trend reversal is confirmed.

4.2 Graded Take-Profit System

Holding Time      Take-Profit Threshold    Description
───────────────────────────────────────────────────
0 minutes 15% Immediate profit-taking, capture big moves
120 minutes 10% Lower threshold after 2 hours
480 minutes 5% Protect minimum profit after 8 hours

4.3 Hard Stop-Loss Protection

stoploss = -0.08  # -8% stop-loss

8% is relatively wide, suitable for long-term trend trading, filtering normal market noise and avoiding being stopped out by short-term fluctuations.


V. Technical Indicator System

5.1 Core Indicators

Indicator CategorySpecific IndicatorPurpose
Trend IndicatorSMA(50)Medium-term trend judgment, pullback entry identification
Trend IndicatorSMA(200)Long-term trend judgment, bull/bear dividing line
Volume IndicatorVolume MA(20)Entry signal verification, false breakout filtering

5.2 Indicator Calculations

# Medium-term trend indicator
dataframe['sma50'] = ta.SMA(dataframe, timeperiod=50)

# Long-term trend indicator
dataframe['sma200'] = ta.SMA(dataframe, timeperiod=200)

# Volume moving average
dataframe['volume_mean_20'] = dataframe['volume'].rolling(20).mean()

VI. Risk Management Highlights

6.1 Trend Reversal Protection

Faber strategy's core risk management is achieved through SMA200:

  • Before buying: Only enter when long-term trend is up (price > SMA200)
  • At selling: Exit immediately on trend reversal (price < SMA200)

6.2 Graded Take-Profit Mechanism

GoalImplementation
Capture big movesInitial take-profit set at 15%, providing sufficient room for trends
Protect profitsDecrease take-profit threshold over time, avoiding profit pullback

VII. Strategy Pros & Cons

Advantages

  1. Simple and reliable: Only uses two moving averages and one volume indicator; clear logic and few parameters, not prone to overfitting
  2. Clear trends: Only trades when the long-term trend is up, avoiding counter-trend operations
  3. Long-term friendly: Design philosophy suits daily/4-hour levels, suitable for patient long-term traders
  4. Classically validated: SMA50/SMA200 combination is one of the most classic MA combinations in technical analysis
  5. Drawdown control: Immediate exit when price breaks below SMA200, effectively controlling downside risk

Limitations

  1. Signal lag: Long-term MAs react slowly; both entry and exit signals lag price
  2. Data requirements: SMA200 requires 200 periods of data to calculate; cannot be used for newly listed coins
  3. Poor performance in oscillating markets: May frequently generate false signals during consolidation, causing consecutive small losses
  4. Uncertain pullback depth: When price is below SMA50 but above SMA200, pullback depth may continue expanding
  5. Timeframe sensitive: May underperform on short timeframes (e.g., 5 minutes) compared to daily/4-hour

VIII. Applicable Scenarios

Market EnvironmentRecommended ConfigurationDescription
Clear uptrendStandard configurationBest-performing environment; enter on pullback after trend confirmation
Oscillating consolidationReduce position or pauseFrequent false breakouts; may cause consecutive small losses
DowntrendAutomatic exitPrice below SMA200; no buy signals
High volatilityAppropriately widen stop-lossAvoid being stopped out by normal fluctuations

IX. Summary

Faber Strategy is a simple, classic long-term trend-following strategy. Its core value lies in:

  1. Minimalism: Only uses two moving averages and volume; transparent logic, not prone to overfitting
  2. Trend is king: Only enters after confirming trends; avoids counter-trend trading
  3. Controllable risk: Immediate exit when price breaks below SMA200, effectively protecting principal

For quantitative traders, Faber strategy is an excellent entry case for understanding trend-following. Although its signal lag cannot be avoided, it is precisely this "confirming trends rather than predicting trends" design philosophy that has allowed it to withstand the test of time in long-term practice. It is recommended for use on 4-hour or daily levels, with patience and discipline, as a trend-following component in an investment portfolio.