References:
# Turning the package on for wavelet coherence. If you haven't installed
# yet, then go to Packages --> Click on Install --> Search for 'biwavelet'
# --> Ok
library(biwavelet)
## Warning: package 'biwavelet' was built under R version 4.1.1
## biwavelet 0.20.21 loaded.
# Import your data(Change the windows slashes(\) to to R studio(/) format)
Data <- read.csv("C:/Users/aliaw/Documents/Wavelet_Codes/Data_Stocks.csv")
# Attach your data so that you can access variables directly using their
# names
attach(Data)
#Assigning variables to A and B
A=MSCI_IS_World_ri # MSCI Islamic World index Returns
B=SP500_ri # S&P 500 Index Returns
nrands=10 #Number of iterations. Higher is better (>500)
# Define two sets of variables with time stamps
DATE=1:length(A)
WA = cbind(DATE, MSCI_IS_World_ri)
WB = cbind(DATE, SP500_ri)
# Specify the number of iterations. The more, the better (>1000). For the
# purpose of this tutorial, we just set it = 10
nrands = 10
#Main calculations
wtc.AB = wtc(WA, WB, nrands = nrands)
##
|
| | 0%
|
|======= | 10%
|
|============== | 20%
|
|===================== | 30%
|
|============================ | 40%
|
|=================================== | 50%
|
|========================================== | 60%
|
|================================================= | 70%
|
|======================================================== | 80%
|
|=============================================================== | 90%
|
|======================================================================| 100%
# Plotting a graph
par(oma = c(0, 0, 0, 1), mar = c(5, 4, 5, 5) + 0.1)
plot(wtc.AB, plot.phase = TRUE, lty.coi = 1, col.coi = "grey", lwd.coi = 2,
lwd.sig = 2, arrow.lwd = 0.03, arrow.len = 0.12, ylab = "Scale", xlab = "Period",
plot.cb = TRUE, main = "Wavelet Coherence: MSCI Islamic Index vs S&P500 Index ")
# Adding grid lines
n = length(WA[, 1])
abline(v = seq(250, n, 250), h = 1:4, col = "brown", lty = 1, lwd = 1)
# Defining x labels
axis(side = 3, at = c(seq(250, n, 250)), labels = c(seq(2017, 2020, 1)))
Time is displayed on the horizontal axis, while the vertical axis shows the frequency (lower is the frequency, higher is the scale). Regions in time-frequency space where the two time series co-vary are located by the wavelet coherence.
Warmer colors (red) represent regions with significant interrelation, while colder colors (blue) signify lower dependence between the series. Cold regions beyond the significant areas represent time and frequencies with no dependence in the series.
An arrow in the wavelet coherence plots represents the lead/lag phase relations between the examined series. A zero phase difference means that the two time series move together on a particular scale. Arrows point to the right (left) when the time series are in phase (anti-phase).
When the two series are in phase, it indicates that they move in the same direction, and anti-phase means that they move in the opposite direction. Arrows pointing to the right-down or left-up indicate that the first variable is leading, while arrows pointing to the right-up or left-down show that the second variable is leading.