Copula Analysis: Gaussian, Student t, Clayton, Gumbel, and Frank Copulas with Tail Dependence
Info
The Copula Analysis: Gaussian, Student t, Clayton, Gumbel, and Frank Copulas with Tail Dependence is a Script for MetaTrader 5 that copula. mqh analyzes the relationship between two financial series, measuring how they move together beyond simple correlation, particularly during extreme market movements (worst and best days).
Usage
This tool is typically used for enhancing chart analysis and decision making.
Platform
This Script works exclusively on MetaTrader 5 (both build 600+ and newer versions).
Setup
Place the downloaded file in MQL5/Scripts folder via File ? Open Data Folder in MetaTrader 5.
How to Install and Use Copula Analysis: Gaussian, Student t, Clayton, Gumbel, and Frank Copulas with Tail Dependence
1. Installation: Move your script file into the MQL/Scripts directory and restart the platform.
2. Execution: Drag the script onto a chart; it will perform a one-time action, such as closing all open orders or clearing chart objects.
3. Editing: Use MetaEditor (F4) to modify code, click "Compile," and verify no errors appear in the terminal before running.
4. Removing: Scripts stop automatically, but you can remove them manually by right-clicking the chart and choosing "Remove Script."
Frequently Asked Questions
Q: How are scripts different from EAs? A: Scripts execute a single action and then stop; EAs monitor the market and trade continuously.
Q: Can I assign a hotkey to a script? A: Yes, right-click the script in the Navigator, select "Set Hotkey," and define your preferred keyboard shortcut.
Q: Why did my script stop? A: Scripts are designed to stop immediately after finishing their programmed command; this is normal behavior.
What this tool does
Copula.
Typical Use Case
This Script excels in automated trading and technical analysis on MetaTrader 5.
Compatible Platform & Setup
This Script works on MetaTrader 5. Place the file in the MQL5/Scripts folder and restart the terminal.
Description & Settings
Related: Breakeven Levels Indicator - another powerful script for MetaTrader 5 traders.
Copula.mqh analyzes the relationship between two financial series, measuring how they move together beyond simple correlation, particularly during extreme market movements (worst and best days). It offers fitting for five bivariate copula families using maximum likelihood on data ranks: Gaussian, Student t, Clayton, Gumbel, and Frank. The tool provides key statistics including Kendall's tau, tail dependence, the probability of joint extreme events, and the Akaike Information Criterion (AIC) to help select the best copula family. It also calculates conditional probabilities crucial for copula pairs trading strategies and can generate random copula draws. This implementation requires no external DLLs; standard MQL5 math functions are utilized for normal and t distributions.Also recommended: Realized Volatility: Range Volatility Estimators, Realized Variance, and HAR Forecasts - similar script with strong performance on MetaTrader 5.
Usage
Include the header file: #include
Declare arrays for returns of two symbols:
double x[], y[];
// ... fill x and y arrays with historical returns ...
Transform returns to pseudo-observations (ranks scaled to (0, 1)):
double u[], v[];
CCopula::Ranks(x, u);
CCopula::Ranks(y, v);
Instantiate and use the CCopula class:
CCopula c;
c.SetData(u, v);
Fit a specific copula family (e.g., Student t):
if(c.Fit(COPULA_STUDENT))
{
// Retrieve copula properties
double lower = c.LowerTail(); // Conditional probability of extreme negative outcome
double joint = c.JointLower(0.05); // Probability of joint 5% worst days
double aic = c.AIC(); // Akaike Information Criterion
double h = c.H(u[ArraySize(u) - 1], v[ArraySize(v) - 1]); // Conditional probability for the last observed bar
}
Features
Copula Families:
- Gaussian: Assumes independence in the tails (no tail dependence).
- Student t: Exhibits similar dependence in both lower and upper tails.
- Clayton: Primarily captures lower tail dependence (co-occurrence of extreme negative events).
- Gumbel: Primarily captures upper tail dependence (co-occurrence of extreme positive events).
- Frank: Exhibits dependence but does not explicitly model tail dependence.
The Student t copula fitting is optimized for its degrees of freedom, ranging from 2.1 to 100.
Key Statistics:
- Tau: Kendall's tau, measuring monotonic association. Includes calculation for the data's Kendall's tau (tau-b, accounting for ties).
- LowerTail, UpperTail: Measures of tail dependence, indicating the probability of one variable experiencing an extreme event given the other does.
- Cdf: The copula's cumulative distribution function, C(u, v). This is calculated analytically for Archimedean families (Clayton, Gumbel, Frank) and numerically integrated for elliptical families (Gaussian, Student t).
- JointLower, JointUpper: Probability that one series falls into its lowest (highest) q percentile given that the other series falls into its lowest (highest) q percentile.
- LogDensity: The logarithm of the copula's probability density function.
- H (Conditional Distribution): Represents the conditional probability P(U <= u | V = v), often used as a
You may also like: send a trade position to telegram channel - excellent alternative for script users on MetaTrader 5.
Source Code
#property copyright "RobotFX"
#property version "1.00"
#property script_show_inputs
#include <Copula\Copula.mqh>
input string InpX = "XAUUSD";
input string InpY = "XAGUSD";
input ENUM_TIMEFRAMES InpPeriod = PERIOD_D1;
input int InpBars = 1500;
input double InpQ = 0.05;
input string InpCsv = "";
.......
⚠ Limitations & Risk Warning
- This tool is provided for educational and testing purposes only.
- Past performance does not guarantee future results.
- Trading involves substantial risk of loss. Use on a demo account first.
- Results may vary depending on market conditions, broker, and settings.
- We recommend thorough backtesting and forward testing before using with real funds.