As per my literature survey study, I found most of the expert uses the time series or neural network for ATM cash demand prediction problem. Can anyone suggests the the preferred way of solving this problem and why?
Time series analysis is a good technique but I think it is not applicable in your case. Cash withdrawals from an ATM depend not only on time.
Try to find periodic variations (seasonality), e.g. (1) every Friday people withdraw money for the weekend or (2) between 25-27th day of each month people get their wages or (3) between 7-10th day of each month some people get their retired payment.
Using a neural network is a good idea. You may define 31 output variables – to predict cash withdrawals for each day of the next month.
Firstly, there are a difference between ATM with depositing cash function, or without this function.
In the first case, you need to re-run for each day and for each ATM, all transactions with the respect of operations time, and then measure the min level, which can be considered as the ATM need of the day.
Using this information for all days, you can run a distibution fitting (for example using Matlab) and measure the ATM demand which satisfy 95% or 99% of customer's needs
Time series analysis is a good technique but I think it is not applicable in your case. Cash withdrawals from an ATM depend not only on time.
Try to find periodic variations (seasonality), e.g. (1) every Friday people withdraw money for the weekend or (2) between 25-27th day of each month people get their wages or (3) between 7-10th day of each month some people get their retired payment.
Using a neural network is a good idea. You may define 31 output variables – to predict cash withdrawals for each day of the next month.
I suggest Autoregressive Intregrated Moving Average (ARIMA ) model for forecasting the cash demand for the Bank ATM for daily data and also seasonal ARIMA for Monthly data.
If you know how to use R, Rob Hyndman's package 'forecast' is able to compare a number of different techniques in one pass. As I am lazy I like to start there and see how it performs before going too far into the weeds. see http://robjhyndman.com/seminars/melbournerug/
second i would like to propose more details. for example:
1- you may want to compose new 7 time series (TSMon, TSTue,TSWed,..,TSSun). one time series for each day in the week. i want to point that based on my personal experience with ARIMA, such method can overcome the existence of seasonality better than it's done via ARIMA.
next you may apply ARIMA for each time series. i would expect to have better accuracy using this approach (well, it works well in my research).
the same can be done for each day in the month. in other words, we compose 31 time series. each time series will represent a day in the month.
2- although Neural Network works fine in many cases, but i strongly suggest that you try other models. for instance, if you decide to compose a 7 time series as i suggested in point 1, then you may apply other technique as well such as Genetic Programming (where the dependent variable is the current day and the explanatory variables are the previous 6 days). bear in mind that Neural Network is a black box.