This project focuses on using macroeconomic indicators to predict the performance of the Australian Stock Exchange (ASX) and National Stock Exchange (NSX). The data ranges from 2010-2018 and has been aggregated to monthly form.
AUSBOT | AUSBP | AUSBR | AUSCA | AUSCARS | AUSCBBS |
AUSCCON | AUSCCPI | AUSCF | AUSCI | AUSCINF | AUSCNCN |
AUSCONPMI | AUSCOP | AUSCP | AUSCPI | AUSCPIC | AUSCSP |
AUSCU | AUSCUR | AUSDINV | AUSDPINC | AUSEC | AUSEDBT |
AUSEMP | AUSEXPX | AUSEXVOL | AUSFDI | AUSFER | AUSFTEMP |
AUSG | AUSGAGR | AUSGBGT | AUSGBVL | AUSGCP | AUSGD |
AUSGDG | AUSGFCF | AUSGNP | AUSWAGE | AUSGOLD | AUSGPC |
AUSGSP | AUSGYLD | AUSHOOD | AUSIBOR | AUSIMPX | AUSIMVOL |
AUSINFEX | AUSJOBADV | AUSJVAC | AUSLC | AUSLEI | AUSLFPR |
AUSLPS | AUSM1 | AUSM3 | AUSMANWG | AUSMKT | AUSMP |
AUSMPMI | AUSNHS | AUSOIL | AUSPPI | AUSPPIC | AUSPROD |
AUSPSAV | AUSPTEMP | AUSRSY | AUSSPMI | AUSSSR | AUSSSRC |
AUSSSRE | AUSTOT | AUSTOUR | AUSTVS | AUSUNP | AUSUNR |
AUSUNRY |
Before regressing the indices, the data has been put through data reduction tests to ensure the accuracy of the predictions. The tests included:
- Correlation
- Bartlett test
- KMO test
- Principal Component Analysis (PCA)
- PCA with VARIMAX
Out of seventy-nine indices, the indices which failed to load onto a factor or component in PCA with VARIMAX were dropped, and the iteration of PCA and PCA with VARIMAX continued. As per Eigen Values, K1-Kaiser test, for the data being used, there were nine components or factors.
The indices which had the highest loading on to these respective components were put to ADF test to check for the stationarity of the time series data. This final data was used in regressing.
In future work, this project can be extended to the prediction of the ASX and NSX stock markets could be improved with the help of Long-Short Term Memory from Recurrent Neural Networks, which works very comfortably with the time-series data.
The following flowchart explains the methodology used in this project.
flowchart TD
start((Start)) --> load[Load Dataset]
load --> agg[Aggregate the dataset into monthly form]
agg --> corr[Find Correlation Matrix]
corr --> corr_res{If matrix has more positive and negative values}
corr_res --True--> tests[Perform Bartlett test and KMO test]
corr_res--False-->scale
tests --> kmo{If KMO > 0.5} --True-->scale[Scaling the data]
kmo --False-->agg
scale --> pca[PCA]
pca --> varimax[PCA with VARIMAX]
varimax --> condition{If factor loaded onto only one component}
condition--True-->adf[Perform ADF test]
condition--False-->pca
adf-->p_value{If P value < 0.05}
p_value--True-->stationary[Factors are stationary]
p_value--1st Run False-->first_diff[Find First Difference]
first_diff-->adf
p_value--2nd Run False-->second_diff[Find Second Difference]
second_diff-->garch[Perform GARCH Model]
garch-->garch_condition{if α + β < 1}--False-->garch_diff[Find another difference]-->garch
garch_condition--True-->stationary
stationary-->reg[Perform Regression]
reg-->indices[Influential Macroeconomic Indices]
indices-->stop((Stop))
The following technologies were used in this project:
- Python
- Pandas
- Numpy
- Scikit-learn PCA
- Scikit-learn StandardScaler
- Factor analyzer
- Matplotlib
ASX Prediction Accuracy: 94.81%
NSX Prediction Accuracy: 74.57%
The project is available as a Python notebook, and the dataset can be shared upon request.
Contributions are welcome! If you would like to contribute, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Write your code and add tests if necessary.
- Commit your changes and push your branch to your fork.
- Submit a pull request with a detailed description of your changes.
This project was developed by Konda Vaishnavi, Manish Chandra Kadiyala, and Prakash K Aithal at Manipal Institute of Technology.