Moving Average Reversion Strategy for On-Line Portfolio Selection
Abstract
This project proposes a novel online portfolio selection strategy named ``On-Line Moving Average Reversion" (OLMAR). On-line portfolio selection has attracted increasing interests from artificial intelligence and machine learning communities recently.
Empirical evidence shows that stock's high and low prices are temporary and stock price relatives are likely to follow mean reversion phenomenon.
While existing mean reversion strategies are shown to achieve good empirical performance on many real datasets, they often make the single-period mean reversion assumption, which is not always satisfied, leading to poor performance in certain real datasets.
To overcome the limitation, this article proposes a multiple-period mean reversion, or so-called (Simple/Exponential) ``Moving Average Reversion" (MAR), and a new on-line portfolio selection strategy named ``On-Line Moving Average Reversion'' (OLMAR), which exploits MAR by applying powerful online learning techniques.
From our empirical results on real markets, we found that OLMAR can overcome the drawbacks of existing mean reversion algorithms and achieve significantly better results, especially on the datasets that failed existing mean reversion algorithms.
In addition to superior performance, OLMAR also runs extremely fast, further supporting its practical applicability to a wide range of applications.
Publication
- "On-Line Portfolio Selection with Moving Average Reversion"
Bin
Li and Steven C. H. Hoi
International Conference on Machine
Learning, accepted,
2012. [PDF]
-
@article{LH12,
author = {Bin Li and Steven C. H.
Hoi},
title = {On-Line Portfolio Selection with Moving Average Reversion},
booktitle = {Proceedings of the International Conference on Machine Learning (ICML)},
year = {2012}
} |
Source Codes and Datasets of OLMAR
You need to aggress to this
before downloading the code and data.
Matlab source codes for OLMAR: >> Click
here to download (3.50M) <<
Note: The code was implemented by Dr. Bin Li.
Feel free to send us your comments and suggestions.
Instructions for the OLMAR Code and Data
- Run all codes on one dataset (default is nyse_o. One can
change it by setting dataset in demo_all.m)
demo_all;
% Run
sample demo on nyse_o dataset
- Run one algorithm on one dataset
- Set simulation variables (required)
- opts.
quiet_mode = 0;
% Display nothing. 0:
display; 1: no display
- opts.display_interval
= 500; % If diaplay, display interval
- opts.log_mode
= 1;
% Write .txt log
file. 0: no log; 1: write log file
- opts.mat_mode
= 1;
% Write .mat log file. 0:
no mat; 1: write mat file
- opts.analyze_mode
= 1;
% Analyze and diaplay info. 0: no; 1: yes
- opts.his = 0;
% Historical
mode. 0: no; 1: yes
- Run OLMAR on NYSE (O) dataset with \epsilon = 0.5 and
transaction cost rate = 0
demo_manager('olmar_start',
'nyse_o', {0.5, 0}, opts);
- Run Market on Sp500 dataset with transaction cost rate = 0
demo_manager('market_start',
'sp500', {0}, opts);
Links to Resources
Back to Steven
Hoi's Homepage