High-performance TensorFlow library for quantitative finance.

Overview

TF Quant Finance: TensorFlow based Quant Finance Library

Build Status

Table of contents

  1. Introduction
  2. Installation
  3. TensorFlow training
  4. Development roadmap
  5. Examples
  6. Contributing
  7. Development
  8. Community
  9. Disclaimers
  10. License

Introduction

This library provides high-performance components leveraging the hardware acceleration support and automatic differentiation of TensorFlow. The library will provide TensorFlow support for foundational mathematical methods, mid-level methods, and specific pricing models. The coverage is being expanded over the next few months.

The library is structured along three tiers:

  1. Foundational methods. Core mathematical methods - optimisation, interpolation, root finders, linear algebra, random and quasi-random number generation, etc.

  2. Mid-level methods. ODE & PDE solvers, Ito process framework, Diffusion Path Generators, Copula samplers etc.

  3. Pricing methods and other quant finance specific utilities. Specific Pricing models (e.g., Local Vol (LV), Stochastic Vol (SV), Stochastic Local Vol (SLV), Hull-White (HW)) and their calibration. Rate curve building, payoff descriptions, and schedule generation.

We aim for the library components to be easily accessible at each level. Each layer will be accompanied by many examples that can run independently of higher-level components.

Installation

The easiest way to get started with the library is via the pip package.

Note that the library requires Python 3.7 and Tensorflow >= 2.4.

First, please install the most recent version of TensorFlow by following the TensorFlow installation instructions. For example, you could install TensorFlow

pip3 install --upgrade tensorflow

Then run

pip3 install --upgrade tf-quant-finance

You maybe also have to use the option --user.

TensorFlow training

If you are not familiar with TensorFlow, an excellent place to get started is with the following self-study introduction to TensorFlow notebooks:

Development roadmap

We are working on expanding the coverage of the library. Areas under active development are:

  • Ito Processes: Framework for defining Ito processes. Includes methods for sampling paths from a process and for solving the associated backward Kolmogorov equation.
  • Implementation of the following specific processes/models:
    • Brownian Motion
    • Geometric Brownian Motion
    • Ornstein-Uhlenbeck
    • One-Factor Hull-White model
    • Heston model
    • Local volatility model.
    • Quadratic Local Vol model.
    • SABR model
  • Copulas: Support for defining and sampling from copulas.
  • Model Calibration:
    • Dupire local vol calibration.
    • SABR model calibration.
  • Rate curve fitting: Hagan-West algorithm for yield curve bootstrapping and the Monotone Convex interpolation scheme.
  • Support for dates, day-count conventions, holidays, etc.

Examples

See tf_quant_finance/examples/ for end-to-end examples. It includes tutorial notebooks such as:

The above links will open Jupyter Notebooks in Colab.

Contributing

We're eager to collaborate with you! See CONTRIBUTING.md for a guide on how to contribute. This project adheres to TensorFlow's code of conduct. By participating, you are expected to uphold this code.

Development

This section is for developers who want to contribute code to the library. If you are only interested in using the library, please follow the instructions in the Installation section.

Development dependencies

This library has the following dependencies:

  1. Bazel
  2. Python 3 (Bazel uses Python 3 by default)
  3. TensorFlow version >= 2.4
  4. TensorFlow Probability version between v0.11.0 and v0.12.1
  5. Numpy version 1.19.2 or higher
  6. Attrs
  7. Dataclasses (not needed if your Python version >= 3.7)

This library requires the Bazel build system. Please follow the Bazel installation instructions for your platform.

You can install TensorFlow and related dependencies using the pip3 install command:

pip3 install --upgrade tf-nightly tensorflow-probability==0.12.1 numpy==1.19.2 attrs dataclasses

Commonly used commands

Clone the GitHub repository:

git clone https://github.com/google/tf-quant-finance.git

After you run

cd tf_quant_finance

you can execute tests using the bazel test command. For example,

bazel test tf_quant_finance/math/random_ops/sobol:sobol_test

will run tests in sobol_test.py .

Tests run using Python version 3. Please make sure that you can run import tensorflow in the Python 3 shell. Otherwise, tests might fail.

Building a custom pip package

The following commands will build custom pip package from source and install it:

