90-Day Beta to BTCOverview:
The 90-Day Beta to BTC indicator measures the volatility of a specific token relative to Bitcoin (BTC) over the past 90 days. Beta is a widely used statistical measure in financial markets that indicates how much a token's price moves in relation to BTC. A higher beta means the token is more volatile compared to BTC, while a lower beta means it is less volatile or moves similarly to BTC.
How It Works:
This indicator calculates the daily logarithmic returns of both the token and Bitcoin, then computes the covariance between their returns and the variance of Bitcoin’s returns. The resulting Beta value reflects the degree to which the token’s price fluctuates relative to Bitcoin's price over the past 90 days.
Beta > 1: The token is more volatile than Bitcoin, showing higher price swings.
Beta = 1: The token moves in lockstep with Bitcoin, exhibiting similar volatility.
Beta < 1: The token is less volatile than Bitcoin, showing smaller price fluctuations.
Beta = 0: The token's price movement is uncorrelated with Bitcoin’s price.
Negative Beta: The token moves opposite to Bitcoin, indicating an inverse relationship.
Use Case:
This indicator is particularly useful for traders or investors looking to identify tokens with high speculative volatility. Tokens with Beta values above 1 are typically high-risk, high-reward assets, often driven by hype, social trends, or market speculation. Conversely, tokens with Beta values below 1 offer a more stable price relationship with Bitcoin, making them less volatile and potentially safer.
In the context of a Trash Token Tournament, tokens with a higher Beta (greater than 1) may be more attractive due to their heightened volatility and potential for larger price swings, making them the “wild cards” of the market.
Visual Representation:
The Beta value is plotted as a line chart beneath the main price chart, offering a visual representation of the token’s volatility relative to Bitcoin over the last 90 days. Spikes in Beta indicate periods of increased volatility, while drops suggest stability.
週期
Quarterly Theory ICT 04 [TradingFinder] SSMT 4Quarter Divergence🔵 Introduction
Sequential SMT Divergence is an advanced price-action-based analytical technique rooted in the ICT (Inner Circle Trader) methodology. Its primary objective is to identify early-stage divergences between correlated assets within precise time structures. This tool not only breaks down market structure but also enables traders to detect engineered liquidity traps before the market reacts.
In simple terms, SMT (Smart Money Technique) occurs when two correlated assets—such as indices (ES and NQ), currency pairs (EURUSD and GBPUSD), or commodities (Gold and Silver)—exhibit different reactions at key price levels (swing highs or lows). This lack of alignment is often a sign of smart money manipulation and signals a lack of confirmation in the ongoing trend—hinting at an imminent reversal or at least a pause in momentum.
In its Sequential form, SMT divergences are examined through a more granular temporal lens—between intraday quarters (Q1 through Q4). When SMT appears at the transition from one quarter to another (e.g., Q1 to Q2 or Q3 to Q4), the signal becomes significantly more powerful, often aligning with a critical phase in the Quarterly Theory—a framework that segments market behavior into four distinct phases: Accumulation, Manipulation, Distribution, and Reversal/Continuation.
For instance, a Bullish SMT forms when one asset prints a new low while its correlated counterpart fails to break the corresponding low from the previous quarter. This usually indicates absorption of selling pressure and the beginning of accumulation by smart money. Conversely, a Bearish SMT arises when one asset makes a higher high, but the second asset fails to confirm, signaling distribution or a fake-out before a decline.
However, SMT alone is not enough. To confirm a true Market Structure Break (MSB), the appearance of a Precision Swing Point (PSP) is essential—a specific candlestick formation on a lower timeframe (typically 5 to 15 minutes) that reveals the entry of institutional participants. The combination of SMT and PSP provides a more accurate entry point and better understanding of premium and discount zones.
The Sequential SMT Indicator, introduced in this article, dynamically scans charts for such divergence patterns across multiple sessions. It is applicable to various markets including Forex, crypto, commodities, and indices, and shows particularly strong performance during mid-week sessions (Wednesdays and Thursdays)—when most weekly highs and lows tend to form.
Bullish Sequential SMT :
Bearish Sequential SMT :
🔵 How to Use
The Sequential SMT (SSMT) indicator is designed to detect time and structure-based divergences between two correlated assets. This divergence occurs when both assets print a similar swing (high or low) in the previous quarter (e.g., Q3), but in the current quarter (e.g., Q4), only one asset manages to break that swing level—while the other fails to reach it.
This temporal mismatch is precisely identified by the SSMT indicator and often signals smart money activity, a market phase transition, or even the presence of an engineered liquidity trap. The signal becomes especially powerful when paired with a Precision Swing Point (PSP)—a confirming candle on lower timeframes (5m–15m) that typically indicates a market structure break (MSB) and the entry of smart liquidity.
🟣 Bullish Sequential SMT
In the previous quarter, both assets form a similar swing low.
In the current quarter, one asset (e.g., EURUSD) breaks that low and trades below it.
The other asset (e.g., GBPUSD) fails to reach the same low, preserving the structure.
This time-based divergence reflects declining selling pressure, potential absorption, and often marks the end of a manipulation phase and the start of accumulation. If confirmed by a bullish PSP candle, it offers a strong long opportunity, with stop-losses defined just below the swing low.
🟣 Bearish Sequential SMT
In the previous quarter, both assets form a similar swing high.
In the current quarter, one asset (e.g., NQ) breaks above that high.
The other asset (e.g., ES) fails to reach that high, remaining below it.
This type of divergence signals weakening bullish momentum and the likelihood of distribution or a fake-out before a price drop. When followed by a bearish PSP candle, it sets up a strong shorting opportunity with targets in the discount zone and protective stops placed above the swing high.
🔵 Settings
⚙️ Logical Settings
Quarterly Cycles Type : Select the time segmentation method for SMT analysis.
Available modes include: Yearly, Monthly, Weekly, Daily, 90 Minute, and Micro.
These define how the indicator divides market time into Q1–Q4 cycles.
Symbol : Choose the secondary asset to compare with the main chart asset (e.g., XAUUSD, US100, GBPUSD).
Pivot Period : Sets the sensitivity of the pivot detection algorithm. A smaller value increases responsiveness to price swings.
Activate Max Pivot Back : When enabled, limits the maximum number of past pivots to be considered for divergence detection.
Max Pivot Back Length : Defines how many past pivots can be used (if the above toggle is active).
Pivot Sync Threshold : The maximum allowed difference (in bars) between pivots of the two assets for them to be compared.
Validity Pivot Length : Defines the time window (in bars) during which a divergence remains valid before it's considered outdated.
🎨 Display Settings
Show Cycle :Toggles the visual display of the current Quarter (Q1 to Q4) based on the selected time segmentation
Show Cycle Label : Shows the name (e.g., "Q2") of each detected Quarter on the chart.
Show Bullish SMT Line : Draws a line connecting the bullish divergence points.
Show Bullish SMT Label : Displays a label on the chart when a bullish divergence is detected.
Bullish Color : Sets the color for bullish SMT markers (label, shape, and line).
Show Bearish SMT Line : Draws a line for bearish divergence.
Show Bearish SMT Label : Displays a label when a bearish SMT divergence is found.
Bearish Color : Sets the color for bearish SMT visual elements.
🔔 Alert Settings
Alert Name : Custom name for the alert messages (used in TradingView’s alert system).
Message Frequency :
All: Every signal triggers an alert.
Once Per Bar: Alerts once per bar regardless of how many signals occur.
Per Bar Close: Only triggers when the bar closes and the signal still exists.
Time Zone Display : Choose the time zone in which alert timestamps are displayed (e.g., UTC).
Bullish SMT Divergence Alert : Enable/disable alerts specifically for bullish signals.
Bearish SMT Divergence Alert : Enable/disable alerts specifically for bearish signals
🔵 Conclusion
The Sequential SMT (SSMT) indicator is a powerful and precise tool for identifying structural divergences between correlated assets within a time-based framework. Unlike traditional divergence models that rely solely on sequential pivot comparisons, SSMT leverages Quarterly Theory, in combination with concepts like liquidity sweeps, market structure breaks (MSB) and precision swing points (PSP), to provide a deeper and more actionable view of market dynamics.
By using SSMT, traders gain not only the ability to identify where divergence occurs, but also when it matters most within the market cycle. This empowers them to anticipate major moves or traps before they fully materialize, and position themselves accordingly in high-probability trade zones.
Whether you're trading Forex, crypto, indices, or commodities, the true strength of this indicator is revealed when used in sync with the Accumulation, Manipulation, Distribution, and Reversal phases of the market. Integrated with other confluence tools and market models, SSMT can serve as a core component in a professional, rule-based, and highly personalized trading strategy.
AI-123's BTC vs Gold (Lag Correlation)
DISCLAIMER
I made this indicator with the help of ChatGPT and using what I have learned so far from The Pine Script Mastery Course, LOTS of edits based on what I have learned so far had to be made as well as additions and modifications to my liking thanks to what I have learned so far. I am aware this already exists but I have done my best to make a first ever script/indicator while learning how to properly publish as well, so please bear that in mind.
Overview
This indicator analyzes the correlation between Bitcoin (BTC) and Gold (XAUUSD), with a customizable lag applied to the Gold price, providing insight into the macro relationship between these two assets.
It is designed for traders and investors who want to track how Bitcoin and Gold move in relation to each other, particularly when Gold is lagged by a specific number of days.
Key Features:
BTC and Gold (Lagged) Price Overlay: Display Bitcoin (BTC) and Gold (XAUUSD) prices on the chart, with an adjustable lag applied to the Gold price.
Rolling Correlation Calculation: Measures the correlation between Bitcoin and lagged Gold prices over a customizable lookback period.
Adjustable Lag: The number of days that Gold is lagged relative to Bitcoin is fully customizable (default: 20 days).
Customizable Correlation Length: Allows you to choose the lookback period for the correlation (default: 50 days), providing flexibility for short-term or long-term analysis.
Normalized Plotting: Prices of Bitcoin and Gold are normalized for better visual alignment with the correlation values. BTC is divided by 1000, and Gold by 100.
Correlation Scaling: The correlation value is amplified by 10 for better visual clarity and comparison with price data.
Zero Line: Horizontal line representing a correlation of 0, making it easier to identify positive or negative correlation shifts.
Maximum Correlation Lines: Horizontal lines at +10 and -10 values for extreme correlation scenarios.
Input Settings:
Gold Symbol: Customize the Gold ticker (default: OANDA:XAUUSD).
Bitcoin Symbol: Customize the Bitcoin ticker (default: BINANCE:BTCUSDT).
Lag (in trading days): Adjust the number of trading days to lag the Gold price relative to Bitcoin (default: 20).
Correlation Length (days): Set the number of days over which the rolling correlation is calculated (default: 50).
How to Use:
Price Comparison: The BTC (Spot) and Lagged Gold plots give you a side-by-side visual comparison of the two assets, normalized for clarity.
Correlation Line: The correlation line helps you gauge the strength and direction of the relationship between BTC and lagged Gold. Positive values indicate a strong positive correlation, while negative values indicate a negative correlation.
Visual Analysis: Watch how the correlation shifts with changes in lag and correlation length to identify potential market dynamics between Bitcoin and Gold.
Potential Applications:
Macro Trading: Track how Bitcoin and Gold behave in relation to each other during periods of economic uncertainty or inflation.
Sentiment Analysis: Use the correlation data to understand the sentiment between digital and traditional assets.
Strategic Timing: Identify potential opportunities where Bitcoin and Gold show a strong correlation or diverge based on the lag adjustment.
Understanding Macro Trends/Correlations.
Disclaimer:
This indicator is for informational purposes only. The correlation between Bitcoin and Gold does not guarantee future performance, and users should conduct their own research and use risk management strategies when making trading decisions.
Notes: This script uses historical data, so results may vary across different timeframes.
Customization options allow users to adjust the lag and correlation length to better fit their trading strategy.
Future Enhancements: Additional Correlation Line: A second correlation line for different lengths of lag or different assets.
Color-Coding of Correlation: Future updates may include color-coded correlation strength, visually indicating positive or negative correlation more effectively.
[blackcat] L2 Ehlers Convolution Indicator V2OVERVIEW The L2 Ehlers Convolution Indicator V2 is an advanced technical analysis tool that applies convolution techniques to identify market trends and potential reversal points. It uses adaptive filtering to analyze price movements across multiple timeframes.
FEATURES
• Advanced convolution algorithm based on Ehlers' methodology
• Multiple timeframe analysis (S2 through S60)
• Dynamic color coding for trend direction:
Red: Downward trend
Green: Upward trend • Adjustable sensitivity through period inputs
HOW TO USE
Input Parameters:
• ShortestPeriod: Minimum period length for calculations
• LongestPeriod: Maximum period length for calculations
Interpretation:
• Red bars indicate downward momentum
• Green bars indicate upward momentum
• Bar height corresponds to the timeframe analyzed
LIMITATIONS
• Requires sufficient historical data for accurate calculations
• May produce false signals during volatile markets
• Performance depends on selected period parameters
NOTES
• The indicator uses arrays to store correlation, slope, and convolution values
• Each bar represents a different timeframe analysis
• Color intensity varies based on the strength of the signal
[blackcat] L2 Ehlers Autocorrelation Periodogram V2OVERVIEW
The Ehlers Autocorrelation Periodogram is a sophisticated technical analysis tool that identifies market cycles and their dominant frequencies using autocorrelation and spectral analysis techniques.
BACKGROUND
Developed by John F. Ehlers and detailed in his book "Cycle Analytics for Traders" (2013), this indicator combines autocorrelation functions with discrete Fourier transforms to extract cyclic information from price data.
FUNCTION
The indicator works through these key steps:
Calculates autocorrelation using minimum three-bar averaging
Applies discrete Fourier transform to extract cyclic information
Uses center-of-gravity algorithm to determine dominant cycle
ADVANTAGES
• Rapid response within half-cycle periods
• Accurate relative cyclic power estimation over time
• Correlation constraints between -1 and +1 eliminate amplitude compensation needs
• High resolution independent of windowing functions
HOW TO USE
Add the indicator to your chart
Adjust AvgLength input parameter:
• Default: 3 bars
• Higher values increase smoothing
• Lower values increase sensitivity
Interpret the results:
• Colored bars represent spectral power
• Red to yellow spectrum indicates cycle strength
• White line shows dominant cycle period
INTERPRETATION
• Strong colors indicate significant cyclic activity
• Sharp color transitions suggest potential cycle changes
• Dominant cycle line helps identify primary market rhythm
LIMITATIONS
• Requires sufficient historical data
• Performance may vary in non-cyclical markets
• Results depend on proper parameter settings
NOTES
• Uses highpass and super smoother filtering techniques
• Spectral estimates are normalized between 0 and 1
• Color intensity varies based on spectral power
THANKS
This implementation is based on Ehlers' original work and has been adapted for TradingView's Pine Script platform.
Daily Borders with Weekday Labels[fitfatq]Indicator Overview
This indicator displays daily vertical border lines and the previous day’s weekday label on intraday charts (i.e., charts with a timeframe lower than Daily). It draws a vertical line at the start of each new trading day and places a label displaying the previous day’s weekday (e.g., Monday) at the horizontal midpoint between the previous and the current day. Users can customize various visual aspects such as the separator line style and width, label style, text color, and text size. Additionally, the indicator offers an option to fix the label’s Y coordinate at a specified price level to prevent it from being overlapped by candlesticks.
Parameter Details
Use Fixed Weekday Label Y Coordinate
Type: Boolean
Default: false
Description: When enabled, the weekday label’s vertical position will be fixed at a specified price level (see next parameter). Otherwise, the label’s Y position is determined dynamically (typically based on the current bar’s low minus 3 ticks).
Fixed Weekday Label Y Coordinate (price)
Type: Float
Default: 130.0
Description:
This parameter sets the fixed price level at which the weekday label will be displayed if the "Use Fixed Weekday Label Y Coordinate" option is enabled. Please input a value that corresponds to your chart’s price scale (e.g., 130.50). Note: In charts with high price levels (for example, stocks trading at 3000 or above), it is recommended to set this value to 3000 or above. The higher the value, the closer the label will appear to the candlesticks.
Separator Line Style
Type: String (Options: "Solid", "Dotted", "Dashed")
Default: "Dotted"
Description: Specifies the style of the vertical separator line drawn at the start of each new day. "Solid" displays a continuous line, "Dotted" shows a dotted line, and "Dashed" provides a dashed line.
Separator Line Width
Type: Integer
Default: 1
Description: Determines the thickness of the separator line. A higher number results in a thicker line; the minimum value is 1.
Label Style
Type: String (Options: "None", "Label Up", "Label Down", "Label Left", "Label Right", "Label Center")
Default: "None"
Description: Sets the built-in style for the weekday label. "None" means no background or border (plain text only), while other options apply predefined visual effects.
Text Color
Type: Color
Default: Black
Description: Determines the text color of the weekday label.
Label Text Size
Type: String (Options: "Tiny", "Small", "Normal", "Large", "Huge")
Default: "Normal"
Description: Specifies the text size of the weekday label. Adjust according to preference to ensure the label is readable.
Usage Summary
How It Works:
The indicator detects the start of a new trading day using a change in the daily timeframe (via ta.change(time("D"))). When a new day begins, it draws a vertical separator line at the first bar of that day. If previous day data is available, the indicator calculates the horizontal midpoint between the start of the previous day and the current day and displays the previous day’s weekday label at that position. If the fixed Y coordinate option is enabled, the label is drawn at the specified price level; otherwise, it is positioned relative to the current bar’s low.
Customization:
Users can adjust all visual aspects, including the line style and width as well as the label style, text color, and text size. The fixed Y coordinate option allows the label’s vertical position to remain constant, which helps prevent overlapping with price bars.
Chart Requirement:
This indicator only operates on intraday charts (timeframes lower than Daily) and will not display on Daily or higher timeframe charts.
License
This indicator is released under the Mozilla Public License 2.0. Please credit the original author (fitfatq) when using or sharing this script.
Global M2 Money+ Supply Input Lead (USD)Global M2 Money Supply + INR+CAD Input Lead (USD)
This indicator calculates the global M2 money supply in USD by aggregating M2 data from multiple economies, converted to USD using their respective exchange rates. It overlays the scaled M2 data on the chart with a user-defined time shift to analyze potential correlations with asset prices, such as Bitcoin. The indicator is designed to help traders assess global liquidity trends with a customizable lead or lag.
Countries Included:
Eurozone (EUM2)
North America: United States (USM2), Canada (CAM2)
Non-EU Europe: Switzerland (CHM2), United Kingdom (GBM2), Finland (FIM2), Russia (RUM2)
Pacific: New Zealand (NZM2)
Asia: China (CNM2), Taiwan (TWM2), Hong Kong (HKM2), India (INM2), Japan (JPM2), Philippines (PHM2), Singapore (SGM2)
Latin America: Brazil (BRM2), Colombia (COM2), Mexico (MXM2)
Middle East: United Arab Emirates (AEM2), Turkey (TRM2)
Africa: South Africa (ZAM2)
Input for Lead/Lag:
Time Shift (days): Adjust this input to shift the M2 data forward (positive values) or backward (negative values) on the chart. For example, setting a lead of 85 days shifts the M2 data 85 days into the future, helping traders analyze potential leading indicators for price movements.
Webby's Market OrderThis is visual representation of Webby's Market Order.
When three consecutive lows are above 21 EMA, Uptrend expectation is natural.
When three highs are below 21 EMA, Downtrend expectation is natural.
Alert Conditions can be set when uptrend and down trend are expected.
Use this indicator with IXIC or SPY or major indices.
This is set at three lows/Highs above 21 EMA as looked by Mike Webster.
BySq - Market PsychologyThe script I provided is a Market Psychology Index indicator for TradingView, which focuses on three key psychological market phases:
FOMO (Fear of Missing Out)
Panic Selling
Reversal
This indicator uses volume, price changes, and specific time periods to gauge market sentiment. Let me break it down:
1. Input Parameters:
FOMO Period: Defines how many bars (candles) the FOMO index will consider for its calculation.
Panic Period: Defines the period to evaluate Panic Selling.
Reversal Period: Defines the period to evaluate potential price reversals.
You can adjust these periods based on your analysis preferences. The default for each period is 14.
2. FOMO Index:
The FOMO Index aims to capture the "fear of missing out" behavior in the market.
It uses volume and price change:
Volume is compared to the Simple Moving Average (SMA) of volume over the specified period.
Price change is calculated as the percentage change in price compared to the previous bar.
If both volume and price change indicate strong upward movement, the FOMO index spikes.
3. Panic Selling Index:
The Panic Selling Index captures when traders are selling out of fear, often in a rapid or irrational way.
Similar to the FOMO Index, it considers volume and price change:
It uses volume and compares it to the SMA of volume for the panic period.
Price change is negative, meaning it considers only price drops.
When there is high volume coupled with significant price drops, it signals panic selling.
4. Reversal Index:
The Reversal Index aims to detect potential trend reversals in the market.
This index also considers volume and price change:
It focuses on upward price movement and compares volume to its SMA.
If there’s strong upward price movement along with increasing volume, it signals the possibility of a price reversal.
5. Graphical Output:
Histograms are drawn on the chart for each of the three indices:
FOMO is shown in green (indicating the presence of FOMO) and red (when the index is low).
Panic Selling is shown in orange.
Reversal is shown in purple.
The Zero Line (horizontal dotted line) helps identify when any of the indices is positive or negative.
6. Labels:
Labels for each index are shown on the chart at the relevant bar when the index spikes.
FOMO is labeled "FOMO" in green when it spikes.
Panic Selling is labeled "Panic Selling" in orange when it spikes.
Reversal is labeled "Reversal" in purple when it spikes.
Additionally, period labels show above the chart, indicating the specific periods (FOMO, Panic, and Reversal periods) currently being applied. This provides clarity on what time frame each index is analyzing.
7. How to Use:
FOMO: High values may indicate that traders are buying out of fear of missing out on a rally, suggesting a potentially overheated market.
Panic Selling: High values could suggest irrational selling behavior or capitulation, potentially marking the bottom of a downtrend.
Reversal: High values signal the potential for a market reversal, where the price could change direction due to increased volume and upward movement.
8. Visual Appearance:
The indicator’s histograms change colors based on the level of market sentiment detected. The color-coded approach provides an easy-to-read visual representation of different psychological phases in the market.
The horizontal zero line allows easy differentiation between positive and negative values.
Summary:
This script combines the psychology of the market (FOMO, Panic Selling, and Reversal) into a set of indicators that help traders identify potential turning points or emotional states in the market. By focusing on volume and price change, the script attempts to give a clear picture of market sentiment and possible future movements.
SL - 4 EMAs, 2 SMAs & Crossover SignalsThis TradingView Pine Script code is built for day traders, especially those trading crypto on a 1‑hour chart. In simple words, the script does the following:
Calculates Moving Averages:
It computes four exponential moving averages (EMAs) and two simple moving averages (SMAs) based on the closing price (or any price you select). Each moving average uses a different time period that you can adjust.
Plots Them on Your Chart:
The EMAs and SMAs are drawn on your chart in different colors and line thicknesses. This helps you quickly see the short-term and long-term trends.
Generates Buy and Sell Signals:
Buy Signal: When the fastest EMA (for example, a 10-period EMA) crosses above a slightly slower EMA (like a 21-period EMA) and the four EMAs are in a bullish order (meaning the fastest is above the next ones), the script will show a "BUY" label on the chart.
Sell Signal: When the fastest EMA crosses below the second fastest EMA and the four EMAs are lined up in a bearish order (the fastest is below the others), it displays a "SELL" label.
In essence, the code is designed to help you spot potential entry and exit points based on the relationships between multiple moving averages, which work as trend indicators. This makes it easier to decide when to trade on your 1‑hour crypto chart.
StonkGame Major Market Open/ClosePlots vertical lines for Tokyo, London, and New York session opens and closes — auto-adjusted to your chart's timezone.
Open lines = lighter, dashed style.
Close lines = solid, full-color style.
Helps identify key liquidity windows, session-driven volatility, and clean market structure — without chart clutter.
Fully customizable colors and line styles for a professional, minimal look.
China 10-Year Yield Inverted with Time Lead (Months)The "China 10-Year Yield Inverted with Time Lead (Months)" indicator is a Pine Script tool for TradingView that displays the inverted China 10-Year Government Bond Yield (sourced from TVC:CN10Y) with a user-defined time lead or lag in months. The yield is inverted by multiplying it by -1, making a rising yield appear as a downward movement and vice versa, which helps visualize inverse correlations with other assets. Users can input the number of months to shift the yield forward (lead) or backward (lag), with the shift calculated based on the chart’s timeframe (e.g., 20 bars per month on daily charts). The indicator plots the shifted, inverted yield as a blue line in a separate pane, with a zero line for reference, enabling traders to analyze leading or lagging relationships with other financial data, such as the PBOC Balance Sheet or Bitcoin price.
Price Position Percentile (PPP)
Price Position Percentile (PPP)
A statistical analysis tool that dynamically measures where current price stands within its historical distribution. Unlike traditional oscillators, PPP adapts to market conditions by calculating percentile ranks, creating a self-adjusting framework for identifying extremes.
How It Works
This indicator analyzes the last 200 price bars (customizable) and calculates the percentile rank of the current price within this distribution. For example, if the current price is at the 80th percentile, it means the price is higher than 80% of all prices in the lookback period.
The indicator creates five dynamic zones based on percentile thresholds:
Extremely Low Zone (<5%) : Prices in the lowest 5% of the distribution, indicating potential oversold conditions.
Low Zone (5-25%) : Accumulation zone where prices are historically low but not extreme.
Neutral Zone (25-75%) : Fair value zone representing the middle 50% of the price distribution.
High Zone (75-95%) : Distribution zone where prices are historically high but not extreme.
Extremely High Zone (>95%) : Prices in the highest 5% of the distribution, suggesting potential bubble conditions.
Mathematical Foundation
Unlike fixed-threshold indicators, PPP uses a non-parametric approach:
// Core percentile calculation
percentile = (count_of_prices_below_current / total_prices) * 100
// Threshold calculation using built-in function
p_extremely_low = ta.percentile_linear_interpolation(source, lookback, 5)
p_low = ta.percentile_linear_interpolation(source, lookback, 25)
p_neutral_high = ta.percentile_linear_interpolation(source, lookback, 75)
p_extremely_high = ta.percentile_linear_interpolation(source, lookback, 95)
Key Features
Dynamic Adaptation : All zones adjust automatically as price distribution changes
Statistical Robustness : Works on any timeframe and any market, including highly volatile cryptocurrencies
Visual Clarity : Color-coded zones provide immediate visual context
Non-parametric Analysis : Makes no assumptions about price distribution shape
Historical Context : Shows how zones evolved over time, revealing market regime changes
Practical Applications
PPP provides objective statistical context for price action, helping traders make more informed decisions based on historical price distribution rather than arbitrary levels.
Value Investment : Identify statistically significant low prices for potential entry points
Risk Management : Recognize when prices reach historical extremes for profit taking
Cycle Analysis : Observe how percentile zones expand and contract during different market phases
Market Regime Detection : Identify transitions between accumulation, markup, distribution, and markdown phases
Usage Guidelines
This indicator is particularly effective when:
- Used across multiple timeframes for confirmation
- Combined with volume analysis for validation of extremes
- Applied in conjunction with trend identification tools
- Monitored for divergences between price action and percentile ranking
Vwap Vision #WhiteRabbitVWAP Vision #WhiteRabbit
This Pine Script (version 5) script implements a comprehensive trading indicator called "VWAP Vision #WhiteRabbit," designed for analyzing price movements using the Volume-Weighted Average Price (VWAP) along with multiple customizable features, including adjustable color themes for better visual appeal.
Features:
Customizable Color Themes:
Choose from four distinct themes: Classic, Dark Mode, Fluo, and Phil, enhancing the visual layout to match user preferences.
VWAP Calculation:
Uses standard VWAP calculations based on selected anchor periods (Session, Week, Month, etc.) to help identify price trends.
Band Settings:
Multiple bands are calculated based on standard deviations or percentages, with customization options to configure buy/sell zones and liquidity levels.
Buy/Sell Signals:
Generates clear buy and sell signals based on price interactions with the calculated bands and the exponential moving average (EMA).
Real-time Data Display:
Displays real-time signals and VWAP values for selected trading instruments, including XAUUSD, NAS100, and BTCUSDT, along with related alerts for trading opportunities.
Volatility Analysis:
Incorporates volatility metrics using the Average True Range (ATR) to assess market conditions and inform trading decisions.
Enhanced Table Displays:
Provides tables for clear visualization of trading signals, real-time data, and performance metrics.
This script is perfect for traders looking to enhance their analysis and gain insights for making informed trading decisions across various market conditions.
Liquidity Stress Index SOFR - IORBLiquidity Stress Index (SOFR - IORB)
This indicator tracks the spread between the Secured Overnight Financing Rate (SOFR) and the Interest on Reserve Balances (IORB) set by the Federal Reserve.
A persistently positive spread may indicate funding stress or liquidity shortages in the repo market, as it suggests overnight lending rates exceed the risk-free rate banks earn at the Fed.
Useful for monitoring monetary policy transmission or market/liquidity stress.
Quarterly Cycle Theory with DST time AdjustedThe Quarterly Theory removes ambiguity, as it gives specific time-based reference points to look for when entering trades. Before being able to apply this theory to trading, one must first understand that time is fractal:
Yearly Quarters = 4 quarters of three months each.
Monthly Quarters = 4 quarters of one week each.
Weekly Quarters = 4 quarters of one day each (Monday - Thursday). Friday has its own specific function.
Daily Quarters = 4 quarters of 6 hours each = 4 trading sessions of a trading day.
Sessions Quarters = 4 quarters of 90 minutes each.
90 Minute Quarters = 4 quarters of 22.5 minutes each.
Yearly Cycle: Analogously to financial quarters, the year is divided in four sections of three months each:
Q1 - January, February, March.
Q2 - April, May, June (True Open, April Open).
Q3 - July, August, September.
Q4 - October, November, December.
S&P 500 E-mini Futures (daily candles) — Monthly Cycle.
Monthly Cycle: Considering that we have four weeks in a month, we start the cycle on the first month’s Monday (regardless of the calendar Day):
Q1 - Week 1: first Monday of the month.
Q2 - Week 2: second Monday of the month (True Open, Daily Candle Open Price).
Q3 - Week 3: third Monday of the month.
Q4 - Week 4: fourth Monday of the month.
S&P 500 E-mini Futures (4 hour candles) — Weekly Cycle.
Weekly Cycle: Daye determined that although the trading week is composed by 5 trading days, we should ignore Friday, and the small portion of Sunday’s price action:
Q1 - Monday.
Q2 - Tuesday (True Open, Daily Candle Open Price).
Q3 - Wednesday.
Q4 - Thursday.
S&P 500 E-mini Futures (1 hour candles) — Daily Cycle.
Daily Cycle: The Day can be broken down into 6 hour quarters. These times roughly define the sessions of the trading day, reinforcing the theory’s validity:
Q1 - 18:00 - 00:00 Asia.
Q2 - 00:00 - 06:00 London (True Open).
Q3 - 06:00 - 12:00 NY AM.
Q4 - 12:00 - 18:00 NY PM.
S&P 500 E-mini Futures (15 minute candles) — 6 Hour Cycle.
6 Hour Quarters or 90 Minute Cycle / Sessions divided into four sections of 90 minutes each (EST/EDT):
Asian Session
Q1 - 18:00 - 19:30
Q2 - 19:30 - 21:00 (True Open)
Q3 - 21:00 - 22:30
Q4 - 22:30 - 00:00
London Session
Q1 - 00:00 - 01:30
Q2 - 01:30 - 03:00 (True Open)
Q3 - 03:00 - 04:30
Q4 - 04:30 - 06:00
NY AM Session
Q1 - 06:00 - 07:30
Q2 - 07:30 - 09:00 (True Open)
Q3 - 09:00 - 10:30
Q4 - 10:30 - 12:00
NY PM Session
Q1 - 12:00 - 13:30
Q2 - 13:30 - 15:00 (True Open)
Q3 - 15:00 - 16:30
Q4 - 16:30 - 18:00
S&P 500 E-mini Futures (5 minute candles) — 90 Minute Cycle.
Micro Cycles: Dividing the 90 Minute Cycle yields 22.5 Minute Quarters, also known as Micro Sessions or Micro Quarters:
Asian Session
Q1/1 18:00:00 - 18:22:30
Q2 18:22:30 - 18:45:00
Q3 18:45:00 - 19:07:30
Q4 19:07:30 - 19:30:00
Q2/1 19:30:00 - 19:52:30 (True Session Open)
Q2/2 19:52:30 - 20:15:00
Q2/3 20:15:00 - 20:37:30
Q2/4 20:37:30 - 21:00:00
Q3/1 21:00:00 - 21:23:30
etc. 21:23:30 - 21:45:00
London Session
00:00:00 - 00:22:30 (True Daily Open)
00:22:30 - 00:45:00
00:45:00 - 01:07:30
01:07:30 - 01:30:00
01:30:00 - 01:52:30 (True Session Open)
01:52:30 - 02:15:00
02:15:00 - 02:37:30
02:37:30 - 03:00:00
03:00:00 - 03:22:30
03:22:30 - 03:45:00
03:45:00 - 04:07:30
04:07:30 - 04:30:00
04:30:00 - 04:52:30
04:52:30 - 05:15:00
05:15:00 - 05:37:30
05:37:30 - 06:00:00
New York AM Session
06:00:00 - 06:22:30
06:22:30 - 06:45:00
06:45:00 - 07:07:30
07:07:30 - 07:30:00
07:30:00 - 07:52:30 (True Session Open)
07:52:30 - 08:15:00
08:15:00 - 08:37:30
08:37:30 - 09:00:00
09:00:00 - 09:22:30
09:22:30 - 09:45:00
09:45:00 - 10:07:30
10:07:30 - 10:30:00
10:30:00 - 10:52:30
10:52:30 - 11:15:00
11:15:00 - 11:37:30
11:37:30 - 12:00:00
New York PM Session
12:00:00 - 12:22:30
12:22:30 - 12:45:00
12:45:00 - 13:07:30
13:07:30 - 13:30:00
13:30:00 - 13:52:30 (True Session Open)
13:52:30 - 14:15:00
14:15:00 - 14:37:30
14:37:30 - 15:00:00
15:00:00 - 15:22:30
15:22:30 - 15:45:00
15:45:00 - 15:37:30
15:37:30 - 16:00:00
16:00:00 - 16:22:30
16:22:30 - 16:45:00
16:45:00 - 17:07:30
17:07:30 - 18:00:00
S&P 500 E-mini Futures (30 second candles) — 22.5 Minute Cycle.
Filtered Swing Pivot S&R )Pivot support and resis🔍 Filtered Swing Pivot S&R - Overview
This indicator identifies and plots tested support and resistance levels using a filtered swing pivot strategy. It focuses on high-probability zones where price has reacted before, helping traders better anticipate future price behavior.
It filters out noise using:
Customizable pivot detection logic
Minimum price level difference
ATR (Average True Range) volatility filter
Confirmation by price retesting the level before plotting
⚙️ Core Logic Explained
✅ 1. Pivot Detection
The script uses Pine Script's built-in ta.pivothigh() and ta.pivotlow() functions to find local highs (potential resistance) and lows (potential support).
Pivot Lookback/Lookahead (pivotLen):
A pivot is confirmed if it's the highest (or lowest) point within a lookback and lookahead range of pivotLen bars.
Higher values = fewer, stronger pivots.
Lower values = more, but potentially noisier levels.
✅ 2. Pending Pivot Confirmation
Once a pivot is detected:
It is not drawn immediately.
The script waits until price re-tests that pivot level. This retest confirms the market "respects" the level.
For example: if price hits a previous high again, it's treated as a valid resistance.
✅ 3. Dual-Level Filtering System
To reduce chart clutter and ignore insignificant levels, two filters are applied:
Fixed Threshold (Minimum Level Difference):
Ensures a new pivot level is not too close to the last one.
ATR-Based Filter:
Dynamically adjusts sensitivity based on current volatility using the formula:
java
Copy
Edit
Minimum distance = ATR × ATR Multiplier
Only pivots that pass both filters are plotted.
✅ 4. Line Drawing
Once a pivot is:
Detected
Retested
Filtered
…a horizontal dashed line is drawn at that level to highlight support or resistance.
Resistance: Red (default)
Support: Green (default)
These lines are:
Dashed for clarity
Extended for X bars into the future (user-defined) for forward visibility
🎛️ Customizable Inputs
Parameter Description
Pivot Lookback/Lookahead Bars to the left and right of a pivot to confirm it
Minimum Level Difference Minimum price difference required between plotted levels
ATR Length Number of bars used in ATR volatility calculation
ATR Multiplier for Pivot Multiplies ATR to determine volatility-based pivot separation
Line Extension (bars) How many future bars the level line will extend for better visibility
Resistance Line Color Color for resistance lines (default: red)
Support Line Color Color for support lines (default: green)
📈 How to Use It
This indicator is ideal for:
Identifying dynamic support & resistance zones that adapt to volatility.
Avoiding false levels by waiting for pivot confirmation.
Visual guidance for entries, exits, stop placements, or take-profits.
🔑 Trade Ideas:
Use support/resistance retests for entry confirmations.
Combine with candlestick patterns or volume spikes near drawn levels.
Use in confluence with trendlines or moving averages.
🚫 What It Does Not Do (By Design)
Does not repaint or remove past levels once confirmed.
Does not include labels or alerts (but can be added).
Does not auto-scale based on timeframes (manual tuning recommended).
🛠️ Possible Enhancements (Optional)
If desired, you could extend the functionality to include:
Labels with “S” / “R”
Alert when a new level is tested or broken
Toggle for support/resistance visibility
Adjustable line width or style
tance indicator
Stoch_RSIStochastic RSI – Advanced Divergence Indicator
This custom indicator is an advanced version of the Stochastic RSI that not only smooths and refines the classic RSI input but also automatically detects both regular and hidden divergences using two powerful methods: fractal-based and pivot-based detection. Originally inspired by contributions from @fskrypt, @RicardoSantos, and later improved by developers like @NeoButane and @FYMD, this script has been fully refined for clarity and ease-of-use.
Key Features:
Dual Divergence Detection:
Fractal-Based Divergence: Uses a four-candle pattern to confirm top and bottom fractals for bullish and bearish divergences.
Pivot-Based Divergence: Employs TradingView’s built-in pivot functions for an alternate view of divergence conditions.
Customizable Settings:
The inputs are organized into logical groups (Stoch RSI settings, Divergence Options, Labels, and Market Open Settings) allowing you to adjust smoothing periods, RSI and Stochastic lengths, and divergence thresholds with a user-friendly interface.
Visual Enhancements:
Plots & Fills: The indicator plots both the K and D lines with corresponding fills and horizontal bands for quick visual reference.
Divergence Markers: Diamond shapes and labeled markers indicate regular and hidden divergences on the chart.
Market Open Highlighting: Optional histogram plots highlight the market open candle based on different timeframes for stocks versus non-forex symbols.
PMO + Daily SMA(55)PMO + Daily SMA(55)
This script plots the Price Momentum Oscillator (PMO) using the classic DecisionPoint methodology, along with its signal line and the 55-period Simple Moving Average (SMA) of the daily PMO.
PMO is a smoothed momentum indicator that measures the rate of change and helps identify trend direction and strength. The signal line is an EMA of the PMO, commonly used for crossover signals.
The 55-period SMA of the daily PMO is added as a longer-term trend filter. It remains based on daily data, even when applied to intraday charts, making it useful for aligning lower timeframe trades with higher timeframe momentum.
Ideal for swing and position traders looking to combine short-term momentum with broader trend context.
TCloud Future📘 Tcloud Future – Indicator Description & How to Use
Tcloud Future is a trend-based indicator that creates a forward-projected cloud between:
A customizable Exponential Moving Average (EMA)
A dynamic McGinley Moving Average
The cloud is shifted into the future (like the Ichimoku Cloud), giving traders a visual projection of potential trend direction.
🔧 Components:
EMA (default: 19-period) – fast-reacting average to short-term price action
McGinley Dynamic (default: 26-period) – smoother, adaptive average that reacts to volatility
Forward Projection (default: 26 candles) – pushes the cloud into the future to help anticipate trend continuation or reversal
Cloud Color
Green when EMA is above McGinley (bullish bias)
Red when EMA is below McGinley (bearish bias)
🟢 How to Trade with Tcloud Future
✅ Trend Confirmation
Use the cloud color and slope to confirm the current trend.
Green cloud sloping up → bullish momentum
Red cloud sloping down → bearish momentum
🟩 Entry Strategy (Trend-Following)
Go long when price is above the green cloud and the cloud is rising.
Go short when price is below the red cloud and the cloud is falling.
🔁 Cloud Crossovers (Trend Shift)
A color change in the projected cloud can signal a potential trend reversal.
Use this as a heads-up to prepare for position changes or tighten stops.
🛡️ Support/Resistance Zones
The cloud often acts as a dynamic support/resistance zone.
During an uptrend, pullbacks to the top or middle of the green cloud can be good entries.
During a downtrend, rallies into the red cloud can offer shorting opportunities.
🧠 Tips
Combine with RSI, MACD, or Volume for confirmation.
Avoid using it alone in sideways markets — it performs best in trending conditions.
Adjust projection and smoothing settings to fit the asset/timeframe you're trading.
Goichi Hosoda TheoryGreetings to traders. I offer you an indicator for trading according to the Ichimoku Kinho Hyo trading system. This indicator determines possible time cycles of price reversal and expected asset price values based on the theory of waves and time cycles by Goichi Hosoda.
The indicator contains classic price levels N, V, E and NT, and is supplemented with intermediate levels V+E, V+N, N+NT and x2, x3, x4 for levels V and E, which are used in cases where the wave does not contain corrections and there is no possibility to update the impulse-corrective wave.
A function for counting bars from points A B and C has also been added.
Mercury Venus Conjunction Sextiles 2019-2026How to Use It and What It Means Astrologically
How to Use the Script in TradingView
This Pine Script, called "Mercury Venus Aspects 2019–2026," is made to highlight the dates of Mercury-Venus conjunctions (0°) and sextiles (60°) from 2019 to 2026 on TradingView charts. Here's how to use it:
click “Add to Chart.” It will apply to any chart you have open—stocks, forex, crypto, etc.
Customize the Display
You can turn on/off the visibility of conjunctions and sextiles using checkboxes under "Inputs" in the settings.
You can also adjust the label size (small, normal, large, or huge) for better readability on your chart.
What You’ll See on the Chart
Conjunctions appear as blue shaded zones with labels like “C1,” “C2,” etc. These mark dates when Mercury and Venus are at the same degree.
Sextiles show up in orange with labels like “S1,” “S2,” marking when they’re about 60° apart.
Each event spans a 2-day window (one day before and after the exact aspect).
How to Use It Practically
You can overlay the script on market charts to look for any patterns between these planetary aspects and price movements.
You can also use it to plan personal or financial activities, since these aspects often affect communication, money, and relationships.
What to Keep in Mind
Dates are approximate and based on average planetary cycles (Mercury: ~88 days, Venus: ~225 days). For exact timing, use an ephemeris.
Only conjunctions and sextiles are shown. Oppositions, squares, and trines aren’t included because Mercury and Venus never get far enough apart (more than 75°).
This script is great for astrologers, traders, and enthusiasts who want to see Mercury-Venus aspects directly on their charts and explore their possible effects.
Astrological Meaning of Mercury-Venus Aspects
What Mercury and Venus Represent
Mercury rules communication, thinking, technology, travel, and trade. In global events (mundane astrology), it affects media, markets, and movement of information.
Venus is about love, beauty, money, and pleasure. It influences relationships, aesthetics, and finance. In the world stage, it’s linked to luxury, art, fashion, and economic balance.
When Mercury and Venus form aspects (like conjunctions or sextiles), their energies mix in helpful ways that can affect people and events.
Conjunction (0°) – Mercury and Venus Together
These two planets are in the same sign and degree, so their qualities merge.
For people:
Positive: Smooth communication, charm, creativity, and better relationships. Great for romance, art, and social interaction.
Negative: Too much focus on appearances, sweet talk, or pleasure can cloud judgment. Decisions may lack depth.
For the economy:
Positive: Boosts in media, entertainment, fashion, and tech. Good for trade, deals, and optimism in financial markets.
Negative: Risk of overspending or unrealistic expectations. May cause small market bubbles or misleading hype.
Sextile (60°) – Mercury and Venus in Harmony
These two planets are two signs apart, creating a smooth, supportive energy.
For people:
Positive: Easy conversations, creative teamwork, small financial wins, and pleasant social experiences.
Negative: Energy is mild, so opportunities might be missed if not acted on. People may avoid hard decisions.
For the economy:
Positive: Gradual improvements in areas like marketing, social media, hospitality, and design. Good for diplomacy.
Negative: Lack of strong initiative could limit bigger gains. Minor missteps are possible due to a laid-back attitude.
General Effects
These aspects are mostly beneficial. They support creativity, financial thinking, and social harmony.
Downsides: Conjunctions may lead to overindulgence or shallow choices, while sextiles may cause missed chances due to low energy.
These aspects rarely cause major economic shifts on their own but can amplify trends depending on other planetary influences (like Saturn or Uranus).
Zodiac Sign Influence
Fire signs (Aries, Leo, Sagittarius): Bold communication, energetic spending, gains in media or entertainment.
Earth signs (Taurus, Virgo, Capricorn): Practical results, stable finances, growth in real-world assets like property or food.
Air signs (Gemini, Libra, Aquarius): Intellectual growth, tech innovation, and social ideas flourish.
Water signs (Cancer, Scorpio, Pisces): Emotional depth in conversations, artistic growth, and financial sensitivity.
Mercury-Venus aspects are gentle but helpful. They combine logic (Mercury) with emotion and value (Venus). They’re good times for love, communication, and money—but their benefits depend on how we use the energy. This script lets you easily track these moments on a chart and explore how they might align with real-life trends or decisions.
Disclaimer: This script and its interpretations are for informational and educational purposes only. They do not constitute financial, trading, or professional astrological advice. Always conduct your own research and consult qualified professionals before making any financial or personal decisions. Use at your own discretion.
Stochastic Order Flow Momentum [ScorsoneEnterprises]This indicator implements a stochastic model of order flow using the Ornstein-Uhlenbeck (OU) process, combined with a Kalman filter to smooth momentum signals. It is designed to capture the dynamic momentum of volume delta, representing the net buying or selling pressure per bar, and highlight potential shifts in market direction. The volume delta data is sourced from TradingView’s built-in functionality:
www.tradingview.com
For a deeper dive into stochastic processes like the Ornstein-Uhlenbeck model in financial contexts, see these research articles: arxiv.org and arxiv.org
The SOFM tool aims to reveal the momentum and acceleration of order flow, modeled as a mean-reverting stochastic process. In markets, order flow often oscillates around a baseline, with bursts of buying or selling pressure that eventually fade—similar to how physical systems return to equilibrium. The OU process captures this behavior, while the Kalman filter refines the signal by filtering noise. Parameters theta (mean reversion rate), mu (mean level), and sigma (volatility) are estimated by minimizing a squared-error objective function using gradient descent, ensuring adaptability to real-time market conditions.
How It Works
The script combines a stochastic model with signal processing. Here’s a breakdown of the key components, including the OU equation and supporting functions.
// Ornstein-Uhlenbeck model for volume delta
ou_model(params, v_t, lkb) =>
theta = clamp(array.get(params, 0), 0.01, 1.0)
mu = clamp(array.get(params, 1), -100.0, 100.0)
sigma = clamp(array.get(params, 2), 0.01, 100.0)
error = 0.0
v_pred = array.new(lkb, 0.0)
array.set(v_pred, 0, array.get(v_t, 0))
for i = 1 to lkb - 1
v_prev = array.get(v_pred, i - 1)
v_curr = array.get(v_t, i)
// Discretized OU: v_t = v_{t-1} + theta * (mu - v_{t-1}) + sigma * noise
v_next = v_prev + theta * (mu - v_prev)
array.set(v_pred, i, v_next)
v_curr_clean = na(v_curr) ? 0 : v_curr
v_pred_clean = na(v_next) ? 0 : v_next
error := error + math.pow(v_curr_clean - v_pred_clean, 2)
error
The ou_model function implements a discretized Ornstein-Uhlenbeck process:
v_t = v_{t-1} + theta (mu - v_{t-1})
The model predicts volume delta (v_t) based on its previous value, adjusted by the mean-reverting term theta (mu - v_{t-1}), with sigma representing the volatility of random shocks (approximated in the Kalman filter).
Parameters Explained
The parameters theta, mu, and sigma represent distinct aspects of order flow dynamics:
Theta:
Definition: The mean reversion rate, controlling how quickly volume delta returns to its mean (mu). Constrained between 0.01 and 1.0 (e.g., clamp(array.get(params, 0), 0.01, 1.0)).
Interpretation: A higher theta indicates faster reversion (short-lived momentum), while a lower theta suggests persistent trends. Initial value is 0.1 in init_params.
In the Code: In ou_model, theta scales the pull toward \mu, influencing the predicted v_t.
Mu:
Definition: The long-term mean of volume delta, representing the equilibrium level of net buying/selling pressure. Constrained between -100.0 and 100.0 (e.g., clamp(array.get(params, 1), -100.0, 100.0)).
Interpretation: A positive mu suggests a bullish bias, while a negative mu indicates bearish pressure. Initial value is 0.0 in init_params.
In the Code: In ou_model, mu is the target level that v_t reverts to over time.
Sigma:
Definition: The volatility of volume delta, capturing the magnitude of random fluctuations. Constrained between 0.01 and 100.0 (e.g., clamp(array.get(params, 2), 0.01, 100.0)).
Interpretation: A higher sigma reflects choppier, noisier order flow, while a lower sigma indicates smoother behavior. Initial value is 0.1 in init_params.
In the Code: In the Kalman filter, sigma contributes to the error term, adjusting the smoothing process.
Summary:
theta: Speed of mean reversion (how fast momentum fades).
mu: Baseline order flow level (bullish or bearish bias).
sigma: Noise level (variability in order flow).
Other Parts of the Script
Clamp
A utility function to constrain parameters, preventing extreme values that could destabilize the model.
ObjectiveFunc
Defines the objective function (sum of squared errors) to minimize during parameter optimization. It compares the OU model’s predicted volume delta to observed data, returning a float to be minimized.
How It Works: Calls ou_model to generate predictions, computes the squared error for each timestep, and sums it. Used in optimization to assess parameter fit.
FiniteDifferenceGradient
Calculates the gradient of the objective function using finite differences. Think of it as finding the "slope" of the error surface for each parameter. It nudges each parameter (theta, mu, sigma) by a small amount (epsilon) and measures the change in error, returning an array of gradients.
Minimize
Performs gradient descent to optimize parameters. It iteratively adjusts theta, mu, and sigma by stepping down the "hill" of the error surface, using the gradients from FiniteDifferenceGradient. Stops when the gradient norm falls below a tolerance (0.001) or after 20 iterations.
Kalman Filter
Smooths the OU-modeled volume delta to extract momentum. It uses the optimized theta, mu, and sigma to predict the next state, then corrects it with observed data via the Kalman gain. The result is a cleaner momentum signal.
Applied
After initializing parameters (theta = 0.1, mu = 0.0, sigma = 0.1), the script optimizes them using volume delta data over the lookback period. The optimized parameters feed into the Kalman filter, producing a smoothed momentum array. The average momentum and its rate of change (acceleration) are calculated, though only momentum is plotted by default.
A rising momentum suggests increasing buying or selling pressure, while a flattening or reversing momentum indicates fading activity. Acceleration (not plotted here) could highlight rapid shifts.
Tool Examples
The SOFM indicator provides a dynamic view of order flow momentum, useful for spotting directional shifts or consolidation.
Low Time Frame Example: On a 5-minute chart of SEED_ALEXDRAYM_SHORTINTEREST2:NQ , a rising momentum above zero with a lookback of 5 might signal building buying pressure, while a drop below zero suggests selling dominance. Crossings of the zero line can mark transitions, though the focus is on trend strength rather than frequent crossovers.
High Time Frame Example: On a daily chart of NYSE:VST , a sustained positive momentum could confirm a bullish trend, while a sharp decline might warn of exhaustion. The mean-reverting nature of the OU process helps filter out noise on longer scales. It doesn’t make the most sense to use this on a high timeframe with what our data is.
Choppy Markets: When momentum oscillates near zero, it signals indecision or low conviction, helping traders avoid whipsaws. Larger deviations from zero suggest stronger directional moves to act on, this is on $STT.
Inputs
Lookback: Users can set the lookback period (default 5) to adjust the sensitivity of the OU model and Kalman filter. Shorter lookbacks react faster but may be noisier; longer lookbacks smooth more but lag slightly.
The user can also specify the timeframe they want the volume delta from. There is a default way to lower and expand the time frame based on the one we are looking at, but users have the flexibility.
No indicator is 100% accurate, and SOFM is no exception. It’s an estimation tool, blending stochastic modeling with signal processing to provide a leading view of order flow momentum. Use it alongside price action, support/resistance, and your own discretion for best results. I encourage comments and constructive criticism.