## Registered S3 method overwritten by 'xts':
## method from
## as.zoo.xts zoo
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
## Registered S3 methods overwritten by 'forecast':
## method from
## fitted.fracdiff fracdiff
## residuals.fracdiff fracdiff
## ── Attaching packages ───────────────────────────────────────────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.1 ✔ purrr 0.3.3
## ✔ tibble 2.1.3 ✔ dplyr 0.8.3
## ✔ tidyr 1.0.0 ✔ stringr 1.4.0
## ✔ readr 1.3.1 ✔ forcats 0.4.0
## ── Conflicts ──────────────────────────────────────────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
##
## Attaching package: 'aTSA'
## The following object is masked from 'package:forecast':
##
## forecast
## The following object is masked from 'package:graphics':
##
## identify
## Loading required package: Rcpp
## ##
## ## Amelia II: Multiple Imputation
## ## (Version 1.7.5, built: 2018-05-07)
## ## Copyright (C) 2005-2019 James Honaker, Gary King and Matthew Blackwell
## ## Refer to http://gking.harvard.edu/amelia/ for more information
## ##
##
## Attaching package: 'astsa'
## The following object is masked from 'package:forecast':
##
## gas
##
## Attaching package: 'Metrics'
## The following object is masked from 'package:forecast':
##
## accuracy
Foreign exchange rate market contributes a large part of the financial market in the world so it is important for not only policy marker but also investors and business. However forecasting of exchange rate is challenging because it is highly complex, chaotic and noisy. The instability of exchange rate could be influenced by a number of factors, which could be categorised by macro and micro factors, or economical, political and psychological factors. Understanding the trend of exchange rate could be a great help for a government and organisations in a number of different activities as, optimal delivery for government policies or making business decisions.
Due to its importance but fluctuation of exchange rates, a number of researches have been undertaken to explain its behavior to make an appropriate forecast. Rasekhi (2011) classifies the models used for predicting the exchange rates into technical and fundamental models. Fundamental approach is based on fundamental economic variables to determine exchange rates while technical approach relies on past trends to find specific pattern to predict the future. One of reasons could cause the fail of fundamental approach by Maaerinskienn and Balciunas (2014) is the wrong forecast of independent variable cause the inaccurate prediction of exchange rate. To avoid this problem, a technical approach with univariate models or a-theoretical models, which predict future on the basis of past trends could come into replacement. By this method, the influence of other variables could be removed because its analytical power is driven toward its self-understanding of historical data and past errors. With that in mind, this paper choose time series model, an ARIMA to approach exchange rate forecast.
ARIMA stands for Auto Regressive Integrated Moving Average, which is a generalization of an autoregressive moving average (ARMA) model. With an approach to predict future on the basis of past observations, ARIMA’s advantage is keeping the number of parameters to a minimum. However, it could generate poor performance in predicting instability series or long term forecast. Therefore, an extension of ARIMA, a so-called ARIMAX, is also brought into this report to compare and justify the prediction capability of both methods. Extended ARIMA is a combination of ARIMA and a linear regression model, which allows ARIMA to include other information or exogenous variable. Additional explanatory variables could support ARIMA to better predict highly complex exchange rates.
A number of academics and practitioners approach the exchange rate forecast by means of time series model. Akincilar, Temiz and Sahin (2011) studied daily Turkey exchange rates for USD/TL, EURO/TL and POUND/TL by using the moving averages (MA) method, single exponential smoothing method, Holt’s method. The Winter’s method was found to be the most appropriate method to forecast. The ARIMA outperforms VAR during 3 month is what Malin Varenius (2017) discovered on forecast of EUR/USD exchange rate. In this regard, we take both ARIMA and extended ARIMA model to validate, compare and justify its performance on exchange rate forecast.
ARIMA is referred to Box-Jenkins method which has been widely used in time series forecasting (Zhang, 2003). The ARIMA process involves both autoregressive and moving average process while letter ‘I’ stands for integrated, which is the concept for eliminating the trends in time series to make it stationary.
Extended ARIMA or dynamic model or so-called ARIMAX is an ARIMA with a linear regression on the explanatory variables. The number of exogenous variables could not limit to one. This model could be seen as a mixed model which combines both technical and fundamental approach.
Regarding to data used in this paper, the predictor variable is the monthly exchange rate of Australian/United States dollar exchange rate, ranging from January 2015 to August 2015, was downloaded from the Reserve Bank of Australia. To feed in ARIMAX model, a few macroeconomic variables affect the exchange rate, which its correlation evidence has been found in a few articles.
Steps to implement in this methodology:
Stage 1: ARIMA exchange rate - Evaluate and correct stationary - ARIMA model structure: select appropriate p, d, q - Fitting ARIMA model
Stage 2: Extended ARIMA with multiple variables & comparison - Fitting extended ARIMA model with different variables - Compare extended ARIMA with previous ARIMA - Evaluate candidate model - Evaluate the forecast accuracy
1. Plot the data and identify unusual observations
## Parsed with column specification:
## cols(
## asx = col_double(),
## oecd_li = col_double(),
## abs_imports = col_double(),
## abs_exports = col_double(),
## gold_price_london_fixing = col_double(),
## unemployment = col_double(),
## rba_cash_rate = col_double(),
## yearly_inflation = col_double(),
## quarterly_inflation = col_double(),
## exchange_rate = col_double(),
## djia = col_double(),
## pe_ratio = col_double(),
## dividend = col_double(),
## iron = col_double(),
## oil = col_double(),
## Date = col_date(format = "")
## )
ggseasonplot(ts_exch, year.labels=TRUE, year.labels.left=TRUE) +
ylab("Exchange rate") +
ggtitle("Seasonal plot: exhcange rate")
It provides no evidence of seasonal series on seasonal plot. It had a dramatic change in 2008 and 2009 while there were few years with stable rate.
Differencing to achieve stationary
ts_exch %>% diff() %>% plot()
The plot looks stationary. ACF plot is another useful way to assist in identifying non-stationary time series.
Check for stationary
ts_exch %>% diff() %>% ggtsdisplay(main="")
The ACF of differenced exchange rates looks just like that of a white noise series, that is 2 out of 36, just over 5% of spikes are outside these bounds.
In addition to looking at the ACF plot, to confirm its stationary series, we run two unit root tests, Augmented Dickey-Fuller (ADF) test and Kwiatkowski-Phillips-Schmidt-Shin (KPSS) test on time series data.
tseries::adf.test(diff(ts_exch))
## Warning in tseries::adf.test(diff(ts_exch)): p-value smaller than printed
## p-value
##
## Augmented Dickey-Fuller Test
##
## data: diff(ts_exch)
## Dickey-Fuller = -4.6874, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
ADF test is a test for stationary, which validate the null hypothesis that a unit root is present in a time series. In this test, we find evidence of p-value less than 0.05 , which is to reject the null hypothesis.
We got p-value 0.01, less than 0.05, which is ideal for stationary confirmation.
tseries::kpss.test(diff(ts_exch))
## Warning in tseries::kpss.test(diff(ts_exch)): p-value greater than printed
## p-value
##
## KPSS Test for Level Stationarity
##
## data: diff(ts_exch)
## KPSS Level = 0.14143, Truncation lag parameter = 4, p-value = 0.1
In KPSS test, the null hypothesis is that the data are stationary. We look for evidence that the null hypothesis is false or we do not want to reject hypothesis. The p-value greater than 0.05 confirms its white noise.
We got 0.1 as p-value, greater than 0.05, so the null hypothesis of stationarity around a trend is not rejected.
Fitting the model
There are two ways to build the ARIMA model:
Manually find p, d, q
Automatically by function auto arima in forecast module in R. This function auto differencing needed to make data stationary and estimate the AR and MA orders using AICc.
Theoretical patterns of ACF and PACF:
| Type of model | Patterns of ACF | Patterns of PACF |
|---|---|---|
| MA (q) | Cuts off after lags q | Declines exponentially |
| AR (p) | Decays Exponentially | Cuts off after lag p |
| ARMA (p, q) | Exponential | Decay Exponential Decay |
To manually identify the p and q value of Arima, we back to above ACF plot. The autocorrelation shows a few significant peaks but there are no cuts off exponentially. We will probably start with lowest p and q, as ARIMA(0,1,0) and then increase it to find the optimal model.
Another way is to do auto arima to scan the optimum one.
fit_auto <- auto.arima(ts_exch)
fit_auto
## Series: ts_exch
## ARIMA(0,1,0)
##
## sigma^2 estimated as 0.0009148: log likelihood=361.83
## AIC=-721.65 AICc=-721.63 BIC=-718.5
Auto arima give results as ARIMA(0,1,0), which is simply the random walk. The mechanism of auto arima is to search over possible models to find the best model with the lowest AIC, AICc or BIC.
checkresiduals(fit_auto)
##
## Ljung-Box test
##
## data: Residuals from ARIMA(0,1,0)
## Q* = 33.841, df = 24, p-value = 0.08754
##
## Model df: 0. Total lags used: 24
Ljung-Box test shows p-value as 0.08754, which is higher than 5%, which is that we reject the null hypothesis. The model shows an evidence of lack of fit.
It has some significant autocorrelation in the residuals, which means the prediction intervals may not provide accurate coverage. The histogram of the residuals does not show the evidence of normal distribution.
Test multiple candidate models
First, we make a quick review the extended arima with all variables to review its residual analytics.
xreg <- cbind(gold = ts_gold,
unemployment = ts_unempl,
oil = ts_oil)
fit <- auto.arima(ts_exch, xreg = xreg)
checkresiduals(fit)
##
## Ljung-Box test
##
## data: Residuals from Regression with ARIMA(0,1,0) errors
## Q* = 33.548, df = 21, p-value = 0.04049
##
## Model df: 3. Total lags used: 24
A quick residual analysis of extended ARIMA with regressors of gold, unemployment and oil on PACF could give a positive signal that it generates a better p-value at 0.04, which less than 5%, better than ARIMA(0,1,0).
Next step is to compare ARIMA(0,1,0) with all candidates models given by different subsets of predictor variables to select the optimal model by method of Akaike Information Criterion (AIC) and Bayesian Information Criterion (BIC).
## Warning in mapply(FUN = f, ..., SIMPLIFY = FALSE): longer argument not a
## multiple of length of shorter
## aic bic
## Auto arima -721.6544 -718.4954
## Auto arima with all variables - ARIMA(0,1,0) -745.7800 -733.1437
## Auto arima extension with gold & unemployment -719.8668 -710.3896
## Auto arima extension with gold & oil -745.9082 -736.4311
## Auto arima extension with unemployment & oil -748.5062 -726.3526
## rmse
## Auto arima 0.02844253
## Auto arima with all variables - ARIMA(0,1,0) 0.03118331
## Auto arima extension with gold & unemployment 0.02866217
## Auto arima extension with gold & oil 0.02876066
## Auto arima extension with unemployment & oil 0.02844253
According to results, the ARIMA(01,1,0) extension with gold & unemployment have lowest AIC and BIC, which is an optimal solution. However the RMSE give credits to both ARIMA(01,1,0) and Auto arima extension with unemployment & oil. The highest AIC of Auto arima extension with unemployment & oil is a minus point. Finally, we think that AIRMA(0,1,0) and ARIMA(0,1,0) with regressors of gold & unemployment could be the optimal models.
Evaluate candidate model
Now, we evaluate ARIMA(0,1,0) with regressors of gold & unemployment.
xreg <- cbind(gold = ts_gold,
unemployment = ts_unempl)
fit = auto.arima(ts_exch, xreg = xreg)
checkresiduals(fit)
##
## Ljung-Box test
##
## data: Residuals from Regression with ARIMA(0,1,0) errors
## Q* = 37.446, df = 22, p-value = 0.02112
##
## Model df: 2. Total lags used: 24
xreg <- cbind(gold = ts_gold,
unemployment = ts_unempl)
sarima(ts_exch,
p = 0,
d = 1,
q = 0,
xreg = xreg)
## initial value -3.504763
## iter 1 value -3.504763
## final value -3.504763
## converged
## initial value -3.504763
## iter 1 value -3.504763
## final value -3.504763
## converged
## $fit
##
## Call:
## stats::arima(x = xdata, order = c(p, d, q), seasonal = list(order = c(P, D,
## Q), period = S), xreg = xreg, transform.pars = trans, fixed = fixed, optim.control = list(trace = trc,
## REPORT = 1, reltol = tol))
##
## Coefficients:
## gold unemployment
## 0e+00 0.008
## s.e. 1e-04 0.010
##
## sigma^2 estimated as 0.0009032: log likelihood = 362.93, aic = -719.87
##
## $degrees_of_freedom
## [1] 172
##
## $ttable
## Estimate SE t.value p.value
## gold 0.000 1e-04 -0.4478 0.6549
## unemployment 0.008 1e-02 0.8001 0.4247
##
## $AIC
## [1] -4.137165
##
## $AICc
## [1] -4.136762
##
## $BIC
## [1] -4.082699
With random test at each individual lag, there exists a few significant autocorrelations. However, running this model through Box-Ljung test, a test on the “overall” randomness based on a number of lags, we got 0.02 below 0.05, indicating “non-significance.”.
The p-values for the Ljung-Box Q test all are well above 0.05, indicating “non-significance.”
Evaluate the forecast accuracy
ts_exch_train <- window(ts_exch, end=2018)
ts_exch_test <- window(ts_exch, start=2018)
ts_oil_train <- window(ts_oil, end=2018)
ts_oil_test <- window(ts_oil, start=2018)
ts_unempl_train <- window(ts_unempl, end=2018)
ts_unempl_test <- window(ts_unempl, start=2018)
ts_gold_train <- window(ts_gold, end=2018)
ts_gold_test <- window(ts_gold, start=2018)
xreg <- cbind(gold = ts_gold_train,
unemployment = ts_unempl_train)
newxreg <- cbind(gold = ts_gold_test,
unemployment = ts_unempl_test)
sarima.for(ts_exch_train,
n.ahead = 20,
p = 0,
d = 1,
q = 0,
xreg = xreg,
newxreg = newxreg)
## Warning in z[[1L]] + xm: longer object length is not a multiple of shorter
## object length
## $pred
## Jan Feb Mar Apr May Jun Jul
## 2018 0.8073000 0.8105879 0.8126306 0.8105634 0.8081827 0.8059803
## 2019 0.8048128 0.8023113 0.8063361 0.8054200 0.8077671 0.8067524 0.8044151
## Aug Sep Oct Nov Dec
## 2018 0.8076300 0.8091826 0.8108339 0.8081360 0.8049687
## 2019 0.7985052 0.8073000
##
## $se
## Jan Feb Mar Apr May Jun
## 2018 0.03128304 0.04424090 0.05418381 0.06256608 0.06995100
## 2019 0.10836762 0.11279260 0.11705041 0.12115869 0.12513215 0.12898327
## Jul Aug Sep Oct Nov Dec
## 2018 0.07662748 0.08276714 0.08848180 0.09384912 0.09892565 0.10375410
## 2019 0.13272269 0.13635960 0.13990200
lines(ts_exch_test)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Feb 2018 0.8458722 0.8055218 0.8862226 0.78416160 0.9075828
## Mar 2018 0.8523811 0.7953170 0.9094452 0.76510913 0.9396531
## Apr 2018 0.8530475 0.7831586 0.9229364 0.74616160 0.9599334
## May 2018 0.8506873 0.7699866 0.9313881 0.72726615 0.9741085
## Jun 2018 0.8480530 0.7578267 0.9382792 0.71006386 0.9860420
## Jul 2018 0.8482605 0.7494226 0.9470983 0.69710099 0.9994199
## Aug 2018 0.8445577 0.7378006 0.9513148 0.68128676 1.0078286
## Sep 2018 0.8424293 0.7283012 0.9565575 0.66788540 1.0169733
## Oct 2018 0.8433571 0.7223060 0.9644083 0.65822535 1.0284889
## Nov 2018 0.8444270 0.7168279 0.9720262 0.64928100 1.0395731
## Dec 2018 0.8417562 0.7079291 0.9755833 0.63708533 1.0464271
## Jan 2019 0.8391757 0.6993978 0.9789536 0.62540392 1.0529475
## Feb 2019 0.8418299 0.6963445 0.9873153 0.61932916 1.0643306
## Mar 2019 0.8458240 0.6948467 0.9968014 0.61492412 1.0767240
## Apr 2019 0.8473026 0.6910262 1.0035790 0.60829848 1.0863067
## May 2019 0.8399629 0.6785613 1.0013644 0.59312048 1.0868053
## Jun 2019 0.8363534 0.6699844 1.0027223 0.58191405 1.0907927
## Jul 2019 0.8332862 0.6620940 1.0044785 0.57147034 1.0951021
## Aug 2019 0.8348517 0.6589684 1.0107350 0.56586145 1.1038420
## Sep 2019 0.8289268 0.6484744 1.0093792 0.55294862 1.1049050
## Oct 2019 0.8319452 0.6470365 1.0168540 0.54915174 1.1147387
## Nov 2019 0.8346739 0.6454138 1.0239340 0.54522556 1.1241223
## Dec 2019 0.8302539 0.6367402 1.0237676 0.53430025 1.1262075
## Jan 2020 0.8279449 0.6302691 1.0256206 0.52562591 1.1302638
## Feb 2020 0.8308189 0.6290669 1.0325708 0.52226589 1.1393719
## Mar 2020 0.8355626 0.6298151 1.0413100 0.52089901 1.1502261
## Apr 2020 0.8362898 0.6266231 1.0459566 0.51563217 1.1569475
## May 2020 0.8317796 0.6182654 1.0452938 0.50523782 1.1583214
## Jun 2020 0.8286613 0.6113678 1.0459548 0.49633957 1.1609831
## Jul 2020 0.8280369 0.6070287 1.0490451 0.49003402 1.1660398
## Aug 2020 0.8278654 0.6032039 1.0525269 0.48427532 1.1714555
## Sep 2020 0.8239948 0.5957385 1.0522511 0.47490692 1.1730826
## Oct 2020 0.8259620 0.5941666 1.0577573 0.47146157 1.1804624
## Nov 2020 0.8233486 0.5880674 1.0586298 0.46351703 1.1831801
## Dec 2020 0.8200192 0.5813031 1.0587353 0.45493437 1.1851040
## Jan 2021 0.8195384 0.5774361 1.0616407 0.44927481 1.1898020
## Feb 2021 0.8183447 0.5729029 1.0637866 0.44297379 1.1937156
## Mar 2021 0.8173782 0.5686416 1.0661147 0.43696849 1.1977878
## Apr 2021 0.8143582 0.5623701 1.0663463 0.42897562 1.1997407
## May 2021 0.8142817 0.5590834 1.0694799 0.42398956 1.2045737
## Jun 2021 0.8180161 0.5596475 1.0763846 0.42287545 1.2131567
## Jul 2021 0.8170824 0.5555820 1.0785828 0.41715203 1.2170128
## Aug 2021 0.8127144 0.5481192 1.0773096 0.40805092 1.2173778
## Sep 2021 0.8120034 0.5443492 1.0796576 0.40266161 1.2213452
## Oct 2021 0.8149943 0.5443157 1.0856730 0.40102705 1.2289616
## Nov 2021 0.8160644 0.5423947 1.0897340 0.39752272 1.2346060
## Dec 2021 0.8221641 0.5455357 1.0987924 0.39909753 1.2452306
## Jan 2022 0.8189438 0.5393880 1.0984995 0.39140019 1.2464873
## Feb 2022 0.8190745 0.5366217 1.1015272 0.38710028 1.2510487
## Mar 2022 0.8250665 0.5397461 1.1103868 0.38870664 1.2614263
## Apr 2022 0.8302727 0.5421132 1.1184321 0.38957086 1.2709745
## May 2022 0.8321909 0.5412201 1.1231617 0.38718946 1.2771924
## Jun 2022 0.8292183 0.5354630 1.1229735 0.37995831 1.2784782
## Jul 2022 0.8276317 0.5311180 1.1241453 0.37415323 1.2811101
## Aug 2022 0.8282331 0.5289866 1.1274796 0.37057503 1.2858911
## Sep 2022 0.8238339 0.5218792 1.1257886 0.36203409 1.2856338
## Oct 2022 0.8253691 0.5207304 1.1300079 0.35946434 1.2912739
## Nov 2022 0.8240579 0.5167585 1.1313573 0.35408400 1.2940318
## Dec 2022 0.8190675 0.5091303 1.1290048 0.34505942 1.2930756
## Jan 2023 0.8110888 0.4985360 1.1236416 0.33308053 1.2890970
## Feb 2023 0.8158749 0.5007283 1.1310215 0.33389973 1.2978501
## Mar 2023 0.8205576 0.5028383 1.1382769 0.33464788 1.3064674
## Apr 2023 0.8217573 0.5014860 1.1420286 0.33194460 1.3115700
## May 2023 0.8197036 0.4969005 1.1425067 0.32601882 1.3133884
## Jun 2023 0.8144448 0.4891295 1.1397601 0.31691805 1.3119716
## Jul 2023 0.8094595 0.4816514 1.1372677 0.30812028 1.3107988
## Aug 2023 0.8059954 0.4757132 1.1362776 0.30087238 1.3111184
## Sep 2023 0.8089491 0.4762112 1.1416869 0.30007044 1.3178277
## Oct 2023 0.8047361 0.4695605 1.1399116 0.29212933 1.3173428
## Nov 2023 0.8024732 0.4648776 1.1400688 0.28616526 1.3187811
## Dec 2023 0.8010569 0.4610585 1.1410554 0.28107419 1.3210397
## Jan 2024 0.7968981 0.4545137 1.1392825 0.27326632 1.3205299
## Feb 2024 0.7947113 0.4499574 1.1394652 0.26745574 1.3219669
## Mar 2024 0.8050733 0.4579661 1.1521805 0.27421867 1.3359280
## Apr 2024 0.8034186 0.4539740 1.1528633 0.26898916 1.3378481
## May 2024 0.7985559 0.4467893 1.1503224 0.26057533 1.3365364
## Jun 2024 0.7912509 0.4371777 1.1453242 0.24974261 1.3327592
## Jul 2024 0.7911074 0.4347424 1.1474724 0.24609412 1.3361206
## Aug 2024 0.7905223 0.4318802 1.1491644 0.24202651 1.3390181
## Sep 2024 0.7848273 0.4239224 1.1457322 0.23287095 1.3367837
## Oct 2024 0.7772511 0.4140975 1.1404046 0.22185567 1.3326464
## Nov 2024 0.7883149 0.4229265 1.1537032 0.22950163 1.3471281
## Dec 2024 0.7816356 0.4140260 1.1492452 0.21942530 1.3438459
## Jan 2025 0.7815850 0.4117676 1.1514025 0.21599804 1.3471720
## Feb 2025 0.7894778 0.4174656 1.1614900 0.22053420 1.3584214
## Mar 2025 0.7851481 0.4109540 1.1593423 0.21286758 1.3574287
## Apr 2025 0.7865848 0.4102214 1.1629482 0.21098663 1.3621829
## May 2025 0.7898430 0.4113228 1.1683632 0.21094627 1.3687397
## Jun 2025 0.7848214 0.4041566 1.1654862 0.20264479 1.3669980
## Jul 2025 0.7911852 0.4083878 1.1739826 0.20574708 1.3766234
## Aug 2025 0.7895260 0.4046078 1.1744442 0.20084444 1.3782076
## Sep 2025 0.7852164 0.3981891 1.1722438 0.19330915 1.3771237
## Oct 2025 0.7849069 0.3957818 1.1740320 0.18979146 1.3800224
## Nov 2025 0.7831733 0.3919617 1.1743848 0.18486680 1.3814797
## Dec 2025 0.7835395 0.3902526 1.1768265 0.18205903 1.3850201
## Jan 2026 0.7806408 0.3852893 1.1759923 0.17600287 1.3852787
## Feb 2026 0.7872286 0.3898234 1.1846339 0.17944972 1.3950075
## Mar 2026 0.7920716 0.3926231 1.1915201 0.18116786 1.4029754
## Apr 2026 0.7989899 0.3975085 1.2004712 0.18497717 1.4130026
## May 2026 0.7974119 0.3939079 1.2009158 0.18030587 1.4145178
## Jun 2026 0.8003614 0.3948450 1.2058778 0.18017754 1.4205452
## Jul 2026 0.8030972 0.3955783 1.2106162 0.17985076 1.4263437
## Aug 2026 0.8132735 0.4037617 1.2227852 0.18697931 1.4395676
## Sep 2026 0.8047184 0.3932235 1.2162132 0.17539127 1.4340454
## Oct 2026 0.8046182 0.3911497 1.2180867 0.17227275 1.4369637
## Nov 2026 0.8081095 0.3926768 1.2235422 0.17275996 1.4434590
## Dec 2026 0.8070966 0.3897089 1.2244843 0.16875725 1.4454360
## Jan 2027 0.8099247 0.3905911 1.2292583 0.16860935 1.4512401
## Feb 2027 0.8148648 0.3935944 1.2361353 0.17058727 1.4591424
## Mar 2027 0.8192606 0.3960622 1.2424591 0.17203443 1.4664869
## Apr 2027 0.8191313 0.3940136 1.2442491 0.16896981 1.4692928
## May 2027 0.8153700 0.3883416 1.2423985 0.16228646 1.4684536
## Jun 2027 0.8115334 0.3826029 1.2404640 0.15554077 1.4675261
## Jul 2027 0.8137002 0.3828759 1.2445245 0.15481128 1.4725891
## Aug 2027 0.8110130 0.3783033 1.2437228 0.14924061 1.4727855
## Sep 2027 0.8131625 0.3785755 1.2477495 0.14851901 1.4778060
## Oct 2027 0.8130867 0.3766305 1.2495429 0.14558449 1.4805888
## Nov 2027 0.8181370 0.3798195 1.2564544 0.14778829 1.4884857
## Dec 2027 0.8200737 0.3799029 1.2602446 0.14689060 1.4932569
## Jan 2028 0.8173790 0.3753626 1.2593953 0.14137322 1.4933847
## Feb 2028 0.8167695 0.3729152 1.2606238 0.13795289 1.4955861
## Mar 2028 0.8226078 0.3769231 1.2682924 0.14099195 1.5042236
## Apr 2028 0.8241838 0.3766763 1.2716913 0.13978018 1.5085875
## May 2028 0.8237189 0.3743960 1.2730419 0.13653880 1.5108991
## Jun 2028 0.8189703 0.3678393 1.2701014 0.12902488 1.5089158
## Jul 2028 0.8169331 0.3640010 1.2698651 0.12423330 1.5096328
## Aug 2028 0.8176093 0.3628835 1.2723351 0.12216620 1.5130524
## Sep 2028 0.8255823 0.3690698 1.2820949 0.12740663 1.5237581
## Oct 2028 0.8230261 0.3647337 1.2813184 0.12212841 1.5239237
## Nov 2028 0.8220102 0.3619449 1.2820754 0.11840108 1.5256192
## Dec 2028 0.8176140 0.3557826 1.2794453 0.11130388 1.5239240
## Jan 2029 0.8201035 0.3565128 1.2836942 0.11110269 1.5291043
## Feb 2029 0.8204945 0.3551511 1.2858379 0.10881313 1.5321758
## Mar 2029 0.8273708 0.3602812 1.2944603 0.11301893 1.5417226
## Apr 2029 0.8179323 0.3491031 1.2867615 0.10091994 1.5349447
## May 2029 0.8162030 0.3456407 1.2867654 0.09653998 1.5358661
## Jun 2029 0.8108877 0.3385985 1.2831769 0.08858367 1.5331917
## Jul 2029 0.8139190 0.3399092 1.2879288 0.08898361 1.5388544
## Aug 2029 0.8077087 0.3319846 1.2834328 0.08015147 1.5352659
## Sep 2029 0.8071325 0.3297003 1.2845648 0.07696288 1.5373022
## Oct 2029 0.8086896 0.3295552 1.2878239 0.07591682 1.5414623
## Nov 2029 0.8067485 0.3259181 1.2875789 0.07138186 1.5421152
## Dec 2029 0.8079749 0.3254544 1.2904954 0.07002351 1.5459264
## Jan 2030 0.8124545 0.3282498 1.2966592 0.07192729 1.5529816
## Feb 2030 0.8164712 0.3305882 1.3023543 0.07337724 1.5595653
## Mar 2030 0.8194030 0.3318473 1.3069586 0.07375097 1.5650550
## Apr 2030 0.8188408 0.3296183 1.3080633 0.07063954 1.5670420
## May 2030 0.8182246 0.3273409 1.3091083 0.06748281 1.5689665
## Jun 2030 0.8114718 0.3189325 1.3040111 0.05819790 1.5647456
## Jul 2030 0.8094040 0.3152147 1.3035934 0.05360663 1.5652014
## Aug 2030 0.8107754 0.3149415 1.3066093 0.05246291 1.5690880
## Sep 2030 0.8097255 0.3122525 1.3071985 0.04890615 1.5705449
## Oct 2030 0.8080437 0.3089369 1.3071505 0.04472578 1.5713617
## Nov 2030 0.8071666 0.3064314 1.3079018 0.04135818 1.5729750
## Dec 2030 0.8058110 0.3034527 1.3081693 0.03752023 1.5741017
## Jan 2031 0.8047471 0.3007709 1.3087234 0.03398201 1.5755123
## Feb 2031 0.8073000 0.3017110 1.3128890 0.03406842 1.5805316
sarima.for(ts_exch_train,
n.ahead = 20,
p = 0,
d = 1,
q = 0)
## $pred
## Jan Feb Mar Apr May Jun Jul
## 2018 0.8075109 0.8077218 0.8079327 0.8081436 0.8083545 0.8085654
## 2019 0.8098308 0.8100417 0.8102526 0.8104635 0.8106744 0.8108853 0.8110962
## Aug Sep Oct Nov Dec
## 2018 0.8087763 0.8089872 0.8091981 0.8094090 0.8096199
## 2019 0.8113071 0.8115179
##
## $se
## Jan Feb Mar Apr May Jun
## 2018 0.03152961 0.04458960 0.05461088 0.06305922 0.07050235
## 2019 0.10922177 0.11368162 0.11797299 0.12211365 0.12611843 0.12999991
## Jul Aug Sep Oct Nov Dec
## 2018 0.07723145 0.08341950 0.08917920 0.09458883 0.09970538 0.10457188
## 2019 0.13376880 0.13743438 0.14100470
lines(ts_exch_test)
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Feb 2018 0.8073 0.7668922 0.8477078 0.7455016 0.8690984
## Mar 2018 0.8073 0.7501547 0.8644453 0.7199039 0.8946961
## Apr 2018 0.8073 0.7373116 0.8772884 0.7002620 0.9143380
## May 2018 0.8073 0.7264844 0.8881156 0.6837032 0.9308968
## Jun 2018 0.8073 0.7169454 0.8976546 0.6691146 0.9454854
## Jul 2018 0.8073 0.7083215 0.9062785 0.6559255 0.9586745
## Aug 2018 0.8073 0.7003910 0.9142090 0.6437968 0.9708032
## Sep 2018 0.8073 0.6930095 0.9215905 0.6325077 0.9820923
## Oct 2018 0.8073 0.6860766 0.9285234 0.6219048 0.9926952
## Nov 2018 0.8073 0.6795193 0.9350807 0.6118763 1.0027237
## Dec 2018 0.8073 0.6732825 0.9413175 0.6023379 1.0122621
## Jan 2019 0.8073 0.6673233 0.9472767 0.5932241 1.0213759
## Feb 2019 0.8073 0.6616076 0.9529924 0.5844827 1.0301173
## Mar 2019 0.8073 0.6561079 0.9584921 0.5760716 1.0385284
## Apr 2019 0.8073 0.6508013 0.9637987 0.5679558 1.0466442
## May 2019 0.8073 0.6456688 0.9689312 0.5601064 1.0544936
## Jun 2019 0.8073 0.6406944 0.9739056 0.5524987 1.0621013
## Jul 2019 0.8073 0.6358642 0.9787358 0.5451116 1.0694884
## Aug 2019 0.8073 0.6311665 0.9834335 0.5379270 1.0766730
## Sep 2019 0.8073 0.6265908 0.9880092 0.5309292 1.0836708
## Oct 2019 0.8073 0.6221282 0.9924718 0.5241042 1.0904958
## Nov 2019 0.8073 0.6177706 0.9968294 0.5174398 1.0971602
## Dec 2019 0.8073 0.6135110 1.0010890 0.5109253 1.1036747
## Jan 2020 0.8073 0.6093430 1.0052570 0.5045509 1.1100491
Applying both optimal models, the forecast from 2018 to 2019 looks like a straight line, which cannot capture the down trend of the reality. Using extended ARIMA gives forecast exchange rate of around 0.84 - 0.85 while that is about 0.8 by using ARIMA(0,1,0), which is closer to expected value.
The monthly exchange rate of AUD and USD in duration between 2005 to 2019 presents to have no trend or seasonality, which has two dramatic changes in 2008 and 2009. The first difference is executed to turn this series into stationary, which is qualified by Several tests KPSS Test for Level Stationarity and Augmented Dickey-Fuller.
A combination of manual and auto arima function in R has been implemented to look for the best candidate of autoregressive (p) the moving average (q). However the PAC- partial autocorrelation coefficients and the AC- autocorrelation coefficients give unclear signal to identify p and q while auto arima produce result of ARIMA(0,1,0), which is simply the random walk. It is not surprising because random walk has long been described as the unbeatable on exchange rate forecast (Abhyankar et al. ,2005) (Evans and Lyons, 2004).
Akaike Information Criterion (AIC), Bayesian Information Criterion (BIC) and RMSE are taken into account to compare ARIMA(0,1,0) and Extension of ARIMA model. AIC and BIC are criteria methods used to assess model fit while penalizing the number of estimated parameters, in which BIC should penalize complexity more than AIC (Hyndman, 2007). Ultimately, extended ARIMA with regressors of gold & unemployment win AIC and BIC while ARIMA(0,1,0) generates lowest RMSE. Certainly, in terms of forecast with the test ranging from 2018 to 2019, ARIMA(0,1,0) generates better predicted value but both are not able to capture the down trend of reality.
A puzzle made by Meese and Rogoff (1983) says that random walk outperform any models in exchange rate forecast. Then Imad Moosa (2014) proved that the TVP framework including dynamics, appears to be more successful than the static model. However, without dynamics, she stated that ‘it is unlikely that any model can outperform the random walk in terms of the RMSE’. It does match with our findings, which ARIMA(0,1,0) generate highest credits in terms of lowest RMSE.
As the nature of complexity of exchanges rates, includes bubbles followed by crashes and volatility clustering (Moosa and Bhatti, 2010), it is a big challenge to any of built models. Conventional macroeconomic models could prevail in terms of prediction of trend because random walk is only a no-change model. In this paper, we discover that if we extend ARIMA(0,1,0) model to include macroeconomic variables can slightly improve the performance to exchange rate forecast in terms of lowest value AIC and BIC. According to (Cagatay, 2016), with high volatility data, measures based on median is recommended and not to use the measures based on penalizing (AIC, BIC).
The next step is taking more macroeconomic variables to match with extended arima to test, validate and find the optimal model. A thorough understanding of macroeconomic variables could assist in selecting the right exogenous variables to feed in extended ARIMA. In reverse, finding the best candidate of extended ARIMA could strengthen the evidence of correlation between exchange rates and that variables. Furthermore, adding more exchange rates from different countries or using different metrics to analyse, interpret and compare could be another way to increase the validity and credibility of the models.
A. Abhyankar, L. Sarno, G. Valente Exchange rates and fundamentals: evidence on the economic value of predictability J. Int. Econ., 66 (2005), pp. 325-348
Aloui, R. and Ben Aïssa, M. (2016). Relationship between oil, stock prices and exchange rates: A vine copula based GARCH method. The North American Journal of Economics and Finance, 37, pp.458-471.
Akincilar, Aykan Temiz, Izzettin and S¸ahin Erol. 2011. An application of exchange rate forecasting in Turkey. Gazi University Journal of Science 24(4), 817-828.
Balcilar, M., Gupta, R. and Pierdzioch, C. (2016). On exchange-rate movements and gold-price fluctuations: evidence for gold-producing countries from a nonparametric causality-in-quantiles test. International Economics and Economic Policy, 14(4), pp.691-700.
Beckmann, J. “Causality and Volatility Patterns between Gold Prices and Exchange Rates.” The North American journal of economics and finance 34.C (2015): 292-300.
Box, G. E. P., G. M. Jenkins, and G. C. Reinsel. Time Series Analysis: Forecasting and Control. 3rd ed. Englewood Cliffs, NJ: Prentice Hall, 1994.
Cagatay Bal, Serdar Demir and Cagdas Hakan Aladag. (2016). A Comparison of Different Model Selection Criteria for Forecasting EURO/USD Exchange Rates by Feed Forward Neural Network
Fu, T. and Lin, M. (2012). Interest rate, unemployment rate and China’s exchange rate regime. International Journal of Emerging Markets, 7(2), pp.177-190.
Holt, C. E. (1957). Forecasting seasonals and trends by exponentially weighted averages (O.N.R. Memorandum No. 52). Carnegie Institute of Technology, Pittsburgh USA. https://doi.org/10.1016/j.ijforecast.2003.09.015
Hsiao-Fen Changa, Liang-Chou Huang, Ming-Chin Chin. (2013). Interactive relationships between crude oil prices, gold prices, and the NT–US dollar exchange rate—A Taiwan study
I.A. Moosa, R.H. Bhatti The Theory and Empirics of Exchange Rates World Scientific, Hackensack (New Jersey) (2010)
Imad Moosa, Kelly Burns. (2014). Hyndman, R. J., & Khandakar, " Automatic time series for forecasting: the forecast Package for R (No. 6/07)”, Monash University of Department of Econometrics and Business Statistics, 2007.
The unbeatable random walk in exchange rate forecasting: Reality or myth?
Maaerinskienn, I. and Balciunas, A. (2014). Fundamental Exchange Rate Forecasting Models: Advantages and Drawbacks. SSRN Electronic Journal.
Malin Varenius (2017). Real currency exchange rate prediction. - A time series analysis
Meese–Rogoff Redux: micro-based exchange rate forecasting Am. Econ. Rev., 95 (2005), pp. 405-414
Ran, J. and Zhou, Y. (2019). Transmitted unemployment under the linked exchange rate system: Evidence from Hong Kong.
Rasekhi, S., Rostamzadeh, M. (2011). Fundamental Modeling Exchange Rate using Genetic Algorithm: A Case Study of European Countries. Journal of Economics & Behavioral Studies, Vol. 3, Issue 6352-359.
R. Meese, K. Rogoff Empirical exchange rate models of the seventies: do they fit out of sample? J. Int. Econ., 14 (1983), pp. 3-24
Rob J Hyndman, George Athanasopoulos (2013). Forecasting: principles and practice
Zhang, G. P. (2003). Time series forecasting using a hybrid ARIMA and neural network model. Neurocomputing, 50, 159-175. doi: http://dx.doi.org.ezproxy.lib.uts.edu.au/10.1016/S0925-2312(01)00702-0.
Winters, P. R. (1960). Forecasting sales by exponentially weighted moving averages. Management Science, 6, 324–342. https://doi.org/10.1287/mnsc.6.3.324