Skip to content

jiahaoli57/FinOL

Repository files navigation

FinOL: Towards Open Benchmarking for Data-Driven Online Portfolio Selection

 

Python 3.9 Read the Docs Platform License PyPI Downloads


FinOL a comprehensive software package and benchmarking platform designed to advance data-driven OLPS research. FinOL not only provides a well-structured library, offering extensively encapsulated functions, but also develops extensive benchmark results for fair comparisons.

What's NEW!

Update Status Label
New release! FinOL is going to release the official website Coming soon...... Release
New metric! FinOL is going to support the t-test metric Coming soon...... Enhancement
New feature! FinOL now supports the Image Input feature Supported since 26 September 2024 Enhancement
New model! FinOL now supports the CNN-JF model Supported since 26 September 2024 Enhancement
New model! FinOL now supports the AlphaStock model Supported since 20 September 2024 Enhancement
New model! FinOL now supports the GRU model Supported since 20 September 2024 Enhancement
New release! FinOL now releases the official docs Released on 22 July 2024 Release
New feature! FinOL now supports the Auto Hyper-parameters Tuning feature Supported since 22 July 2024 Enhancement
New feature! FinOL now supports the Radar Chart evaluation Supported since 10 June 2024 Enhancement
New model! FinOL now supports the AlphaPortfolio model Supported since 06 June 2024 Enhancement
New feature! FinOL now supports the Economic Distillation feature Supported since 15 May 2024 Enhancement
New feature! FinOL now supports the Interpretability Analysis feature Supported since 16 April 2024 Enhancement
New feature! FinOL now supports the Winner Assets Selection feature Supported since 14 April 2024 Enhancement
Release FinOL tutorials Released on 22 March 2024 Release
Release FinOL v0.0.1 Released on 21 March 2024 Release

Outline

About

Online portfolio selection (OLPS) is an important issue in operations research community that studies how to dynamically adjust portfolios according to market changes. In the past, OLPS research relied on a general database called OLPS containing price relatives data of financial assets across different markets. However, with the widespread adoption of data-driven technologies like machine learning in finance, OLPS can no longer meet the needs of OLPS research due to the lack of support for high-dimensional feature spaces. To solve this problem, we propose FinOL, an open financial platform for advancing research in data-driven OLPS. FinOL expands and enriches the previous OLPS database, containing 9 benchmark financial datasets from 1962 to present across global markets. To promote fair comparisons, we evaluate a large number of past classic OLPS methods on FinOL, providing reusable benchmark results for future FinOL users and effectively supporting OLPS research. More importantly, to lower the barriers to research, FinOL provides a complete data-training-testing suite with just three lines of command. We are also committed to regularly updating FinOL with new data and benchmark results reflecting the latest developments and trends in the field. This ensures FinOL remains a valuable resource as data-driven OLPS methods continue evolving.

Overall Framework of FinOL

Why should I use FinOL?

  1. FinOL contributes comprehensive datasets spanning diverse market conditions and asset classes to enable large-scale empirical validation;
  2. FinOL contributes the most extensive benchmark results to date for portfolio selection methods, providing the academic community an unbiased performance assessment;
  3. FinOL contributes a user-friendly Python library for data-driven OLPS research, providing a comprehensive toolkit for academics to develop, test, and validate new OLPS methods.

Installation

Installing via PIP

FinOL is available on PyPI, we recommend to install FinOL via pip:

> pip install --upgrade finol

You can also install the development version of FinOL from master branch of Git repository:

> pip install git+https://github.com/jiahaoli57/finol.git

Examples and Tutorials

You can find useful tutorials on how to use FinOL in the tutorials folder.

Here we show a simple application (taken from tutorial_2): we transform asset "AA" into a richer representation.

Visualization of Train Normalization Data for Asset "AA"

Using FinOL

To lower the barriers for the research community, FinOL provides a complete data-training-testing suite with just three lines of command.

from finol.data_layer.dataset_loader import DatasetLoader
from finol.optimization_layer.model_trainer import ModelTrainer
from finol.evaluation_layer.model_evaluator import ModelEvaluator


load_dataset_output = DatasetLoader().load_dataset()
train_model_output = ModelTrainer(load_dataset_output).train_model()
evaluate_model_output = ModelEvaluator(load_dataset_output, train_model_output).evaluate_model()

Supported Datasets

