PMO Node
Pretty Good Oscillator
Overview
PMO (Pretty Good Oscillator) normalizes price-to-moving average distance by volatility, creating a volatility-adjusted momentum oscillator. It divides the difference between close and SMA by ATR, standardizing momentum measurements across different volatility regimes. This normalization prevents false signals during low-volatility periods while recognizing valid signals during high-volatility conditions.
Where regular momentum can look weak in calm markets but strong in volatile markets, PMO shows relative deviation from the trend regardless of current volatility. PMO positive with rising trend shows valid momentum, PMO negative with falling prices shows valid weakness. Perfect for consistent trading across any market condition.
Formula
PMO normalizes momentum by ATR for volatility adjustment:
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| period | number | 14 | SMA and ATR period. |
| source | Node | Auto | The root data source node. |
💡 Tip: PMO values of ±1 represent "one ATR away from MA". In calm markets (low ATR), need larger price moves to reach ±1. In volatile markets, can reach ±1 easily. This is the key benefit - automatic calibration.
Common Use Cases
1. Volatility-Adjusted Momentum Trading
PMO above 0.75 in uptrend = buy signal. PMO below -0.75 in downtrend = sell signal. Same thresholds work across calm and volatile periods. No need to adjust indicators as volatility changes - PMO does it automatically.
2. Mean Reversion Filtering
In calm markets (low ATR), PMO extremes reach -0.5 values. In volatile markets, extremes at ±2.0. PMO above 1.5 in volatile market indicates real overbought worth fighting. PMO above 0.5 in calm market also overbought. Consistent signals.
3. Breakout Confirmation
Price breaks above resistance, PMO above 0.5 = breakout has momentum. PMO below 0.5 with breakout = weak breakout likely to fail. Volatility-adjusted confirmation prevents false signal entries.
4. Stop Loss Optimization
Long position stop = where PMO crosses below 0 (goes below MA scaled by current volatility). Calm market = tight stops. Volatile market = wider stops. Automatic position management based on volatility.
Advantages & Limitations
Advantages
- Automatically adjusts for volatility regime
- Consistent signals across markets
- No need to change parameters
- Prevents false signals in calm periods
- Recognizes real strength in volatile periods
Limitations
- Requires ATR calculation (adds complexity)
- ATR spikes affect immediate readings
- Still needs trend confirmation
- Less intuitive than raw momentum
- Range values can be confusing to traders
Tips & Best Practices
💡 Remember ATR Effect
PMO spikes occur after sharp moves, not during them (ATR lags). Wait 2-3 bars after sharp move for PMO to stabilize before putting on countertrend trades.
📊 Combine with MA Strategy
PMO designed for SMA(14) use. If using different MA period, calculate PMO with matching period. PMO positive above MA = confirmed uptrend. PMO momentum showing inside bands validates mean-reversion approach.
⚡ Use Consistent Thresholds
Standard: PMO ±0.5 for signals, ±1.0 for extremes. Consistent thresholds work across all assets and timeframes. Don't change based on market condition - that's the whole point of volatility adjustment.
⚠️ Watch for ATR Regime Changes
Sudden ATR drop from news event = PMO can shoot up on calm moves. Sudden ATR spike = PMO flattens on big moves. Awareness helps parse signals through volatility regime changes.
Example Strategy
PMO zero-crossover trend trading strategy:
PMO Zero-Crossover Trend Trade
1Setup Phase
- Price in downtrend below 50-MA
- PMO negative below zero-line
- Waiting for reversal setup
2Entry Signal
- PMO crosses above zero (price bouncing above MA)
- Volatility-adjusted momentum turning positive
- Enter long position off bounce
3Exit Condition
- PMO crosses below zero (momentum fading)
- Price fails to reach 50-MA on second attempt
- Or take profits at 2-3% gain
4Risk Rules
- Stop below recent low (before bounce)
- Target = 2x the stop loss distance
- Risk 1-2% per trade, scale with market condition