Metadata-Version: 2.5
Name: ffn
Version: 1.2.2
Summary: Financial functions for Python
Project-URL: Repository, https://github.com/pmorissette/ffn
Project-URL: Homepage, http://pmorissette.github.io/ffn/
Project-URL: Documentation, https://pmorissette.github.io/ffn/
Author-email: Philippe Morissette <morissette.philippe@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: algorithmic trading,algotrading,finance,python,quant,quant finance
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.9
Requires-Dist: decorator>=5.0.7
Requires-Dist: matplotlib>=1
Requires-Dist: numpy
Requires-Dist: pandas>=0.19
Requires-Dist: scikit-learn>=0.15
Requires-Dist: scipy>=0.15
Requires-Dist: tabulate>=0.7.5
Requires-Dist: yfinance>=0.2
Provides-Extra: dev
Requires-Dist: build; extra == 'dev'
Requires-Dist: bump-my-version; extra == 'dev'
Requires-Dist: check-dist; extra == 'dev'
Requires-Dist: codespell; extra == 'dev'
Requires-Dist: copier; extra == 'dev'
Requires-Dist: hatchling; extra == 'dev'
Requires-Dist: klink>=0.1.13; extra == 'dev'
Requires-Dist: mdformat; extra == 'dev'
Requires-Dist: mdformat-myst; extra == 'dev'
Requires-Dist: mdformat-tables>=1; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: pytest-benchmark; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: twine; extra == 'dev'
Requires-Dist: ty; extra == 'dev'
Requires-Dist: uv; extra == 'dev'
Requires-Dist: wheel; extra == 'dev'
Requires-Dist: yardang>=0.10.0; extra == 'dev'
Provides-Extra: develop
Requires-Dist: build; extra == 'develop'
Requires-Dist: bump-my-version; extra == 'develop'
Requires-Dist: check-dist; extra == 'develop'
Requires-Dist: codespell; extra == 'develop'
Requires-Dist: copier; extra == 'develop'
Requires-Dist: hatchling; extra == 'develop'
Requires-Dist: klink>=0.1.13; extra == 'develop'
Requires-Dist: mdformat; extra == 'develop'
Requires-Dist: mdformat-myst; extra == 'develop'
Requires-Dist: mdformat-tables>=1; extra == 'develop'
Requires-Dist: pytest; extra == 'develop'
Requires-Dist: pytest-benchmark; extra == 'develop'
Requires-Dist: pytest-cov; extra == 'develop'
Requires-Dist: ruff; extra == 'develop'
Requires-Dist: twine; extra == 'develop'
Requires-Dist: ty; extra == 'develop'
Requires-Dist: uv; extra == 'develop'
Requires-Dist: wheel; extra == 'develop'
Requires-Dist: yardang>=0.10.0; extra == 'develop'
Provides-Extra: test
Requires-Dist: pytest; extra == 'test'
Requires-Dist: pytest-benchmark; extra == 'test'
Requires-Dist: pytest-cov; extra == 'test'
Description-Content-Type: text/markdown

# ffn - Financial Functions for Python

![ffn](docs/source/_static/logo.png)

[![Build Status](https://github.com/pmorissette/ffn/workflows/Build%20Status/badge.svg)](https://github.com/pmorissette/ffn/actions/)
[![PyPI Version](https://img.shields.io/pypi/v/ffn)](https://pypi.org/project/ffn/)
[![PyPI License](https://img.shields.io/pypi/l/ffn)](https://pypi.org/project/ffn/)

If you are looking for a full backtesting framework, please check out [bt](https://github.com/pmorissette/bt).
bt is built atop ffn and makes it easy and fast to backtest quantitative strategies.

## Overview

<a id="a-brief-introduction"></a>

ffn is a library that contains many useful functions for those who work in **quantitative
finance**. It stands on the shoulders of giants (Pandas, Numpy, Scipy, etc.) and provides
a vast array of utilities, from performance measurement and evaluation to
graphing and common data transformations.

```python
import ffn
returns = ffn.get('aapl,msft,c,gs,ge', start='2010-01-01').to_returns().dropna()
print(returns.calc_mean_var_weights().as_format('.2%'))
```

Example output:

```text
    aapl    62.54%
    c       -0.00%
    ge      36.19%
    gs      -0.00%
    msft     1.26%
    dtype: object
```

## Installation

The easiest way to install `ffn` is from the [Python Package Index](https://pypi.python.org/pypi/ffn/)
using `pip`.

```bash
pip install ffn
```

Since ffn has many dependencies, we strongly recommend installing the [Anaconda Scientific Python Distribution](https://store.continuum.io/cshop/anaconda/). This distribution comes with many of the required packages pre-installed, including pip. Once Anaconda is installed, the above command should complete the installation.

## Documentation

Read the docs at <https://pmorissette.github.io/ffn/>.

- [Introduction](docs/source/introduction.md)
- [Installation guide](docs/source/install.md)
- [Quickstart](docs/source/quick.md)
- [Full API](docs/source/ffn.md)

## Contribute

See the [development guide](docs/development.md) for setup, tests, documentation builds, and Copier template updates.
