<APPLICATION NAME>
PREDICTOR v1.0, by Christos Tzoumakis
<LICENSE>
Use it as it is. No warranties. Free for non commercial use. Free for distribution. All other rights reserved.
<OTHER PRODUCTS USED BY THIS APPLICATION>
Neuroph 2.6, http://neuroph.sourceforge.net/
OpenCSV, http://opencsv.sourceforge.net/
Probably some parts of encog as a complementary set to Neuroph2.6. http://www.heatonresearch.com/encog
<COMBATIBILITY>
Application has been tested on Cyanogenmod 2.3.7(Gingerbread) tablet as well as in a 4.1.1(Jelly Bean ) emulator. By default it should be supported from 2.2(Fryo) to 4.2(Jelly Bean).
<NON TECHNICAL DESCRIPTION>
Use this application in order to perform predictions which are based on serial data(historical), like FOREX, STOCK market or something else. You must provide the application with a sample data file or a web address(URI command) in order to get a prediction for a value.
<TECHNICAL DESCRIPTION>
Forecaster is an application which uses the neuroph2.6 library in order to provide time series prediction. It uses an MLP perceptron with a custom selected number of inputs(=hidden) and one output. The output gives the desired prediction. Additionally, the application could perform more than one(T+1) sequential predictions. The number of forthcoming predictions is user defined. RPROP is the training algorithm for this application. Maximum 5000 iterations allowed and the maximum error is 0.001.
<COMMON DESCRIPTION>
After launching the application, it appears the introductory screen. You could see at the upper part of the display a row with four elements(columns). From the left to the right, the TIME column which is generic and displays the prediction time as T+1,T+2, ... T+n. This can't be specified exactly since the data provided by the user are not ordered always in a unique time step(example: we could receive as input, FOREX data, per day or per hour or per minute). The prediction value column(PRICE) which displays the estimated prediction value. A progress bar(gray parallelogram) which displays the progress of the job being in progress. Under this bar and after data elaboration, it appears the error(RMS) of every calculated time step. Finally, a button(with a magnification glass) which must be pressed in order the prediction to be achieved. Before pressing this button you must go to the menu settings and define the appropriate parameters for your request. So go to the settings menu and define in order all requested parameters and after go back and press the prediction button.
Generally must be said, that in order to perform a prediction you must feed the system with data. These data must be included in a text file which must be placed in your android's storage directory. Format of this text file is simple(like FOREX or STOCK historical text data files). Every column must be separated by a comma(preferably) or a semicolon. Every row must be followed by the next line(enter)character so to be placed the next series(rows) of data. This file may or not include a header(non arithmetic data). You must place such a file in the storage directory of your Android, manually. The other way to receive such a file is through an HTTP request to an appropriate provider(yahoo or Google finance). A sample file is included in the application's assets directory and at the end of this document. You could find a plenty of similar files in FOREX historical data sites or Yahoo or Google finance sites. In order to perform a correct prediction, data must be placed sequentially in a correct sequential order. This means, the data samples must begin with the most older values(like FOREX files). When you select an HTTP data sample(Yahoo or Google finance) the application automatically reposition the sample data in a correct order and creates a data file in the central external storage directory called "tmpWebdataPredictor.csv". This is done because the data requested from Yahoo or Google finance are in a reverse order. However, FOREX historical data files have the appropriate data ordering for the application without imposing any modification.
<PARAMETERS>
Input nodes: Number of inputs which network accepts. This also defines the minimum sample size. Thus, you should provide(text lines) the network with a sample(lines) not less than this number. The proper definition of inputs nodes has serious impact on prediction results. You could experiment. Try the ΒΌ or 1/3 of the initial sample data.
Number of predictions: Step ahead predictions. How many? From 1 to N. Reasonably depends from your sample for more accurate results.
Target column: The number of the column(per every text line) which you want to predict. When you download historical results text files other than FOREX, usually they have more than two(date, open,close,average,volume ...) columns. So you must select which column you want to be considered. Numbering of the columns begins with 1. The column you want to select must contains arithmetical values.
Input method: Must be selected file or web(HTTP). After selecting this option the full file or HTTP path is entered in the last parameter. You could modify the data there at the end. Moreover, in case you have selected the file option, you could launch a file browser(see the next parameter) in order to locate the correct file. This is the sample(training) file which feeds your network. See at the end of this manual for yahoo's finance HTTP syntax for historical data rates.
Launch a file manager: By pressing this option a file manager is selected in order to locate the sample file. It is not necessary to use it. You could directly go to the last parameter(input text final) and insert the desired file path.
Value separator: Which symbol separates the data columns of the sample file. Comma or semicolon. Usually only comma.
CSV header: Select whether your sample file contains a header as the first line of the sample text. Usually the HTTP URIs always have headers. Be aware of that the header must consume only the first line. Headers larger than one line are not permitted.
Input text: The full file path or HTTP Uri where the data file is located or could be retrieved(HTTP). Modify it, in case you must do it. For HTTP data samples, I prefer the financial Yahoo URI because you could select historical data defined by preferable selected dates. For Yahoo HTTP requests you must insert your preferable selection manually since the application's default value is limited only to one option. You just only need to modify it for your need changing the commodity and dates. A Yahoo reference of such requests could clarify the correct way.
<SCREENSHOTS>
<DOWNLOADS>
<REFERENCES>
Yahoo finannce HTTP command:
http://ichart.finance.yahoo.com/table.csv?s=yhoo&a=02&b=01&c=2012&d=03&e=01&f=2012&g=d&ignore=.csv
Where s=commodity,a=month(from),b=day(From),c=year(From),
d=month(To),e=day(To),e=year(To).
EXAMPLE SAMPLE WITH A HEADER
Date,EUR/USD Close
2013-03-04,1.3017
2013-03-05,1.3039
2013-03-06,1.2991
2013-03-07,1.3106
2013-03-08,1.2997