Divergence Macro Sentiment Indicator (DMSI)The Divergence Macro Sentiment Indicator (DMSI)
Think of DMSI as your daily “mood ring” for the markets. It boils down the tug-of-war between growth assets (S&P 500, copper, oil) and safe havens (gold, VIX) into one clear histogram—so you instantly know if the bulls have broad backing or are charging ahead with one foot tied behind.
🔍 What You’re Seeing
Green bars (above zero): Risk-on conviction.
Equities and commodities are rallying while gold and volatility retreat.
Red bars (below zero): Risk-off caution.
Gold or VIX are climbing even as stocks rise—or stocks aren’t fully joined by oil/copper.
Zero line: The line in the sand between “full-steam ahead” and “proceed with care.”
📈 How to Read It
Cross-Zero Signals
Bullish trigger: DMSI flips up through zero after a red stretch → fresh long entries.
Bearish trigger: DMSI tumbles below zero from green territory → tighten stops or go defensive.
Divergence Warnings
If SPX makes new highs but DMSI is rolling over (lower green bars or red), that’s your early red flag—rallies may fizzle.
Strength Confirmation
On pullbacks, only buy dips when DMSI ≥ 0. When DMSI is deeply positive, you can be more aggressive on position size or add leverage.
💡 Trade Guidance & Use Cases
Trend Filter: Only take your S&P or sector-ETF long setups when DMSI is non-negative—avoids hollow rallies.
Macro Pair Trades:
Deep red DMSI: go long gold or gold miners (GLD, GDX).
Strong green DMSI: lean into cyclicals, industrials, even energy names.
Risk Management:
Scale out as DMSI fades into negative territory mid-trade.
Scale in or add to winners when it stays bullish.
Swing Confirmation: Overlay on any oscillator or price-pattern system—accept signals only when the macro tide is flowing in your favour.
🚀 Why It Works
Markets don’t move in a vacuum. When stocks rally but the “real-economy” metals and volatility aren’t cooperating, something’s off under the hood. DMSI catches those cross-asset cracks before price alone can—and gives you an early warning system for smarter entries, tighter risk, and bigger gains when the macro trend really kicks in.
Fundamental Analysis
Extended Altman Z-Score ModelThe Extended Altman Z-Score Model represents a significant advancement in financial analysis and risk assessment, building upon the foundational work of Altman (1968) while incorporating contemporary data analytics approaches as proposed by Fung (2023). This sophisticated model enhances the traditional bankruptcy prediction framework by integrating additional financial metrics and modern analytical techniques, offering a more comprehensive approach to identifying financially distressed companies.
The model's architecture is built upon two distinct yet complementary scoring systems. The traditional Altman Z-Score components form the foundation, including Working Capital to Total Assets (X1), which measures a company's short-term liquidity and operational efficiency. Retained Earnings to Total Assets (X2) provides insight into the company's historical profitability and reinvestment capacity. EBIT to Total Assets (X3) evaluates operational efficiency and earning power, while Market Value of Equity to Total Liabilities (X4) assesses market perception and leverage. Sales to Total Assets (X5) measures asset utilization efficiency.
These traditional components are enhanced by extended metrics introduced by Fung (2023), which provide additional layers of financial analysis. The Cash Ratio (X6) offers insights into immediate liquidity and financial flexibility. Asset Composition (X7) evaluates the quality and efficiency of asset utilization, particularly in working capital management. The Debt Ratio (X8) provides a comprehensive view of financial leverage and long-term solvency, while the Net Profit Margin (X9) measures overall profitability and operational efficiency.
The scoring system employs a sophisticated formula that combines the traditional Z-Score with weighted additional metrics. The traditional Z-Score is calculated as 1.2X1 + 1.4X2 + 3.3X3 + 0.6X4 + 1.0X5, while the extended components are weighted as follows: 0.5 * X6 + 0.3 * X7 - 0.4 * X8 + 0.6 * X9. This enhanced scoring mechanism provides a more nuanced assessment of a company's financial health, incorporating both traditional bankruptcy prediction metrics and modern financial analysis approaches.
The model categorizes companies into three distinct risk zones, each with specific implications for financial stability and required actions. The Safe Zone (Score > 3.0) indicates strong financial health, with low probability of financial distress and suitability for conservative investment strategies. The Grey Zone (Score between 1.8 and 3.0) suggests moderate risk, requiring careful monitoring and additional fundamental analysis. The Danger Zone (Score < 1.8) signals high risk of financial distress, necessitating immediate attention and potential risk mitigation strategies.
In practical application, the model requires systematic and regular monitoring. Users should track the Extended Score on a quarterly basis, monitoring changes in individual components and comparing results with industry benchmarks. Component analysis should be conducted separately, identifying specific areas of concern and tracking trends in individual metrics. The model's effectiveness is significantly enhanced when used in conjunction with other financial metrics and when considering industry-specific factors and macroeconomic conditions.
The technical implementation in Pine Script v6 provides real-time calculations of both traditional and extended scores, offering visual representation of risk zones, detailed component breakdowns, and warning signals for critical values. The indicator automatically updates with new financial data and provides clear visual cues for different risk levels, making it accessible to both technical and fundamental analysts.
However, as noted by Fung (2023), the model has certain limitations that users should consider. It may not fully account for industry-specific factors, requires regular updates of financial data, and should be used in conjunction with other analysis tools. The model's effectiveness can be enhanced by incorporating industry-specific benchmarks and considering macroeconomic factors that may affect financial performance.
References:
Altman, E.I. (1968) 'Financial ratios, discriminant analysis and the prediction of corporate bankruptcy', The Journal of Finance, 23(4), pp. 589-609.
Li, L., Wang, B., Wu, Y. and Yang, Q., 2020. Identifying poorly performing listed firms using data analytics. Journal of Business Research, 109, pp.1–12. doi.org
Thai Gold BahtIndicator Name: Thai Gold Baht
Short Title: Thai Gold Baht
Purpose
This indicator calculates and visualizes the real-time price of 1 Thai Gold Baht (15.244 grams) based on the global gold price ( XAU/USD ) and the USD/THB exchange rate .
Users can customize gold weight and purity to simulate the local Thai gold market price.
What it does
Retrieves live gold price per troy ounce in USD
Retrieves current USD to Thai Baht exchange rate
Converts the value using user-defined weight and purity
Displays result as a real-time chart
Shows calculation details in the Data Window
Ideal for
Traders tracking Thai gold based on international prices
Analysts comparing local and global bullion markets
Anyone needing a configurable, transparent gold price conversion
Pine Script Functionality
// Uses XAU/USD and USD/THB as inputs
// Calculates 1 Baht Gold (96.5% default purity)
// Outputs the value in THB as a chart line
ชื่ออินดิเคเตอร์: Thai Gold Baht
ชื่อย่อ: Thai Gold Baht
วัตถุประสงค์
อินดิเคเตอร์นี้ใช้คำนวณและแสดงราคาทองคำไทย 1 บาท (15.244 กรัม) แบบเรียลไทม์
โดยอ้างอิงจากราคาทองคำในตลาดโลก ( XAU/USD ) และอัตราแลกเปลี่ยน USD/THB
ผู้ใช้สามารถกำหนดน้ำหนักทองและความบริสุทธิ์เองได้ เพื่อจำลองราคาทองคำในประเทศไทยอย่างแม่นยำ
สิ่งที่อินดิเคเตอร์นี้ทำ
ดึงราคาทองคำแบบเรียลไทม์ต่อทรอยออนซ์ในสกุลเงิน USD
ดึงอัตราแลกเปลี่ยน USD → THB แบบเรียลไทม์
คำนวณราคาจากน้ำหนักและเปอร์เซ็นต์ความบริสุทธิ์ที่ผู้ใช้กำหนด
แสดงผลลัพธ์เป็นกราฟแบบเรียลไทม์ในหน่วยบาทไทย
แสดงรายละเอียดการคำนวณในหน้าต่าง Data Window ของ TradingView
เหมาะสำหรับ
นักเทรดที่ต้องการติดตามราคาทองคำไทยจากราคาทองคำตลาดโลก
นักวิเคราะห์ที่เปรียบเทียบราคาทองคำในประเทศและต่างประเทศ
ผู้ใช้งานที่ต้องการการแปลงราคาทองคำระหว่างประเทศให้โปร่งใสและปรับแต่งได้
การทำงานของ Pine Script
// ใช้ข้อมูล XAU/USD และ USD/THB เป็นอินพุต
// คำนวณราคาทองคำไทย 1 บาท (ความบริสุทธิ์เริ่มต้นที่ 96.5%)
// แสดงผลเป็นเส้นกราฟของราคาทองคำในหน่วยบาทไทย
Volume Change % Display1- Current bar's volume change %
2- Previous bar's volume change %
* Each line uses its own color based on volume rising or falling.
* Keeps the layout compact and readable.
FA Dashboard: Valuation, Profitability & SolvencyFundamental Analysis Dashboard: A Multi-Dimensional View of Company Quality
This script presents a structured and customizable dashboard for evaluating a company’s fundamentals across three key dimensions: Valuation, Profitability, and Solvency & Liquidity.
Unlike basic fundamental overlays, this dashboard consolidates multiple financial indicators into visual tables that update dynamically and are grouped by category. Each ratio is compared against configurable thresholds, helping traders quickly assess whether a company meets certain value investing criteria. The tables use color-coded checkmarks and fail marks (✔️ / ❌) to visually signal pass/fail evaluations.
▶️ Key Features
Valuation Ratios:
Earnings Yield: EBIT / EV
EV / EBIT and EV / FCF: Enterprise value metrics for profitability
Price-to-Book, Free Cash Flow Yield, PEG Ratio
Profitability Ratios:
Return on Invested Capital (ROIC), ROE, Operating, Net & Gross Margins, Revenue Growth
Solvency & Liquidity Ratios:
Debt to Equity, Debt to EBITDA, Current Ratio, Quick Ratio, Altman Z-Score
Each of these metrics is calculated using request.financial() and can be viewed using either annual (FY) or quarterly (FQ) data, depending on user preference.
🧠 How to Use
Add the script to any stock chart.
Select your preferred data period (FY or FQ).
Adjust thresholds if desired to match your personal investing strategy.
Review the visual dashboard to see which metrics the company passes or fails.
💡 Why It’s Useful
This tool is ideal for traders or long-term investors looking to filter stocks using fundamental criteria. It draws inspiration from principles used by Benjamin Graham, Warren Buffett, and Joel Greenblatt, offering a fast and informative way to screen quality businesses.
This is not a repackaged built-in or autogenerated script. It’s a custom-built, interactive tool tailored for fundamental analysis using official financial data provided via Pine Script’s request.financial().
S&P 500 Top 25 - EPS AnalysisEarnings Surprise Analysis Framework for S&P 500 Components: A Technical Implementation
The "S&P 500 Top 25 - EPS Analysis" indicator represents a sophisticated technical implementation designed to analyze earnings surprises among major market constituents. Earnings surprises, defined as the deviation between actual reported earnings per share (EPS) and analyst estimates, have been consistently documented as significant market-moving events with substantial implications for price discovery and asset valuation (Ball and Brown, 1968; Livnat and Mendenhall, 2006). This implementation provides a comprehensive framework for quantifying and visualizing these deviations across multiple timeframes.
The methodology employs a parameterized approach that allows for dynamic analysis of up to 25 top market capitalization components of the S&P 500 index. As noted by Bartov et al. (2002), large-cap stocks typically demonstrate different earnings response coefficients compared to their smaller counterparts, justifying the focus on market leaders.
The technical infrastructure leverages the TradingView Pine Script language (version 6) to construct a real-time analytical framework that processes both actual and estimated EPS data through the platform's request.earnings() function, consistent with approaches described by Pine (2022) in financial indicator development documentation.
At its core, the indicator calculates three primary metrics: actual EPS, estimated EPS, and earnings surprise (both absolute and percentage values). This calculation methodology aligns with standardized approaches in financial literature (Skinner and Sloan, 2002; Ke and Yu, 2006), where percentage surprise is computed as: (Actual EPS - Estimated EPS) / |Estimated EPS| × 100. The implementation rigorously handles potential division-by-zero scenarios and missing data points through conditional logic gates, ensuring robust performance across varying market conditions.
The visual representation system employs a multi-layered approach consistent with best practices in financial data visualization (Few, 2009; Tufte, 2001).
The indicator presents time-series plots of the four key metrics (actual EPS, estimated EPS, absolute surprise, and percentage surprise) with customizable color-coding that defaults to industry-standard conventions: green for actual figures, blue for estimates, red for absolute surprises, and orange for percentage deviations. As demonstrated by Padilla et al. (2018), appropriate color mapping significantly enhances the interpretability of financial data visualizations, particularly for identifying anomalies and trends.
The implementation includes an advanced background coloring system that highlights periods of significant earnings surprises (exceeding ±3%), a threshold identified by Kinney et al. (2002) as statistically significant for market reactions.
Additionally, the indicator features a dynamic information panel displaying current values, historical maximums and minimums, and sample counts, providing important context for statistical validity assessment.
From an architectural perspective, the implementation employs a modular design that separates data acquisition, processing, and visualization components. This separation of concerns facilitates maintenance and extensibility, aligning with software engineering best practices for financial applications (Johnson et al., 2020).
The indicator processes individual ticker data independently before aggregating results, mitigating potential issues with missing or irregular data reports.
Applications of this indicator extend beyond merely observational analysis. As demonstrated by Chan et al. (1996) and more recently by Chordia and Shivakumar (2006), earnings surprises can be successfully incorporated into systematic trading strategies. The indicator's ability to track surprise percentages across multiple companies simultaneously provides a foundation for sector-wide analysis and potentially improves portfolio management during earnings seasons, when market volatility typically increases (Patell and Wolfson, 1984).
References:
Ball, R., & Brown, P. (1968). An empirical evaluation of accounting income numbers. Journal of Accounting Research, 6(2), 159-178.
Bartov, E., Givoly, D., & Hayn, C. (2002). The rewards to meeting or beating earnings expectations. Journal of Accounting and Economics, 33(2), 173-204.
Bernard, V. L., & Thomas, J. K. (1989). Post-earnings-announcement drift: Delayed price response or risk premium? Journal of Accounting Research, 27, 1-36.
Chan, L. K., Jegadeesh, N., & Lakonishok, J. (1996). Momentum strategies. The Journal of Finance, 51(5), 1681-1713.
Chordia, T., & Shivakumar, L. (2006). Earnings and price momentum. Journal of Financial Economics, 80(3), 627-656.
Few, S. (2009). Now you see it: Simple visualization techniques for quantitative analysis. Analytics Press.
Gu, S., Kelly, B., & Xiu, D. (2020). Empirical asset pricing via machine learning. The Review of Financial Studies, 33(5), 2223-2273.
Johnson, J. A., Scharfstein, B. S., & Cook, R. G. (2020). Financial software development: Best practices and architectures. Wiley Finance.
Ke, B., & Yu, Y. (2006). The effect of issuing biased earnings forecasts on analysts' access to management and survival. Journal of Accounting Research, 44(5), 965-999.
Kinney, W., Burgstahler, D., & Martin, R. (2002). Earnings surprise "materiality" as measured by stock returns. Journal of Accounting Research, 40(5), 1297-1329.
Livnat, J., & Mendenhall, R. R. (2006). Comparing the post-earnings announcement drift for surprises calculated from analyst and time series forecasts. Journal of Accounting Research, 44(1), 177-205.
Padilla, L., Kay, M., & Hullman, J. (2018). Uncertainty visualization. Handbook of Human-Computer Interaction.
Patell, J. M., & Wolfson, M. A. (1984). The intraday speed of adjustment of stock prices to earnings and dividend announcements. Journal of Financial Economics, 13(2), 223-252.
Skinner, D. J., & Sloan, R. G. (2002). Earnings surprises, growth expectations, and stock returns or don't let an earnings torpedo sink your portfolio. Review of Accounting Studies, 7(2-3), 289-312.
Tufte, E. R. (2001). The visual display of quantitative information (Vol. 2). Graphics Press.
Fakeout Filter📈 Fakeout Filter by ARV
🔍 Overview:
The Fakeout Filter is a smart breakout validation tool designed to help traders avoid false breakouts and focus only on high-probability breakout trades. This indicator combines price action, volume analysis, RSI divergence detection, and OBV trend confirmation to filter out noise and improve your entries.
⚙️ Key Features:
✅ Breakout Detection
Detects when the price closes above a user-defined resistance level.
✅ Volume Spike Confirmation
Confirms breakouts only if there’s a significant increase in volume (customizable via settings).
✅ RSI Bearish Divergence Filter
Warns you of bearish RSI divergence, which often signals fakeouts during breakouts.
✅ OBV Trend Confirmation
Ensures On-Balance Volume (OBV) is rising, aligning volume flow with price movement.
✅ EMA Filter (Trend Confirmation)
Adds a safety filter using Exponential Moving Average (EMA) to ensure price action aligns with the short-term trend.
📌 How to Use:
Set Resistance Level:
In the indicator settings, input a key resistance level (manual input based on your chart analysis).
Watch for Signals:
A green background and “Breakout” label appear when:
Price closes above the resistance.
Volume is significantly higher than average.
OBV is rising.
No bearish RSI divergence is detected.
Price is above the EMA (trend confirmation).
Entry Suggestion:
Consider entering long positions only when the breakout label appears.
For additional confirmation, wait for a retest of the resistance as support before entering.
🔧 Settings:
Resistance Level – Manually set the level you're watching.
Volume Multiplier – Adjusts sensitivity to volume spikes (default: 1.5x average).
RSI Period – RSI used for divergence detection (default: 14).
EMA Period – For trend direction confirmation (default: 21).
✅ Best Use Cases:
Scalpers and intraday traders avoiding fakeouts on 5m–1H timeframes.
Swing traders validating breakout setups.
BTC, ETH, and major altcoins in consolidation or breakout zones.
⚠️ Disclaimer:
This tool is for educational purposes only. Always combine it with your own market analysis and risk management.
ICT Macro Zone Boxes w/ Individual H/L Tracking v3.1ICT Macro Zones (Grey Box Version
This indicator dynamically highlights key intraday time-based macro sessions using a clean, minimalistic grey box overlay, helping traders align with institutional trading cycles. Inspired by ICT (Inner Circle Trader) concepts, it tracks real-time highs and lows for each session and optionally extends the zone box after the session ends — making it a precision tool for intraday setups, order flow analysis, and macro-level liquidity sweeps.
### 🔍 **What It Does**
- Plots **six predefined macro sessions** used in Smart Money Concepts:
- AM Macro (09:50–10:10)
- London Close (10:50–11:10)
- Lunch Macro (11:30–13:30)
- PM Macro (14:50–15:10)
- London SB (03:00–04:00)
- PM SB (15:00–16:00)
- Each zone:
- **Tracks high and low dynamically** throughout the session.
- **Draws a consistent grey shaded box** to visualize price boundaries.
- **Displays a label** at the first bar of the session (optional).
- **Optionally extends** the box to the right after the session closes.
### 🧠 **How It Works**
- Uses Pine Script arrays to define each session’s time window, label, and color.
- Detects session entry using `time()` within a New York timezone context.
- High/Low values are updated per bar inside the session window.
- Once a session ends, the box is optionally closed and fixed in place.
- All visual zones use a standardized grey tone for clarity and consistency across charts.
### 🛠️ **Settings**
- **Shade Zone High→Low:** Enable/disable the grey macro box.
- **Extend Box After Session:** Keep the zone visible after it ends.
- **Show Entry Label:** Display a label at the start of each session.
### 🎯 **Why This Script is Unique**
Unlike basic session markers or colored backgrounds, this tool:
- Focuses on **macro moments of liquidity and reversal**, not just open/close times.
- Uses **per-session logic** to individually track price behavior inside key time windows.
- Supports **real-time high/low tracking and clean zone drawing**, ideal for Smart Money and ICT-style strategies.
Perfect — based on your list, here's a **bundle-style description** that not only explains the function of each script but also shows how they **work together** in a Smart Money/ICT workflow. This kind of cross-script explanation is exactly what TradingView wants to see to justify closed-source mashups or interdependent tools.
---
📚 ICT SMC Toolkit — Script Integration Guide
This set of advanced Smart Money Concept (SMC) tools is designed for traders who follow ICT-based methodologies, combining liquidity theory, time-based precision, and engineered confluences for high-probability trades. Each indicator is optimized to work both independently and synergistically, forming a comprehensive trading framework.
---
First FVG Custom Time Range
**Purpose:**
Plots the **first Fair Value Gap (FVG)** that appears within a defined session (e.g., NY Kill Zone, Custom range). Includes optional retest alerts.
**Best Used With:**
- Use with **ICT Macro Zones (Grey Box Version)** to isolate FVGs during high-probability times like AM Macro or PM SB.
- Combine with **Liquidity Levels** to assess whether FVGs form near swing points or liquidity voids.
---
ICT SMC Liquidity Grabs and OB s
**Purpose:**
Detects **liquidity grabs** (stop hunts above/below swing highs/lows) and **bullish/bearish order blocks**. Includes optional Fibonacci OTE levels for sniper entries.
**Best Used With:**
- Use with **ICT Turtle Soup (Reversal)** for confirmation after a liquidity grab.
- Combine with **Macro Zones** to catch order blocks forming inside timed macro windows.
- Match with **Smart Swing Levels** to confirm structure breaks before entry.
ICT SMC Liquidity Levels (Smart Swing Lows)
**Purpose:**
Automatically marks swing highs/lows based on user-defined lookbacks. Tracks whether those levels have been breached or respected.
**Best Used With:**
- Combine with **Turtle Soup** to detect if a swing level was swept, then reversed.
- Use with **Liquidity Grabs** to confirm a grab occurred at a meaningful structural point.
- Align with **Macro Zones** to understand when liquidity events occur within macro session timing.
ICT Turtle Soup (Liquidity Reversal)
**Purpose:**
Implements the classic ICT Turtle Soup model. Looks for swing failure and quick reversals after a liquidity sweep — ideal for catching traps.
Best Used With:
- Confirm with **Liquidity Grabs + OBs** to identify institutional activity at the reversal point.
- Use **Liquidity Levels** to ensure the reversal is happening at valid previous swing highs/lows.
- Amplify probability when pattern appears during **Macro Zones** or near the **First FVG**.
ICT Turtle Soup Ultimate V2
**Purpose:**
An enhanced, multi-layer version of the Turtle Soup setup that includes built-in liquidity checks, OTE levels, structure validation, and customizable visual output.
**Best Used With:**
- Use as an **entry signal generator** when other indicators (e.g., OBs, liquidity grabs) are aligned.
- Pair with **Macro Zones** for high-precision timing.
- Combine with **First FVG** to anticipate price rebalancing before explosive moves.
---
## 🧠 Workflow Example:
1. **Start with Macro Zones** to focus only on institutional trading windows.
2. Look for **Liquidity Grabs or Swing Sweeps** around key highs/lows.
3. Check for a **Turtle Soup Reversal** or **Order Block Reaction** near that level.
4. Confirm confluence with a **Fair Value Gap**.
5. Execute using the **OTE level** from the Liquidity Grabs + OB script.
---
Let me know which script you want to publish first — I’ll tailor its **individual TradingView description** and flag its ideal **“Best Used With” partners** to help users see the value in your ecosystem.
London/NY Sessions + SMC Levels📜 Indicator Description: London/NY Sessions + SMC Levels
Overview: This indicator highlights the key trading sessions — London, New York, NY Lunch, and Asian Range — providing structured visual guides based on Smart Money Concepts (SMC) and ICT principles.
It dynamically plots:
Session Backgrounds and Boxes for London, NY, Lunch, and Asian sessions
Reference Levels for the High, Low, and Close from today, previous day, or weekly data
Midnight Open line for ICT-style power of three setups
Real-time alerts for session starts, session closes, and important price level crossings
Features:
🕰️ Session Visualization:
Toggle London, NY, Lunch, and Asian session ranges individually, with customizable colors and transparent backgrounds.
🔔 Built-in Alerts:
Alerts for:
Price crossing the previous day's high/low
Price crossing the Midnight Open
Start and end of major sessions (London, NY, Lunch, Asian)
🟩 Reference Levels:
Plot selectable session reference levels:
Today’s intraday High/Low/Close
Previous Day’s High/Low/Close
This Week’s or Previous Week’s levels for broader context.
🌙 Midnight Open:
Track the Midnight New York Open as a reference point for daily bias shifts.
🎯 Customizable Settings:
Choose your session time zones (UTC, New York, London, etc.)
Customize all border colors, background colors, and session hours.
Use Cases:
Identify killzones and optimal trade entry windows for Smart Money Concepts (SMC) and ICT strategies.
Monitor liquidity pool sweeps and session transitions.
Confirm or refine your intraday or swing trading setups by referencing session highs/lows.
Recommended For:
ICT traders
Smart Money Concepts (SMC) practitioners
Forex, indices, crypto, and futures traders focusing on session-based volatility patterns
Anyone wanting a clean, professional session mapping tool
📈
Designed to help you trade with session precision and Smart Money accuracy.
Integrates seamlessly into any ICT, Wyckoff, or Liquidity-based trading approach.
COT3 - Flip Strength Index - Invincible3This indicator uses the TradingView COT library to visualize institutional positioning and potential sentiment or trend shifts. It compares the long% vs short% of commercial and non-commercial traders for both Pair A and Pair B, helping traders identify trend strength, market overextension, and early reversal signals.
🔷 COT RSI
The COT RSI normalizes the net positioning difference between non-commercial and commercial traders over (N=13, 26, and 52)-week periods. It ranges from 0 to 100, highlighting when sentiment is at bullish or bearish extremes.
COT RSI (N)= ((NC - C)−min)/(max-min) x100
🟡 COT Index
The COT Index tracks where the current non-commercial net position lies within its 1-year and 3-year historical range. It reflects institutional accumulation or distribution phases.
Strength represents the magnitude of that positioning bias, visualized through normalized RSI-style metrics.
COT Index (N)= (NC net)/(max-min) x100
🔁 Flip Detection
Flip refers to the crossovers between long% and short%, indicating a change in directional bias among trader groups. When long positions exceed shorts (or vice versa), it signals a possible market flip in sentiment or trend.
For example, Pair B commercial flip is calculated as:
Long% = (Long/Open Interest)×100
Short% = (Short/Open Interest)×100
Flip = Long%−Short%
A bullish flip occurs when long% overtakes short%, and vice versa for a bearish flip. These flips often precede price trend changes or confirm sentiment breakouts.
Flip captures how far current positioning deviates from historical norms — highlighting periods of institutional overconfidence or exhaustion, often leading to significant market turns.
This combination offers a multi-layered edge for identifying when smart money is flipping direction, and whether that flip has strong conviction or is likely to fade.
..........................................................................................................................................................
Coinbase BTC Premium by BIGTAKERBTC Premium Gap Analysis: Binance, Coinbase, Upbit
This indicator provides real-time analysis and visualization of the premium gap between the Binance BTCUSDT price and the BTC prices on Coinbase (BTCUSD) and Upbit (BTCKRW).
Key Features
Coinbase Premium Gap
Measures the price difference between Coinbase and Binance as a percentage.
To improve visibility, the Coinbase premium is visually amplified by 10x.
Upbit Premium Gap
Calculates the premium by comparing Upbit's BTCKRW price (converted into USD using the real-time USDKRW exchange rate) against Binance BTCUSDT.
Dynamic Color Coding
Premiums above 0% are displayed in lime green, indicating positive premiums.
Premiums below 0% are displayed in red, indicating discounts.
Real-Time Labels
Displays real-time premium values for both Coinbase and Upbit on the right side of the chart.
Additional Notes
Upbit premiums are adjusted for the USD/KRW exchange rate to ensure accurate USD-based comparison.
The Coinbase premium is magnified visually (10x) to better capture minor movements, while the actual premium value remains correctly displayed.
The indicator is optimized for traders who monitor global BTC market price disparities across major exchanges.
How to Use
Quickly track global BTC price discrepancies across Binance, Coinbase, and Upbit.
Detect "Kimchi Premium" conditions in the Korean market through Upbit premiums.
Analyze buying and selling pressure in North American markets through Coinbase premiums.
My-Indicator - Global Liquidity & Money Supply M2 + Time OffsetThis script is designed to visualize a global liquidity and money supply index by combining data from various regions and, optionally, central bank activity. Visualizing this data on a chart allows you to see how central banks are intervening in the financial system and how the total amount of money in the economy is changing. Let’s take a look at how it works:
Central Bank Liquidity
Shows the actions of central banks (e.g. FED, ECB) providing short-term cash to commercial banks. If you see spikes or a steady increase in these indicators, it may suggest that liquidity is being increased through intervention, which often stimulates the market.
Money Supply
M2 money supply is a monetary aggregate that includes M1 (cash and current deposits) plus savings deposits, small term deposits, and other financial instruments that, while not as liquid as M1, can be quickly converted into cash. As a result, M2 provides a broader picture of the available money in the economy, which is useful for analyzing market conditions and potential economic trends.
How does it help investors?
It allows you to quickly see when central banks are injecting additional liquidity, which could signal higher prices.
It allows you to see trends in the money supply, which informs potential changes in inflation and the economic cycle.
Combining both sets of data provides a more complete picture – both in the short and long term – which makes it easier to predict upcoming price movements.
This allows investors to better respond to changes in central bank policy and broader monetary trends, increasing their chances of making better investment decisions.
Data Collection
The script retrieves money supply data for key markets such as the USA (USM2), Europe (EUM2), China (CNM2), and Japan (JPM2). It also offers additional money supply series for other markets—like Canada (CAM2), Great Britain (GBM2), Russia (RUM2), Brazil (BRM2), Mexico (MXM2), and New Zealand (NZM2)—with extra options (e.g., Australia, India, Korea, Indonesia, Malaysia, Sweden) disabled by default. Moreover, you can enable data for central bank liquidity (such as FED, RRP, TGA, ECB, PBC, BOJ, and other central banks), which are also disabled by default.
Index Calculation
The indicator calculates the index by adding together all the enabled money supply series (and the central bank data if activated) and then scales the sum by dividing it by 1,000,000,000,000 (one trillion). This scaling makes the resulting values more manageable and easier to read on the chart.
Time Offset Feature
A key feature of the script is the time offset. With the input parameter "Time Offset (days)", the user can shift the plotted index line by a specific number of days. The script converts the given offset in days into a number of bars based on the current chart's timeframe. This allows you to adjust for the delay between liquidity changes and their effect on asset prices.
Overall, the indicator plots a line on your chart representing the global liquidity and money supply index, allowing you to visually monitor trends and better understand how liquidity and central bank actions may influence market movements.
What makes this script different from others?
Every supported market—both major regions (USA, Eurozone, China, Japan, etc.) and additional ones—is available. You can toggle each series on or off, so you can view only Money Supply data, only Central Bank Liquidity, or any custom combination.
Separated Data Groups. Inputs are organized into clear groups (“Money Supply”, “Other Money Supply”, “Central Bank Liquidity”), making it easy to focus on just the data you need without clutter.
True Day‑Based Offset. This script converts your chosen “Time Offset (days)” into actual days regardless of timeframe. Whether you’re on a 5‑minute or daily chart, the index is always shifted by exactly the number of days you specify.
Gold/Silver RatioOverview
This indicator displays the Gold/Silver Ratio by dividing the price of gold (XAUUSD) by the price of silver (XAGUSD) on the same timeframe. It is a widely used tool in macroeconomic and precious metals analysis, helping traders and investors evaluate the relative value of gold compared to silver.
📈 What it does
Plots the ratio between gold and silver prices as a line on the chart.
Displays two key horizontal levels:
Overbought level at 90 (dashed red line).
Oversold level at 70 (dashed green line).
Highlights the chart background to show extreme conditions:
Red shading when the ratio exceeds 90 (gold is likely overvalued relative to silver).
Green shading when the ratio drops below 70 (silver is likely overvalued relative to gold).
🧠 How to Use
When the ratio exceeds 90, it suggests that gold may be overbought or silver may be undervalued. Historically, these have been good times to consider shifting exposure from gold to silver.
When the ratio falls below 70, it may indicate silver is overbought or gold is undervalued.
This tool is best used in conjunction with technical analysis, macroeconomic trends, or RSI/Bollinger Bands applied to the ratio.
⚙️ Inputs
This version of the script uses OANDA's XAUUSD and XAGUSD pairs for spot gold and silver prices. You may edit the request.security() calls to change data sources (e.g., FXCM, FOREXCOM, or CFD tickers from your broker).
✅ Best For:
Macro traders
Commodity investors
Ratio and spread traders
Long-term portfolio reallocators
DDDDD: SET50 (40 Stocks) - % New 52W LowsDDDDD: SET50 - % New 52W Lows (40 Stocks)
This indicator measures the percentage of selected SET50 stocks making a new 52-week low, helping identify periods of extreme market fear that often align with long-term buying opportunities.
How It Works:
Tracks the daily closing prices of 40 major SET50 constituents.
A stock is counted when it closes at its lowest price over the past 252 trading days (approximately 1 year).
Calculates the percentage of new 52-week lows relative to 40 stocks.
Displays threshold lines to highlight levels of market panic.
📈 Threshold Levels:
Threshold Line Color Level (%) Interpretation Action
30% Threshold Orange 30% Early signs of stress Start monitoring opportunities
33% Threshold Yellow 33% Confirmed panic Consider gradual accumulation
50% Panic Zone Red 50% Extreme market panic Aggressive accumulation zone
📌 Important Notes:
Why not use the full 50 stocks?
Due to TradingView Pine Script's current technical limits, a script cannot request data for more than 40 symbols efficiently.
Therefore, this indicator uses 40 representative SET50 stocks to ensure optimal performance without exceeding system limits.
The selected stocks are diversified across major sectors to maintain reliability.
🔥 Key Insights:
Historically, spikes above 30%-50% of stocks making new lows have coincided with major market bottoms (e.g., 2011, 2020).
Higher simultaneous new lows = stronger potential for long-term recovery.
PEAD strategy█ OVERVIEW
This strategy trades the classic post-earnings announcement drift (PEAD).
It goes long only when the market gaps up after a positive EPS surprise.
█ LOGIC
1 — Earnings filter — EPS surprise > epsSprThresh %
2 — Gap filter — first regular 5-minute bar gaps ≥ gapThresh % above yesterday’s close
3 — Timing — only the first qualifying gap within one trading day of the earnings bar
4 — Momentum filter — last perfDays trading-day performance is positive
5 — Risk management
• Fixed stop-loss: stopPct % below entry
• Trailing exit: price < Daily EMA( emaLen )
█ INPUTS
• Gap up threshold (%) — 1 (gap size for entry)
• EPS surprise threshold (%) — 5 (min positive surprise)
• Past price performance — 20 (look-back bars for trend check)
• Fixed stop-loss (%) — 8 (hard stop distance)
• Daily EMA length — 30 (trailing exit length)
Note — Back-tests fill on the second 5-minute bar (Pine limitation).
Live trading: enable calc_on_every_tick=true for first-tick entries.
────────────────────────────────────────────
█ 概要(日本語)
本ストラテジーは決算後の PEAD を狙い、
EPS サプライズがプラス かつ 寄付きギャップアップ が発生した銘柄をスイングで買い持ちします。
█ ロジック
1 — 決算フィルター — EPS サプライズ > epsSprThresh %
2 — ギャップフィルター — レギュラー時間最初の 5 分足が前日終値+ gapThresh %以上
3 — タイミング — 決算当日または翌営業日の最初のギャップのみエントリー
4 — モメンタムフィルター — 過去 perfDays 営業日の騰落率がプラス
5 — リスク管理
• 固定ストップ:エントリー − stopPct %
• 利確:終値が日足 EMA( emaLen ) を下抜け
█ 入力パラメータ
• Gap up threshold (%) — 1 (ギャップ条件)
• EPS surprise threshold (%) — 5 (EPS サプライズ最小値)
• Past price performance — 20 (パフォーマンス判定日数)
• Fixed stop-loss (%) — 8 (固定ストップ幅)
• Daily EMA length — 30 (利確用 EMA 期間)
注意 — Pine の仕様上、バックテストでは寄付き 5 分足の次バーで約定します。
実運用で寄付き成行に合わせたい場合は calc_on_every_tick=true を有効にしてください。
────
ご意見や質問があればお気軽にコメントください。
Happy trading!
Global M2 [BizFing]MARKETSCOM:BITCOIN ECONOMICS:USM2
This is an indicator designed to show the correlation between the global M2 money supply and Bitcoin.
This indicator basically provides a Global M2 index by summing the M2 money supply data from the United States, South Korea, China, Japan, the EU, and the United Kingdom.
Furthermore, it is configured to allow you to add or remove the M2 data of desired countries within the settings.
I hope this proves to be a small aid in predicting the future price of Bitcoin.
If you have any questions or require any improvements while using it, please feel free to contact me.
Thank you.
TUF_LOGICTUF_LOGIC: Three-Value Logic for Pine Script v6
The TUF_LOGIC library implements a robust three-valued logic system (trilean logic) for Pine Script v6, providing a formal framework for reasoning about uncertain or incomplete information in financial markets. By extending beyond binary True/False states to include an explicit "Uncertain" state, this library enables more nuanced algorithmic decision-making, particularly valuable in environments characterized by imperfect information.
Core Architecture
TUF_LOGIC offers two complementary interfaces for working with trilean values:
Enum-Based API (Recommended): Leverages Pine Script v6's enum capabilities with Trilean.True , Trilean.Uncertain , and Trilean.False for improved type safety and performance.
Integer-Based API (Legacy Support): Maintains compatibility with existing code using integer values 1 (True), 0 (Uncertain), and -1 (False).
Fundamental Operations
The library provides type conversion methods for seamless interaction between integer representation and enum types ( to_trilean() , to_int() ), along with validation functions to maintain trilean invariants.
Logical Operators
TUF_LOGIC extends traditional boolean operators to the trilean domain with NOT , AND , OR , XOR , and EQUALITY functions that properly handle the Uncertain state according to the principles of three-valued logic.
The library implements three different implication operators providing flexibility for different logical requirements: IMP_K (Kleene's approach), IMP_L (Łukasiewicz's approach), and IMP_RM3 (Relevant implication under RM3 logic).
Inspired by Tarski-Łukasiewicz's modal logic formulations, TUF_LOGIC includes modal operators: MA (Modal Assertion) evaluates whether a state is possibly true; LA (Logical Assertion) determines if a state is necessarily true; and IA (Indeterminacy Assertion) identifies explicitly uncertain states.
The UNANIMOUS operator evaluates trilean values for complete agreement, returning the consensus value if one exists or Uncertain otherwise. This function is available for both pairs of values and arrays of trilean values.
Practical Applications
TUF_LOGIC excels in financial market scenarios where decision-making must account for uncertainty. It enables technical indicator consensus by combining signals with different confidence levels, supports multi-timeframe analysis by reconciling potentially contradictory signals, enhances risk management by explicitly modeling uncertainty, and handles partial information systems where some data sources may be unreliable.
By providing a mathematically sound framework for reasoning about uncertainty, TUF_LOGIC elevates trading system design beyond simplistic binary logic, allowing for more sophisticated decision-making that better reflects real-world market complexity.
Library "TUF_LOGIC"
Three-Value Logic (TUF: True, Uncertain, False) implementation for Pine Script.
This library provides a comprehensive set of logical operations supporting trilean logic systems,
including Kleene, Łukasiewicz, and RM3 implications. Compatible with Pine v6 enums.
method validate(self)
Ensures a valid trilean integer value by clamping to the appropriate range .
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The integer value to validate.
Returns: An integer value guaranteed to be within the valid trilean range.
method to_trilean(self)
Converts an integer value to a Trilean enum value.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The integer to convert (typically -1, 0, or 1).
Returns: A Trilean enum value: True (1), Uncertain (0), or False (-1).
method to_int(self)
Converts a Trilean enum value to its corresponding integer representation.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The Trilean enum value to convert.
Returns: Integer value: 1 (True), 0 (Uncertain), or -1 (False).
method NOT(self)
Negates a trilean integer value (NOT operation).
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The integer value to negate.
Returns: Negated integer value: 1 -> -1, 0 -> 0, -1 -> 1.
method NOT(self)
Negates a Trilean enum value (NOT operation).
Namespace types: series Trilean
Parameters:
self (series Trilean) : The Trilean enum value to negate.
Returns: Negated Trilean: True -> False, Uncertain -> Uncertain, False -> True.
method AND(self, comparator)
Logical AND operation for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The first integer value.
comparator (int) : The second integer value to compare with.
Returns: Integer result of the AND operation (minimum value).
method AND(self, comparator)
Logical AND operation for Trilean enum values following three-valued logic.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The first Trilean enum value.
comparator (series Trilean) : The second Trilean enum value to compare with.
Returns: Trilean result of the AND operation.
method OR(self, comparator)
Logical OR operation for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The first integer value.
comparator (int) : The second integer value to compare with.
Returns: Integer result of the OR operation (maximum value).
method OR(self, comparator)
Logical OR operation for Trilean enum values following three-valued logic.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The first Trilean enum value.
comparator (series Trilean) : The second Trilean enum value to compare with.
Returns: Trilean result of the OR operation.
method EQUALITY(self, comparator)
Logical EQUALITY operation for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The first integer value.
comparator (int) : The second integer value to compare with.
Returns: Integer representation (1/-1) indicating if values are equal.
method EQUALITY(self, comparator)
Logical EQUALITY operation for Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The first Trilean enum value.
comparator (series Trilean) : The second Trilean enum value to compare with.
Returns: Trilean.True if both values are equal, Trilean.False otherwise.
method XOR(self, comparator)
Logical XOR (Exclusive OR) operation for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The first integer value.
comparator (int) : The second integer value to compare with.
Returns: Integer result of the XOR operation.
method XOR(self, comparator)
Logical XOR (Exclusive OR) operation for Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The first Trilean enum value.
comparator (series Trilean) : The second Trilean enum value to compare with.
Returns: Trilean result of the XOR operation.
method IMP_K(self, comparator)
Material implication using Kleene's logic for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The antecedent integer value.
comparator (int) : The consequent integer value.
Returns: Integer result of Kleene's implication operation.
method IMP_K(self, comparator)
Material implication using Kleene's logic for Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The antecedent Trilean enum value.
comparator (series Trilean) : The consequent Trilean enum value.
Returns: Trilean result of Kleene's implication operation.
method IMP_L(self, comparator)
Logical implication using Łukasiewicz's logic for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The antecedent integer value.
comparator (int) : The consequent integer value.
Returns: Integer result of Łukasiewicz's implication operation.
method IMP_L(self, comparator)
Logical implication using Łukasiewicz's logic for Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The antecedent Trilean enum value.
comparator (series Trilean) : The consequent Trilean enum value.
Returns: Trilean result of Łukasiewicz's implication operation.
method IMP_RM3(self, comparator)
Logical implication using RM3 logic for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The antecedent integer value.
comparator (int) : The consequent integer value.
Returns: Integer result of the RM3 implication operation.
method IMP_RM3(self, comparator)
Logical implication using RM3 logic for Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The antecedent Trilean enum value.
comparator (series Trilean) : The consequent Trilean enum value.
Returns: Trilean result of the RM3 implication operation.
method MA(self)
Modal Assertion (MA) operation for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The integer value to evaluate.
Returns: 1 if the value is 1 or 0, -1 if the value is -1.
method MA(self)
Modal Assertion (MA) operation for Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The Trilean enum value to evaluate.
Returns: Trilean.True if value is True or Uncertain, Trilean.False if value is False.
method LA(self)
Logical Assertion (LA) operation for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The integer value to evaluate.
Returns: 1 if the value is 1, -1 otherwise.
method LA(self)
Logical Assertion (LA) operation for Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The Trilean enum value to evaluate.
Returns: Trilean.True if value is True, Trilean.False otherwise.
method IA(self)
Indeterminacy Assertion (IA) operation for trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The integer value to evaluate.
Returns: 1 if the value is 0, -1 otherwise.
method IA(self)
Indeterminacy Assertion (IA) operation for Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The Trilean enum value to evaluate.
Returns: Trilean.True if value is Uncertain, Trilean.False otherwise.
method UNANIMOUS(self, comparator)
Evaluates the unanimity between two trilean integer values.
Namespace types: series int, simple int, input int, const int
Parameters:
self (int) : The first integer value.
comparator (int) : The second integer value.
Returns: Integer value of self if both values are equal, 0 (Uncertain) otherwise.
method UNANIMOUS(self, comparator)
Evaluates the unanimity between two Trilean enum values.
Namespace types: series Trilean
Parameters:
self (series Trilean) : The first Trilean enum value.
comparator (series Trilean) : The second Trilean enum value.
Returns: Value of self if both values are equal, Trilean.Uncertain otherwise.
method UNANIMOUS(self)
Evaluates the unanimity among an array of trilean integer values.
Namespace types: array
Parameters:
self (array) : The array of integer values.
Returns: First value if all values are identical, 0 (Uncertain) otherwise.
method UNANIMOUS(self)
Evaluates the unanimity among an array of Trilean enum values.
Namespace types: array
Parameters:
self (array) : The array of Trilean enum values.
Returns: First value if all values are identical, Trilean.Uncertain otherwise.
RSI + MACD + Liquidity FinderLiquidity Finder: The liquidity zones are heuristic and based on volume and swing points. You may need to tweak the volumeThreshold and lookback to match the asset's volatility and timeframe.
Timeframe: This script works on any timeframe, but signals may vary in reliability (e.g., higher timeframes like 4H or 1D may reduce noise).
Customization: You can modify signal conditions (e.g., require only RSI or MACD) or add filters like trend direction using moving averages.
Backtesting: Use TradingView's strategy tester to evaluate performance by converting the indicator to a strategy (replace plotshape with strategy.entry/strategy.close).
Accurate Global M2 (Top10 GDP, FX-Stabilized)This script was created to solve the serious distortions found in other circulating "Global M2" indicators.
Many previous versions used noisy daily FX rates, unweighted country data, mixed liquidity categories (e.g., RRP, TGA), or aggregated low-quality sources, causing exaggerated or misleading charts.
This version fixes those problems by:
Using Top 10 global economies only (based on GDP).
GDP-weighting each country's M2 contribution.
Fetching monthly-averaged M2 data.
Applying monthly FX conversions to eliminate daily volatility noise.
Forward-shifting the M2 line (default 90 days) to study potential Bitcoin correlations.
Keeping the math clean, without mixing central bank liquidity tools with broad M2 aggregates.
As a result, this script provides a more realistic and stable representation of global M2 expansion in USD terms, more suitable for serious macroeconomic analysis and Bitcoin market correlation studies.
Sharpe Ratio Forced Selling StrategyThis study introduces the “Sharpe Ratio Forced Selling Strategy”, a quantitative trading model that dynamically manages positions based on the rolling Sharpe Ratio of an asset’s excess returns relative to the risk-free rate. The Sharpe Ratio, first introduced by Sharpe (1966), remains a cornerstone in risk-adjusted performance measurement, capturing the trade-off between return and volatility. In this strategy, entries are triggered when the Sharpe Ratio falls below a specified low threshold (indicating excessive pessimism), and exits occur either when the Sharpe Ratio surpasses a high threshold (indicating optimism or mean reversion) or when a maximum holding period is reached.
The underlying economic intuition stems from institutional behavior. Institutional investors, such as pension funds and mutual funds, are often subject to risk management mandates and performance benchmarking, requiring them to reduce exposure to assets that exhibit deteriorating risk-adjusted returns over rolling periods (Greenwood and Scharfstein, 2013). When risk-adjusted performance improves, institutions may rebalance or liquidate positions to meet regulatory requirements or internal mandates, a behavior that can be proxied effectively through a rising Sharpe Ratio.
By systematically monitoring the Sharpe Ratio, the strategy anticipates when “forced selling” pressure is likely to abate, allowing for opportunistic entries into assets priced below fundamental value. Exits are equally mechanized, either triggered by Sharpe Ratio improvements or by a strict time-based constraint, acknowledging that institutional rebalancing and window-dressing activities are often time-bound (Coval and Stafford, 2007).
The Sharpe Ratio is particularly suitable for this framework due to its ability to standardize excess returns per unit of risk, ensuring comparability across timeframes and asset classes (Sharpe, 1994). Furthermore, adjusting returns by a dynamically updating short-term risk-free rate (e.g., US 3-Month T-Bills from FRED) ensures that macroeconomic conditions, such as shifting interest rates, are accurately incorporated into the risk assessment.
While the Sharpe Ratio is an efficient and widely recognized measure, the strategy could be enhanced by incorporating alternative or complementary risk metrics:
• Sortino Ratio: Unlike the Sharpe Ratio, the Sortino Ratio penalizes only downside volatility (Sortino and van der Meer, 1991). This would refine entries and exits to distinguish between “good” and “bad” volatility.
• Maximum Drawdown Constraints: Integrating a moving window maximum drawdown filter could prevent entries during persistent downtrends not captured by volatility alone.
• Conditional Value at Risk (CVaR): A measure of expected shortfall beyond the Value at Risk, CVaR could further constrain entry conditions by accounting for tail risk in extreme environments (Rockafellar and Uryasev, 2000).
• Dynamic Thresholds: Instead of static Sharpe thresholds, one could implement dynamic bands based on the historical distribution of the Sharpe Ratio, adjusting for volatility clustering effects (Cont, 2001).
Each of these risk parameters could be incorporated into the current script as additional input controls, further tailoring the model to different market regimes or investor risk appetites.
References
• Cont, R. (2001) ‘Empirical properties of asset returns: stylized facts and statistical issues’, Quantitative Finance, 1(2), pp. 223-236.
• Coval, J.D. and Stafford, E. (2007) ‘Asset Fire Sales (and Purchases) in Equity Markets’, Journal of Financial Economics, 86(2), pp. 479-512.
• Greenwood, R. and Scharfstein, D. (2013) ‘The Growth of Finance’, Journal of Economic Perspectives, 27(2), pp. 3-28.
• Rockafellar, R.T. and Uryasev, S. (2000) ‘Optimization of Conditional Value-at-Risk’, Journal of Risk, 2(3), pp. 21-41.
• Sharpe, W.F. (1966) ‘Mutual Fund Performance’, Journal of Business, 39(1), pp. 119-138.
• Sharpe, W.F. (1994) ‘The Sharpe Ratio’, Journal of Portfolio Management, 21(1), pp. 49-58.
• Sortino, F.A. and van der Meer, R. (1991) ‘Downside Risk’, Journal of Portfolio Management, 17(4), pp. 27-31.
Sharpe & Sortino Ratio PROSharpe & Sortino Ratio PRO offers an advanced and more precise way to calculate and visualize the Sharpe and Sortino Ratios for financial assets on TradingView. Its main goal is to provide a scientifically accurate method for assessing the risk-adjusted performance of assets, both in the short and long term. Unlike TradingView’s built-in metrics, this script correctly handles periodic returns, uses optional logarithmic returns, properly annualizes both returns and volatility, and adjusts for the risk-free rate — all critical factors for truly meaningful Sharpe and Sortino calculations.
Users can customize the rolling analysis window (e.g., 252 periods for one year on daily data) and the long-term smoothing period (e.g., 1260 periods for five years). There’s also an option to select between linear and logarithmic returns and to manually input a risk-free rate if real-time data from FRED (the 3-Month T-Bill Rate via FRED:DGS3MO) is unavailable. Based on the chart’s timeframe (daily, weekly, or monthly), the script automatically adjusts the risk-free rate to a per-period basis.
The Sharpe Ratio is calculated by first determining the asset’s excess returns (returns after subtracting the risk-free return per period), then computing the average and standard deviation of those excess returns over the specified window, and finally annualizing these figures separately — in line with best scientific practices (Sharpe, 1994). The Sortino Ratio follows a similar approach but only considers negative returns, focusing specifically on downside risk (Sortino & Van der Meer, 1991).
To enhance readability, the script visualizes the ratios using a color gradient: strong negative values are shown in red, neutral values in yellow, and strong positive values in green. Additionally, the long-term averages for both Sharpe and Sortino are plotted with steady colors (teal and orange, respectively), making it easier to spot enduring performance trends.
Why calculating Sharpe and Sortino Ratios manually on TradingView is necessary?
While TradingView provides basic Sharpe and Sortino Ratios, they come with significant methodological flaws that can lead to misleading conclusions about an asset’s true risk-adjusted performance.
First, TradingView often computes volatility based on the standard deviation of price levels rather than returns (TradingView, 2023). This method is problematic because it causes the volatility measure to be directly dependent on the asset’s absolute price. For instance, a stock priced at $1,000 will naturally show larger absolute daily price moves than a $10 stock, even if their percentage changes are similar. This artificially inflates the measured standard deviation and, as a result, depresses the calculated Sharpe Ratio.
Second, TradingView frequently neglects to adjust for the risk-free rate. By treating all returns as risky returns, the computed Sharpe Ratio may significantly underestimate risk-adjusted performance, especially when interest rates are high (Sharpe, 1994).
Third, and perhaps most critically, TradingView doesn’t properly annualize the mean excess return and the standard deviation separately. In correct financial math, the mean excess return should be multiplied by the number of periods per year, while the standard deviation should be multiplied by the square root of the number of periods per year (Cont, 2001; Fabozzi et al., 2007). Incorrect annualization skews the Sharpe and Sortino Ratios and can lead to under- or overestimating investment risk.
These flaws lead to three major issues:
• Overstated volatility for high-priced assets.
• Incorrect scaling between returns and risk.
• Sharpe Ratios that are systematically biased downward, especially in high-price or high-interest environments.
How to properly calculate Sharpe and Sortino Ratios in Pine Script?
To get accurate results, the Sharpe and Sortino Ratios must be calculated using the correct methodology:
1. Use returns, not price levels, to calculate volatility. Ideally, use logarithmic returns for better mathematical properties like time additivity (Cont, 2001).
2. Adjust returns by subtracting the risk-free rate on a per-period basis to obtain true excess returns.
3. Annualize separately:
• Multiply the mean excess return by the number of periods per year (e.g., 252 for daily data).
• Multiply the standard deviation by the square root of the number of periods per year.
4. Finally, divide the annualized mean excess return by the annualized standard deviation to calculate the Sharpe Ratio.
The Sortino Ratio follows the same structure but uses downside deviations instead of standard deviations.
By following this scientifically sound method, you ensure that your Sharpe and Sortino Ratios truly reflect the asset’s real-world risk and return characteristics.
References
• Cont, R. (2001). Empirical properties of asset returns: stylized facts and statistical issues. Quantitative Finance, 1(2), pp. 223–236.
• Fabozzi, F.J., Gupta, F. and Markowitz, H.M. (2007). The Legacy of Modern Portfolio Theory. Journal of Investing, 16(3), pp. 7–22.
• Sharpe, W.F. (1994). The Sharpe Ratio. Journal of Portfolio Management, 21(1), pp. 49–58.
• Sortino, F.A. and Van der Meer, R. (1991). Downside Risk: Capturing What’s at Stake in Investment Situations. Journal of Portfolio Management, 17(4), pp. 27–31.
• TradingView (2023). Help Center - Understanding Sharpe and Sortino Ratios. Available at: www.tradingview.com (Accessed: 25 April 2025).
Mongoose Capital: FlowWave + Conviction Strip🟩 Indicator Name
Mongoose Capital: FlowWave + Conviction Strip
📜 Short Description
Smoothed Money Flow Oscillator with conviction scoring columns to assess flow strength.
🧠 Description (Long Form)
The Mongoose Capital: FlowWave + Conviction Strip is a refined visualization of money flow dynamics designed to identify shifts in volume pressure and trend strength.
This dual-panel indicator includes:
• FlowWave Line — A smoothed momentum curve built from normalized money flow data, filtered through dual EMAs. Green (positive) and purple (negative) segments help traders quickly assess bias shifts.
• Conviction Score Columns — A histogram below the zero line shows strength of flow deltas (momentum of volume pressure). Green/red bars appear when strength exceeds a critical threshold, while gray bars indicate low conviction.
• Background Zone Coloring — Optional dark red/green gradient to enhance visibility of positive/negative phases.
✅ Designed for traders who value clarity and minimal noise
✅ Pairs well with macro trend filters or breakout strategies
✅ Built and published by Mongoose Capital
🔧 Default Settings
Money Flow Length: 14
Signal Cooldown: 5 bars
Source: HLC3
EMA Wave Filter: 3
Strength Threshold: 20
🧪 Suggested Use
Confirm entries/exits in trend continuation setups
Identify divergences between price and money flow
Filter low-conviction trades using the histogram's gray zone
Spot early accumulation or distribution through wave crossovers
📢 Author
Published by: TheRealMongoose
Powered by: Mongoose Capital
Feel free to tag us in your setups.
M2 Global Liquidity Index [Extended + Offset]M2 Global Liquidity Index
This indicator visualizes global M2 money supply, weighted in USD, based on major economic regions.
Features:
Standard Mode: Includes M2 data from the USA, China, Eurozone, Japan, and the UK.
Extended Mode: Adds Switzerland, Canada, India, Russia, Brazil, South Korea, Mexico, and South Africa.
Offset Function: Adjustable time lag (78 or 108 days) to analyze the delayed impact of liquidity on financial markets.
Use Case:
Designed to help identify global liquidity cycles and assess potential turning points in financial markets. Rising global liquidity generally supports risk assets like equities and crypto, while declining liquidity can put downward pressure on these markets.
Technical Details:
Non-USD M2 values are converted using real-time FX rates.
All values are displayed in trillions of USD (Tn).
Note:
Not all countries release M2 data in real-time or at the same frequency. Minor delays and discrepancies may occur.
Example: