Smart Market Bias [PhenLabs]📊 Smart Market Bias Indicator (SMBI)
Version: PineScript™ v6
Description
The Smart Market Bias Indicator (SMBI) is an advanced technical analysis tool that combines multiple statistical approaches to determine market direction and strength. It utilizes complexity analysis, information theory (Kullback Leibler divergence), and traditional technical indicators to provide a comprehensive market bias assessment. The indicator features adaptive parameters based on timeframe and trading style, with real-time visualization through a sophisticated dashboard.
🔧 Components
Complexity Analysis: Measures price movement patterns and trend strength
KL Divergence: Statistical comparison of price distributions
Technical Overlays: RSI and Bollinger Bands integration
Filter System: Volume and trend validation
Visual Dashboard: Dynamic color-coded display of all components
Simultaneous current timeframe + higher time frame analysis
🚨Important Explanation Feature🚨
By hovering over each individual cell in this comprehensive dashboard, you will get a thorough and in depth explanation of what each cells is showing you
Visualization
HTF Visualization
📌 Usage Guidelines
Based on your own trading style you should alter the timeframe length that you would like to be analyzing with your dashboard
The longer the term of the position you are planning on entering the higher timeframe you should have your dashboard set to
Bias Interpretation:
Values > 50% indicate bullish bias
Values < 50% indicate bearish bias
Neutral zone: 45-55% suggests consolidation
✅ Best Practices:
Use appropriate timeframe preset for your trading style
Monitor all components for convergence/divergence
Consider filter strength for signal validation
Use color intensity as confidence indicator
⚠️ Limitations
Requires sufficient historical data for accurate calculations
Higher computational complexity on lower timeframes
May lag during extremely volatile conditions
Best performance during regular market hours
What Makes This Unique
Multi-Component Analysis: Combines complexity theory, statistical analysis, and traditional technical indicators
Adaptive Parameters: Automatically optimizes settings based on timeframe
Triple-Layer Filtering: Uses trend, volume, and minimum strength thresholds
Visual Confidence System: Color intensity indicates signal strength
Multi-Timeframe Capabilities: Allowing the trader to analyze not only their current time frame but also the higher timeframe bias
🔧 How It Works
The indicator processes market data through four main components:
Complexity Score (40% weight): Analyzes price returns and pattern complexity
Kullback Leibler Divergence (30% weight): Compares current and historical price distributions
RSI Analysis (20% weight): Momentum and oversold/overbought conditions
Bollinger Band Position (10% weight): Price position relative to volatility
Underlying Method
Maintains rolling windows of price data for multiple calculations
Applies custom normalization using hyperbolic tangent function
Weights component scores based on reliability and importance
Generates final bias percentage with confidence visualization
💡 Note: For optimal results, use in conjunction with price action analysis and consider multiple timeframe confirmation. The indicator performs best when all components show alignment.
Complexity
Surface Roughness EstimatorIntroduction
Roughness of a signal is often non desired since smooth signals are easier to analyse, its logical to say that anything interacting with rough price is subject to decrease in accuracy/efficiency and can induce non desired effects such as whipsaws. Being able to measure it can give useful information and potentially avoid errors in an analysis.
It is said that roughness appear when a signal have high-frequencies (short wavelengths) components with considerable amplitudes, so its not wrong to say that "estimating roughness" can be derived into "estimating complexity".
Measuring Roughness
There are a lot of way to estimate roughness in a signal, the most well know method being the estimation of fractal dimensions. Here i will use a first order autocorrelation function.
Auto-correlation is defined by the linear relationship between a signal and a delayed version of itself, for exemple if the price goes on the same direction than the price i bars back then the auto-correlation will increase, else decrease. So what this have to do with roughness ? Well when the auto-correlation decrease it means that the dominant frequency is high, and therefore that the signal is rough.
Interpretation Of The Indicator
When the indicator is high it means that price is rough, when its low it indicate that price is smooth. Originally its the inverse way but i found that it was more convenient to do it this way. We can interpret low values of the indicator as a trending market but its not totally true, for example high values dont always indicate that the market is ranging.
Here the comparison with the indicator applied to price (orange) and a moving average (purple)
The average measurement applied to a moving average is way lower than the one using the price, this is because a moving average is smoother than price.
Its also interesting to see that some trend strength estimator like efficiency ratio can treat huge volatility signals as trend as shown below.
Here the efficiency ratio treat this volatile movement as a trending market, our indicator instead indicate that this movement is rough, such indication can avoid situation where price is followed by another huge volatile movement in the opposite direction.
Its important to make the distinction between volatility and trend strength, the trend is defined by low frequencies components of a signal, therefore measuring trend strength can be resumed as measuring the amplitude of such frequencies, but roughness estimation can do a great job as well.
Conclusion
I have showed how to estimate roughness in price and compared how our indicator behaved in comparison with a classic trend strength measurement tool. Filters or any other indicator can be way more efficient if they know how to filter according to a situation, more commonly smoothing more when price is rough and smoothing less when price is smooth. Its good to have a wider view of how market is behaving and not sticking with the binary view of "Trending" and "Ranging" .
I hope you find a use to this script :)
Best Regards