Name Market Country/Region Data Frequency # of Assets Data Range # of Periods
NYSE(O) Stock United States Daily 26 03/July./1962
-
31/Dec./1984
5,651:
3,390/1,130/1,131
NYSE(N) Stock United States Daily 403 02/Jan./1985
-
30/June./2010
6,430:
3,858/1,286/1,286
DJIA Stock United States Daily 28 14/Jan./2001
-
14/Jan./2003
500:
300/100/100
SP500 Stock United States Daily 339 02/Jan./1998
-
31/Jan./2003
1,268:
756/256/256
TSE Stock Canada Daily 48 12/Jan./1995
-
31/Dec./1998
1,001:
600/200/200
SSE Stock China Weekly 30 05/July./2010
-
26/June./2023
678:
406/136/136
HSI Stock Hong Kong, China Weekly 53 05/July./2010
-
26/June./2023
678:
406/136/136
CMEG Futures United States Weekly 25 05/July./2010
-
26/June./2023
678:
406/136/136
CRYPTO Cryptocurrency World Daily 43 09/Nov./2017
-
01/Mar./2024
2,305:
1,421/442/442

Supported Baselines

Name Category Source Journal/Conference
Market Classic OLPS: Benchmark baseline -- --
Best Classic OLPS: Benchmark baseline -- --
UCRP Classic OLPS: Benchmark baseline Kelly 1956; Cover 1991 The Bell System Technical Journal; Mathematical Finance
BCRP Classic OLPS: Benchmark baseline Cover 1991 Mathematical Finance
UP Classic OLPS: Follow-the-winner Cover 1991 Mathematical Finance
EG Classic OLPS: Follow-the-winner Helmbold et al. 1998 Mathematical Finance
SCRP Classic OLPS: Follow-the-winner Gaivoronski and Stella 2000 Annals of Operations Research
PPT Classic OLPS: Follow-the-winner Lai et al. 2018 IEEE Transactions on Neural Networks and Learning Systems
SSPO Classic OLPS: Follow-the-winner Lai et al. 2018 The Journal of Machine Learning Research
ANTI1 Classic OLPS: Follow-the-loser Borodin et al. 2004 Advances in Neural Information Processing Systems
ANTI2 Classic OLPS: Follow-the-loser Borodin et al. 2004 Advances in Neural Information Processing Systems
PAMR Classic OLPS: Follow-the-loser Li et al. 2012 Machine Learning
CWMR-Var Classic OLPS: Follow-the-loser Li et al. 2013 ACM Transactions on Knowledge Discovery from Data
CWMR-Stdev Classic OLPS: Follow-the-loser Li et al. 2013 ACM Transactions on Knowledge Discovery from Data
OLMAR-S Classic OLPS: Follow-the-loser Li et al. 2015 Artificial Intelligence
OLMAR-E Classic OLPS: Follow-the-loser Li et al. 2015 Artificial Intelligence
RMR Classic OLPS: Follow-the-loser Huang et al. 2016 IEEE Transactions on Knowledge and Data Engineering
RPRT Classic OLPS: Follow-the-loser Lai et al. 2020 IEEE Transactions on Systems, Man, and Cybernetics: Systems
AICTR Classic OLPS: Pattern-matching Lai et al. 2018 IEEE Transactions on Neural Networks and Learning Systems
KTPT Classic OLPS: Pattern-matching Lai et al. 2018 Data Mining and Knowledge Discovery
SP Classic OLPS: Meta-learning Singer 1997 International Journal of Neural Systems
ONS Classic OLPS: Meta-learning Agarwal et al. 2006 International Conference on Machine Learning
GRW Classic OLPS: Meta-learning Levina and Shafer 2008 International Journal of Uncertainty, Fuzziness and Knowledge-Based Systems
WAAS Classic OLPS: Meta-learning Zhang and Yang 2017 Computational Economics
CW-OGD Classic OLPS: Meta-learning Zhang et al. 2021 Knowledge-Based Systems

Supported Metrics

Name Abbreviation Category
Cumulative Wealth CW Profit Metric
Annualized Percentage Yield APY Profit Metric
Sharpe Ratio SR Profit Metric
Volatility Risk VR Risk Metric
Maximum DrawDown MDD Risk Metric
Average Turnover ATO Practical Metric
Transaction Costs-Adjusted Cumulative Wealth TCW Practical Metric
Running Time RT Practical Metric

License

Released under the MIT License.

Contact Us

For inquiries, please get in touch with us at [email protected] (Monday to Friday, 9:00 AM to 6:00 PM)