# sudo apt-get install bazel git python python-pip rsync # For Ubuntu.
git clone https://github.com/google/tf-quant-finance.git
cd tf-quant-finance
bazel build :build_pip_pkg
./bazel-bin/build_pip_pkg artifacts
pip install --user --upgrade artifacts/*.whl

Community

  1. GitHub repository: Report bugs or make feature requests.

  2. TensorFlow Blog: Stay up to date on content from the TensorFlow team and best articles from the community.

  3. [email protected]: Open mailing list for discussion and questions of this library.

  4. TensorFlow Probability: This library will leverage methods from TensorFlow Probability (TFP).

Disclaimers

Google does not officially support this product. This library is under active development, and interfaces may change at any time.

License

This library is licensed under the Apache 2 license (see LICENSE). This library uses Sobol primitive polynomials and initial direction numbers which are licensed under the BSD license.

Comments
  • Bjerksund-Stensland analytic approximation for American options

    Bjerksund-Stensland analytic approximation for American options

    Bjerksund-Stensland approximation is an alternative to the Baron-Adesi Whaley approximation for American options pricing formula under Black-Scholes.

    The module implementing this method should live under tf_quant_finance/volatility/american_option.py. It should support both puts and calls. Tests should be in american_option_test.py in the same folder.

    good first issue 
    opened by cyrilchim 34
  • XLA compilation error of a TARF payoff with MC

    XLA compilation error of a TARF payoff with MC

    I'm trying to replicate the TARF payoff from this paper. So far, i've been able to write a payoff that can be evaluated with MC and GPU, but i get an error with the XLA compilation. https://colab.research.google.com/github/arthurpham/google_colab/blob/7d5715c2b0f988c8d7d544fea0ff741e63272056/TARF_MC_Performance_TQF.ipynb I understand that the payoff code style might not be the best, but i wasn't able to find an example of a path-dependent payoff with MC. Any pointer would be helpful.

    image

    image

    ---------------------------------------------------------------------------
    InvalidArgumentError                      Traceback (most recent call last)
    <ipython-input-7-945d7282d2b1> in <module>()
          1 device = "/gpu:0"
          2 with tf.device(device):
    ----> 3     tarf_price = price_eu_options_xla(strikes, spot, sigma)
          4     print('price', tarf_price)
    
    1 frames
    /usr/local/lib/python3.7/dist-packages/tensorflow/python/eager/execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
         53     ctx.ensure_initialized()
         54     tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
    ---> 55                                         inputs, attrs, num_outputs)
         56   except core._NotOkStatusException as e:
         57     if name is not None:
    
    InvalidArgumentError: Detected unsupported operations when trying to compile graph __inference_price_eu_options_9107[_XlaMustCompile=true,config_proto=6001324581131673121,executor_type=11160318154034397263] on XLA_GPU_JIT: TensorListReserve (No registered 'TensorListReserve' OpKernel for XLA_GPU_JIT devices compatible with node {{function_node __inference_while_fn_9086}}{{node while_init/TensorArrayV2_7}}
    	 (OpKernel was found, but attributes didn't match) Requested Attributes: element_dtype=DT_VARIANT, shape_type=DT_INT32){{function_node __inference_while_fn_9086}}{{node while_init/TensorArrayV2_7}}
    The op is created at: 
    File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main
      "__main__", mod_spec)
    File "/usr/lib/python3.7/runpy.py", line 85, in _run_code
      exec(code, run_globals)
    File "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py", line 16, in <module>
      app.launch_new_instance()
    File "/usr/local/lib/python3.7/dist-packages/traitlets/config/application.py", line 846, in launch_instance
      app.start()
    File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelapp.py", line 499, in start
      self.io_loop.start()
    File "/usr/local/lib/python3.7/dist-packages/tornado/platform/asyncio.py", line 132, in start
      self.asyncio_loop.run_forever()
    File "/usr/lib/python3.7/asyncio/base_events.py", line 541, in run_forever
      self._run_once()
    File "/usr/lib/python3.7/asyncio/base_events.py", line 1786, in _run_once
      handle._run()
    File "/usr/lib/python3.7/asyncio/events.py", line 88, in _run
      self._context.run(self._callback, *self._args)
    File "/usr/local/lib/python3.7/dist-packages/tornado/ioloop.py", line 758, in _run_callback
      ret = callback()
    File "/usr/local/lib/python3.7/dist-packages/tornado/stack_context.py", line 300, in null_wrapper
      return fn(*args, **kwargs)
    File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 536, in <lambda>
      self.io_loop.add_callback(lambda: self._handle_events(self.socket, 0))
    File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 452, in _handle_events
      self._handle_recv()
    File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 481, in _handle_recv
      self._run_callback(callback, msg)
    File "/usr/local/lib/python3.7/dist-packages/zmq/eventloop/zmqstream.py", line 431, in _run_callback
      callback(*args, **kwargs)
    File "/usr/local/lib/python3.7/dist-packages/tornado/stack_context.py", line 300, in null_wrapper
      return fn(*args, **kwargs)
    File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 283, in dispatcher
      return self.dispatch_shell(stream, msg)
    File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 233, in dispatch_shell
      handler(stream, idents, msg)
    File "/usr/local/lib/python3.7/dist-packages/ipykernel/kernelbase.py", line 399, in execute_request
      user_expressions, allow_stdin)
    File "/usr/local/lib/python3.7/dist-packages/ipykernel/ipkernel.py", line 208, in do_execute
      res = shell.run_cell(code, store_history=store_history, silent=silent)
    File "/usr/local/lib/python3.7/dist-packages/ipykernel/zmqshell.py", line 537, in run_cell
      return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
    File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2718, in run_cell
      interactivity=interactivity, compiler=compiler, result=result)
    File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2822, in run_ast_nodes
      if self.run_code(code, result):
    File "/usr/local/lib/python3.7/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
      exec(code_obj, self.user_global_ns, self.user_ns)
    File "<ipython-input-7-945d7282d2b1>", line 3, in <module>
      tarf_price = price_eu_options_xla(strikes, spot, sigma)
    File "<ipython-input-5-1d20baab715c>", line 89, in price_eu_options
      payoffs = tf.vectorized_map(my_function, reshaped_paths) [Op:__inference_price_eu_options_9107]
    
    opened by arthurpham 16
  • Pricing formulas for Barrier options under Black-Scholes

    Pricing formulas for Barrier options under Black-Scholes

    Formulas for pricing a Barrier option under Black-Scholes model is of interest. (See, e.g., Section 26.9 of Hull(2018), Options, Futures, and Other Derivatives, 9th edition).

    The module implementing this method should live under tf_quant_finance/volatility/barrier_option.py. It should support both puts (up-and-in put, down-and-out put) and calls (down-in call, up-and-out call). Tests should be in barrier_option_test.py in the same folder.

    good first issue 
    opened by cyrilchim 13
  • Swap curve fitting example

    Swap curve fitting example

    The change is to implement a jupyter notebook example for curve fitting. It covers

    • curve fitting of discount rates by OIS

    • curve fitting of discount rates by LIBOR fix, Eurodollar futures and swap rates

    cla: yes 
    opened by gavincyi 6
  • Bjerksund-Stensland 1993 option pricing model

    Bjerksund-Stensland 1993 option pricing model

    Motiviation/Rational

    While the intent is to add both of the Bjerksund-Stensland option pricing models for american exercise options, this pull request is for the 1993 model, with the 2002 model to follow shortly after.

    Testing

    The primary source used is the description of the 1993 model in the paper on the 2002 model here. Included in the paper are four tables with values for the 1993 model (referenced as "flat boundary approximation"). A test was run checking all of the values (source code can be provided upon request):

    Closed Form Valuation of American Options, 2002
    Table 1, pg. 9 - 1993 model
    Section 1, Calls:  [ 0.03  0.57  3.49 10.32 20.  ]  Puts:  [20.41 11.25  4.4   1.12  0.18]
    Section 2, Calls:  [ 0.03  0.57  3.46 10.29 20.  ]  Puts:  [20.22 11.14  4.35  1.11  0.18]
    Section 3, Calls:  [ 1.05  3.25  7.37 13.47 21.23]  Puts:  [21.44 13.91  8.27  4.52  2.29]
    Section 4, Calls:  [ 0.21  1.34  4.65 10.94 20.  ]  Puts:  [20.95 12.63  6.37  2.65  0.92]
    Table 2, pg. 10 - 1993 model
    Section 1, Calls:  [ 0.05  0.85  4.44 11.66 20.9 ]  Puts:  [20.   10.19  3.51  0.78  0.11]
    Section 2, Calls:  [ 0.05  0.84  4.4  11.55 20.69]  Puts:  [20.   10.17  3.49  0.77  0.11]
    Section 3, Calls:  [ 1.29  3.82  8.35 14.8  22.71]  Puts:  [20.53 12.91  7.42  3.93  1.93]
    Section 4, Calls:  [ 0.41  2.18  6.5  13.42 22.06]  Puts:  [20.   10.7   4.7   1.71  0.52]
    Table 3, pg. 11 - 1993 model
    Section 1, Puts:  [20.   10.01  3.16  0.65  0.09]
    Section 2, Puts:  [20.   10.    2.86  0.54  0.07]
    Section 3, Puts:  [20.28 12.48  7.04  3.66  1.77]
    Section 4, Puts:  [20.   10.24  4.11  1.37  0.39]
    Table 4, pg. 12 - 1993 model
    Section 1, Calls:  [ 2.3   4.71  8.44 13.74 20.85]  Puts:  [25.61 20.04 15.47 11.78  8.87]
    Section 2, Calls:  [ 3.95  7.2  11.64 17.24 23.93]  Puts:  [22.12 16.14 11.64  8.31  5.89]
    Section 3, Calls:  [16.75 22.25 28.31 34.84 41.77]  Puts:  [28.42 23.97 20.34 17.34 14.86]
    Section 4, Puts:  [20.   11.67  6.9   4.12  2.48]
    

    All of the values match, with the only exception being those in Table 4, Section 3. Confirming the values using online calculators, such as this one here, led to the conclusion that the values in Table 4, Section 3 are not correct - but I would appreciate the input of others.

    This PR is in draft status as I still need to add tests to american_option_test.py.

    cla: yes 
    opened by alembcke 5
  • American option price under Cox-Ross-Rubinstein

    American option price under Cox-Ross-Rubinstein

    Binomial options pricing models like Cox-Ross-Rubinstein have been widely used since they are able to handle a variety of conditions for which other models cannot easily be applied proving themselves to be more accurate, particularly for longer-dated options on securities with dividend payments.

    opened by brilhana 5
  • [DOCS] Remedy formula display in notebook

    [DOCS] Remedy formula display in notebook

    Remedy the incorrect display of a formula in an example notebook. (Line changing within the LaTeX codes refrains the formula from being displayed correctly.)

    cla: yes 
    opened by ZhiqingXiao 5
  • case-sensitive paths on a case-insensitive filesystem

    case-sensitive paths on a case-insensitive filesystem

    when cloning, the following warning pops up:

    warning: the following paths have collided (e.g. case-sensitive paths on a case-insensitive filesystem) and only one from the same colliding group is in the working tree:

    'api_docs/tf_quant_finance/datetime/Month.md' 'api_docs/tf_quant_finance/datetime/month.md'

    opened by jj2023 4
  • Month.md and month.md collide on case-insensitive filesystem

    Month.md and month.md collide on case-insensitive filesystem

    Hi,

    I have just cloned this project and find that Month.md and month.md in api_docs/tf_quant_finance/datetime/ collide on my macOS. I could not pull recent merges. The best solution is to reformat my local APFS filesystem. But I think reformatting filesystem seems not a good choice. I guess api_docs may be generated automatically. However, it would be nice if the api and the markdown file could change to another name. And it would benefit other developers who want to clone the project into their macOS filesystem.

    Thanks!

    opened by luweizheng 4
  • Bjerksund-Stensland 2002 option pricing model

    Bjerksund-Stensland 2002 option pricing model

    This pull requests adds the Bjerksund-Stensland 2002 option pricing model, which closes #5.

    Tests are included which mirror the tables in the reference paper. Additional testing in both eager and deferred (graph) mode were conducted with visual inspection of the output of the code. All tests were successful.

    cla: yes 
    opened by alembcke 4
  • Standardize dividend argument in option models

    Standardize dividend argument in option models

    This pull request fixes #50.

    Motivation/Rational

    The argument for dividends across different option pricing models used two names when only one was needed. This pull request updates the files using continuous_dividends to instead use dividend_rates. This makes it easier for end-users to reuse code when using the different option pricing models.

    Explanation of Changes

    As requested in issue #50, deprecation decorators were used to alert users to the change in argument names. All argument names in the tf_quant_finance/black_scholes/ directory and sub-directories for continuous_dividends were changed to dividend_rates.

    Testing

    Many of the methods changed start with the variadic argument (*), which caused test to fail as Bazel would not recognize that the deprecated argument continuous_dividends was in the argument list, causing an error. When the variadic argument was removed, tests completed successfully.

    cla: yes 
    opened by alembcke 4
  • The mailing-list is set to Invite Only

    The mailing-list is set to Invite Only

    Hi! The main page mentions: tf-quant-finance: Open mailing list for discussion and questions of this library. However, the group isn't findable and subscribing via email reveals its settings are "Invite Only". I would suggest to remedy this by either adjusting the settings or updating the info on the main page to remove the list. Thank you,

    opened by blais 0
  • Default constructor no longer available

    Default constructor no longer available

    As of QuantLib 1.28 the default constructor when calling ql.Thirty360() is no longer available in the underlying C++ library, and so a BondBasis must be supplied. Otherwise a TypeError will be thrown when executing these notebook cells:

    TypeError                                 Traceback (most recent call last)
    [<ipython-input-17-0acd484f2084>](https://localhost:8080/#) in <module>
         35 calculation_date = ql.Date(1, 1, 2010)
         36 maturity_date = ql.Date(1, 1, 2011)
    ---> 37 day_count = ql.Thirty360()
         38 calendar = ql.NullCalendar()
         39 
    
    [/usr/local/lib/python3.8/dist-packages/QuantLib/QuantLib.py](https://localhost:8080/#) in __init__(self, *args)
       3479 
       3480     def __init__(self, *args):
    -> 3481         _QuantLib.Thirty360_swiginit(self, _QuantLib.new_Thirty360(*args))
       3482     __swig_destroy__ = _QuantLib.delete_Thirty360
       3483 
    
    TypeError: Wrong number or type of arguments for overloaded function 'new_Thirty360'.
      Possible C/C++ prototypes are:
        QuantLib::Thirty360::Thirty360(QuantLib::Thirty360::Convention,Date const &)
        QuantLib::Thirty360::Thirty360(QuantLib::Thirty360::Convention)
    

    For details see: https://stackoverflow.com/a/74336038/1773216

    opened by natemurthy 1
  • Discrete geometric pricer under Heston vol

    Discrete geometric pricer under Heston vol

    Pricing discrete geometric asians under Heston volatility, using the method described by B. Kim, J. Kim, J. Kim & I. S. Wee in "A Recursive Method for Discretely Monitored Geometric Asian Option Prices"

    opened by jackgillett101 2
  • times grid bug (XLA)

    times grid bug (XLA)

    Hi,

    I noticed a problem with the time grid in euler_sample when XLA compilation (with dynamic shape for times) is used.

    image

    https://colab.research.google.com/drive/1kg8RChmJ3TxdONBHE1lIdCAmZKIXwGcY#scrollTo=pohADCcoTZMh

    Thank you

    opened by a17brah 1
  • Fair performance comparison with QuantLib

    Fair performance comparison with QuantLib

    Hi guys,

    In the "Monte Carlo via Euler Scheme" example you compare TF with QuantLib pricing and conclude that TF finance is x100 times faster(or more).

    I want to note that in QL you evolve 100 time steps of Log Normal process, but in TF you work in log space and only apply exp() at the end. I agree QL may not be very fast, but in this example you compare 100 exponents per path in QL to just 1 exponent in TF...

    Thank you!

    opened by DmitriGoloubentsev 9
Releases(v0.0.1-dev9)
  • v0.0.1-dev9(Sep 17, 2019)

    Release notes:

    • added example Colab "Introduction to TensorFlow Part 2 Debugging and Control Flow"
    • TF Quant Finance now requires TensorFlow >= 1.14 and TensorFlow Probability >= 0.7.0
    Source code(tar.gz)
    Source code(zip)
  • v0.0.1-dev8(Sep 13, 2019)

  • v0.0.1-dev7(Sep 12, 2019)

    Major Features and Improvements:

    • added optimization algorithms: BFGS, L-BFGS, conjugate gradient descent, Nelder-Mead;
    • added bond rate curve fitting using Hagan West interpolation;
    • added antithetic random type for sampling Multivariate Normal Distribution;
    • added several example Jupyter notebook example;
    • fixed a number of bugs.
    Source code(tar.gz)
    Source code(zip)
  • v0.0.1-dev6(Sep 6, 2019)

Owner
Google
Google ❤️ Open Source
Google
Python library for backtesting trading strategies & analyzing financial markets (formerly pythalesians)

finmarketpy (formerly pythalesians) finmarketpy is a Python based library that enables you to analyze market data and also to backtest trading strateg

Cuemacro 3k Dec 30, 2022
rotki is an open source portfolio tracking, analytics, accounting and tax reporting tool that respects your privacy.

rotki is an open source portfolio tracking, analytics, accounting and tax reporting tool that respects your privacy. The mission of rotki is to bring transparency into the crypto and financial sector

Rotki 2k Dec 30, 2022
This repository provides all Python codes and Jupyter Notebooks of the book Python for Finance

Python for Finance (O'Reilly) This repository provides all Python codes and Jupyter Notebooks of the book Python for Finance -- Analyze Big Financial

Yves Hilpisch 1.6k Jan 03, 2023
scrilla: A Financial Optimization Application

A python application that wraps around AlphaVantage, Quandl and IEX APIs, calculates financial statistics and optimizes portfolio allocations.

Grant Moore 6 Dec 17, 2022
stock data on eink with raspberry

small python skript to display tradegate data on a waveshare e-ink important you need locale "de_AT.UTF-8 UTF-8" installed. do so in raspi-config's Lo

Simon Oberhammer 24 Feb 22, 2022
'Personal Finance' is a project where people can manage and track their expenses

Personal Finance by Abhiram Rishi Pratitpati 'Personal Finance' is a project where people can manage and track their expenses. It is hard to keep trac

Abhiram Rishi Prattipati 1 Dec 21, 2021
Technical Analysis Library using Pandas and Numpy

Technical Analysis Library in Python It is a Technical Analysis library useful to do feature engineering from financial time series datasets (Open, Cl

Darío López Padial 3.4k Jan 02, 2023
Yahoo! Finance market data downloader (+faster Pandas Datareader)

Yahoo! Finance market data downloader Ever since Yahoo! finance decommissioned their historical data API, many programs that relied on it to stop work

Ran Aroussi 8.4k Jan 01, 2023
Zipline, a Pythonic Algorithmic Trading Library

Zipline is a Pythonic algorithmic trading library. It is an event-driven system for backtesting. Zipline is currently used in production as the backte

Quantopian, Inc. 15.7k Jan 02, 2023
Github.com/CryptoSignal - #1 Quant Trading & Technical Analysis Bot - 2,100 + stars, 580 + forks

CryptoSignal - #1 Quant Trading & Technical Analysis Bot - 2,100 + stars, 580 + forks https://github.com/CryptoSignal/Crypto-Signal Development state:

Github.com/Signal - 2,100 + stars, 580 + forks 4.2k Jan 01, 2023
Common financial technical indicators implemented in Pandas.

FinTA (Financial Technical Analysis) Common financial technical indicators implemented in Pandas. This is work in progress, bugs are expected and resu

1.8k Dec 31, 2022
Performance analysis of predictive (alpha) stock factors

Alphalens Alphalens is a Python Library for performance analysis of predictive (alpha) stock factors. Alphalens works great with the Zipline open sour

Quantopian, Inc. 2.5k Dec 28, 2022
High-performance TensorFlow library for quantitative finance.

TF Quant Finance: TensorFlow based Quant Finance Library Table of contents Introduction Installation TensorFlow training Development roadmap Examples

Google 3.5k Jan 01, 2023
Python sync/async framework for Interactive Brokers API

Introduction The goal of the IB-insync library is to make working with the Trader Workstation API from Interactive Brokers as easy as possible. The ma

Ewald de Wit 2k Dec 30, 2022
Find big moving stocks before they move using machine learning and anomaly detection

Surpriver - Find High Moving Stocks before they Move Find high moving stocks before they move using anomaly detection and machine learning. Surpriver

Tradytics 1.5k Dec 31, 2022
ffn - a financial function library for Python

ffn - Financial Functions for Python Alpha release - please let me know if you find any bugs! If you are looking for a full backtesting framework, ple

Philippe Morissette 1.4k Jan 01, 2023
:mag_right: :chart_with_upwards_trend: :snake: :moneybag: Backtest trading strategies in Python.

Backtesting.py Backtest trading strategies with Python. Project website Documentation the project if you use it. Installation $ pip install backtestin

3.1k Dec 31, 2022
Fourth and final milestone project

Milestone Project 4: Pound Dog Click link to visit "Pound Dog" Aim of the project The aim of this project is to provide access to a website informing

Jamie Wilson 1 Oct 31, 2021
A proper portfolio tracker. Featuring historical allocation, cash flows and real returns.

Python Portfolio Analytics A portfolio tracker featuring account transactions, historical allocation, dividends and splits management and endless perf

Simone Precicchiani 13 Aug 13, 2022