Python and Cython scripts of machine learning, econometrics and statistical features for financial analysis [In progress]

machine-learning, neural-network, deep-learning, finance, python, backtest
pip install fynance==1.1.0


Fynance - Machine learning tools designed for finance

PyPI - Python Version PyPI Status Build Status license Downloads Documentation Status Language grade: Python

Fynance is Python (and Cython) package, it provides machine learning, econometric and statistical tools designed for financial analysis and backtest of trading strategy. The documentation is available with some examples of the use of functions and objects.

Currently the project is always at a beta level. Some parts of the project can be considered as stable, such that fynance.features (this subpackage is already coded in Cython to be time-efficient), fynance.algorithms.allocation (this subpackage seems stable but have to be cleaned and write in Cython), and the other subpackages are always in progress (subject to deep modifications).


The fynance package contains currently five subpackages:

  • Algorithms (fynance.algorithms) contains:

    • Portfolio allocations (e.g. ERC, HRP, IVP, MDP, MVP, etc.).
    • Rolling objects for algorithms (e.g. rolling_allocation, etc.).
  • Backtesting objects (fynance.backtest) contains:

    • Module to plot profit and loss, and measure of performance.
  • Feature tools (fynance.features) contains:

    • Financial indicators (e.g. bollinger_band, cci, hma, macd_hist, macd_line, rsi, etc.).
    • Statistical momentums (e.g. sma, ema, wma, smstd, emstd wmstd, etc.).
    • Metrics (e.g. annual_return, annual_volatility, calmar, diversified_ratio, mdd, sharpe, z_score, etc.).
    • Scale (e.g. Scale object, normalize, standardize, roll_normalize, roll_standardize, etc.).
    • Rolling functions (e.g. roll_min, roll_max).
  • Time-series models (fynance.models) contains:

    • Econometric models (e.g. MA, ARMA, ARMA_GARCH and ARMAX_GARCH, etc.).
    • Neural network models with PyTorch (e.g. MultiLayerPerceptron, etc.).
    • Rolling objects for models, currently work only with neural network models (e.g. _RollingBasis, RollMultiLayerPerceptron, etc.).
  • Neural networks (fynance.neural_networks) with Keras (backend Tensorflow or Theano) contains:

    • Rolling neural network models.

Please refer you to the documentation to see more details on different tools available in fynance package. Documentation contains some descriptions and examples for functions, classes and methods.


From PyPI

$ pip install fynance

From source (GitHub)

If you want to compile fynance package from cython files you must set USE_CYTHON=True in setup.py file. Otherwise set it to USE_CYTHON=False. By default USE_CYTHON='auto'.

$ git clone https://github.com/ArthurBernard/Fynance.git    
$ cd Fynance   
$ python setup.py build_ext --inplace    
$ python setup.py install --user   


  • Backtest (performance, drawdown and rolling sharpe ratio) of a trading strategy did with a rolling neural network (see Notebooks/Exemple_Rolling_NeuralNetwork.ipynb for more details):


  • Loss functions and performances (trading strategy) of five rolling neural networks on the training and testing period (see Notebooks/Exemple_Rolling_NeuralNetwork.ipynb for more details):


Package not achieved, always in progress. All advice is welcome.