Fynance
Pure-Python package (Numba-accelerated kernels) providing machine learning, econometric and statistical tools for financial analysis and backtesting of trading strategies.
Installation
pip install fynance
From source:
git clone https://github.com/ArthurBernard/Fynance.git
cd Fynance
pip install -e ".[dev]"
The build is pure-Python — there is no compile step (numerical kernels are
Numba @njit, JIT-compiled on first call).
Architecture
A complete, layered ML/DL backtesting tool — data → features → signal →
portfolio → backtest → metrics — composed through typing.Protocol seams.
numpy is the lingua franca; PyTorch is confined to fynance.models. Each piece
is usable standalone; fynance.strategy.Strategy is an optional orchestrator.
2.0 is a breaking release. See
doc/MIGRATION-2.0.mdfor the import-path map (e.g.fynance.algorithms→fynance.portfolio, performance metrics →fynance.metrics).
Subpackages
Core fynance.core — PriceSeries value object (thin, numpy-backed) and the
pipeline protocols (DataSource, FeatureTransform, SignalModel, Allocator,
CostModel, Metric); executable conformance/causality checks (check_conforms,
assert_causal) and duck-typed pandas/polars seams (from_pandas/to_pandas).
Data fynance.data — file adapters (load for CSV/Parquet → PriceSeries),
alignment/resampling, no-lookahead temporal splits (train_test_split,
walk_forward, combinatorial-purged combinatorial_purged_cv) and vendor-agnostic
intraday session utilities (session_mask/session_id/split_sessions).
Features fynance.features — technical indicators (Bollinger, RSI, MACD, ROC,
realized volatility, rolling skew/kurtosis/autocorr, …), OHLCV indicators (ATR,
ADX, Williams %R, OBV, VWAP), a causal GARCH(1,1) conditional-volatility feature,
momentums (SMA, EMA, WMA) and adaptive windows, NaN-aware cross-sectional
operators (cs_rank/cs_zscore/cs_neutralize, …), pairwise rolling stats
(roll_corr/roll_beta, cross_corr), fractional differentiation (fracdiff),
AFML labeling (triple_barrier, meta_labels, uniqueness weights), scaling
(incl. rolling rank), statistics, feature engineering (multi-resolution, Granger
causality) and market-regime detection.
Metrics fynance.metrics — performance/evaluation metrics (Sharpe, Sortino,
Calmar, drawdown, …) and a one-call summary; tail risk (VaR/CVaR/CDaR,
tail dependence), benchmark-relative metrics (alpha, beta, tracking error,
information ratio, capture), factor evaluation (quantile returns, rolling IC,
IC decay), and turnover/exposure and per-trade analytics.
Signal fynance.signal — prediction → position mappers (sign, threshold,
rank, vol-targeting) and a model+mapper pipeline.
Portfolio fynance.portfolio — allocation (ERC, HRP, IVP, MDP, MVP, plus
risk-budgeting RBP) with an opt-in cov= seam over conditioned covariance
estimators (Ledoit-Wolf, EWMA, factor, Marchenko-Pastur denoising); risk
attribution, an exposure-constraints overlay (project_weights),
rebalancing policies (calendar/band/turnover-cap, lot discretization) and
sizing (fractional Kelly, single-series and book-level volatility targeting,
transaction costs).
Backtest fynance.backtest — vectorized engine (backtest: positions +
returns/prices + cost → BacktestResult), cost models (ProportionalCost, the
non-linear MarketImpactCost, per-bar HoldingCost and CompositeCost stacking)
and capacity analysis (capacity_curve, breakeven_fee).
Plot fynance.plot — composable matplotlib figures and one-call tearsheet
and factor_tearsheet reports.
Models fynance.models — econometric models (MA, ARMA, ARMA-GARCH, plus
GJR/EGARCH kernels) and PyTorch nets (MLP, RNN, GRU, LSTM, MultiHeadAttention,
TCN, Transformer), a direction+magnitude stacking ensemble, RegimeMoE
(regime-conditioned mixture-of-experts), objective-aligned training with
cross-asset pretraining, distributional QuantileModel, uncertainty wrappers
(DeepEnsemble, MCDropout), causal conformal intervals, purged walk-forward
hyperparameter search, differentiable losses (Sharpe, Sortino, Calmar, Omega,
directional, hybrid, pinball), and robust-training utilities.
Estimator fynance.estimator — volatility-model MLE: fit_volatility fits
GARCH / GJR-GARCH / EGARCH with Gaussian or Student-t innovations, returning a
VolatilityResult (AIC/BIC, conditional vol, forecast, simulate).
Strategy fynance.strategy — optional orchestrator composing the maillons
end-to-end, with single-run and walk-forward evaluation.
Research fynance.research — data-agnostic experiment harness: Experiment
(serializable run record), run_experiment (seeded, cost-aware, walk-forward),
write_report (portable markdown + tearsheet PNG + notebook), synthetic data
generators (gbm, regime_switching) and overfitting guards (permutation and
block bootstrap, deflated Sharpe, PBO/CSCV, walk-forward MDA feature importance).
Results are written only to a caller-provided output_dir — fynance never stores
them itself.
Quick start
import numpy as np
import fynance as fy
# 1. Data — load a CSV/Parquet file, or build a PriceSeries directly
prices = fy.PriceSeries(100 * np.cumprod(1 + np.random.randn(750) * 0.01))
# 2. Compose a strategy: momentum feature -> position -> backtest with costs
strat = fy.Strategy(
features=lambda p: np.sign(np.diff(p, prepend=p[0])),
signal=lambda x: x,
cost=fy.ProportionalCost(fee=0.0005),
)
result = strat.run(prices)
# 3. Evaluate and report
print(result.summary()) # Sharpe, Sortino, Calmar, max drawdown, ...
fig = fy.tearsheet(result) # one-call performance report
See Notebooks/quickstart_v2.ipynb for the full
runnable tour (data, features, walk-forward, reporting). An optional Streamlit
playground ships under apps/playground/
(pip install -e ".[ui]" && streamlit run apps/playground/app.py).
Links
Metadata
Release files for fynance 2.13.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fynance-2.13.1.tar.gz | 426.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fynance-2.13.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 968.1 kB
Release files / fynance-2.13.1.tar.gz
| Download URL | fynance-2.13.1.tar.gz |
|---|---|
| Size | 426.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
63aefa56d66a46c67422ed01eb8702749c0db2dbe92a5464b4516a7d178c4ad1
|
|
BLAKE2b-256 checksum How to use checksums |
c0425e11b17513e5739f88863991b2e311409ad831beea5fd120c71a84203553
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.
Transparency logRelease files / fynance-2.13.1-py3-none-any.whl
| Download URL | fynance-2.13.1-py3-none-any.whl |
|---|---|
| Size | 541.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
55af7eed527d05fdddbd3948b9785aeacc1027a4861fc8805522aa93e377bd33
|
|
BLAKE2b-256 checksum How to use checksums |
0a65212695039fada2e7a1bcf0e233e310ceb018c0cc558c54c21d8c2002525e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 6, 2026.
Transparency log