backtestingfx
A Rust-powered FX backtesting library for Python. Write your strategy in Python, let Rust handle the heavy lifting.
Inspired by backtesting.py but built specifically for forex — lot sizes, pip-based PnL, stop loss, take profit, and realistic account currency conversion.
pip install backtestingfx
Quick Start
import pandas as pd
from backtestingfx import Backtest, Strategy
class MyCrossStrategy(Strategy):
def next(self):
self.close_all()
self.buy(lot_size=0.1)
df = pd.read_csv("EURUSD_1H.csv")
bt = Backtest(df, MyCrossStrategy, cash=10000.0, spread=0.0001)
stats = bt.run()
print(stats)
--- Backtest Results ---
Initial Cash: 10000.00
Final Cash: 9823.50
Total Return: -1.77%
Trades: 248
Win Rate: 52.4%
Avg PnL: -0.71380
Best Trade: 84.20000
Worst Trade: -61.30000
Profit Factor: 0.94
Max Drawdown: 3.21%
Interactive HTML report
Install the optional report dependency and generate a self-contained HTML file:
pip install "backtestingfx[report]"
bt = Backtest(df, MyCrossStrategy, cash=10000.0, spread=0.0001)
stats = bt.run()
bt.plot("strategy-report.html")
The report includes candlesticks, trade entries and exits, equity, drawdown, trade diagnostics, and a complete trade ledger. Plotly is embedded in the file, so the report works offline without a server.
Installation
pip install backtestingfx
Requires Python 3.9+.
Writing a Strategy
Inherit from Strategy and implement next(). It is called once per bar.
from backtestingfx import Backtest, Strategy
class MyStrategy(Strategy):
def init(self):
# called once before the loop starts
# self._bars contains all Bar objects if you need to pre-compute
pass
def next(self):
# self._bar — current bar (open, high, low, close, volume, timestamp)
# self._broker — the broker instance (advanced use)
if self._bar.close > 1.1000:
self.buy(lot_size=0.1, stop_loss=1.0950, take_profit=1.1100)
else:
self.close_all()
Strategy methods
| Method | Description |
|---|---|
self.buy(lot_size, stop_loss=None, take_profit=None) |
Open a long position |
self.sell(lot_size, stop_loss=None, take_profit=None) |
Open a short position |
self.close_all() |
Close all open positions |
self.close_position(id) |
Close a specific position by ID |
self.close_partial(id, lot_size) |
Close part of a position, leaving the rest open |
self.update_sl(id, stop_loss) |
Move a position's stop loss (returns False if the id is gone) |
Trailing stops and scaling out
update_sl moves the stop on an open position in place, so a trailing stop costs
nothing — closing and reopening would pay spread and commission again. close_partial
banks part of a position and leaves the remainder running under the same id, so you can
keep trailing it.
class TrailingBreakout(Strategy):
def next(self):
if not self.positions:
self.buy(1.0, stop_loss=self._bar.close - 0.0050)
return
position = self.positions[0]
# take half off once the trade is 50 pips up
if self._bar.close > position.entry_price + 0.0050 and position.lot_size > 0.5:
self.close_partial(position.id, 0.5)
# trail the stop 50 pips behind price, never backwards
trail = self._bar.close - 0.0050
if position.stop_loss is None or trail > position.stop_loss:
self.update_sl(position.id, trail)
update_sl does not check which way the stop moves — widening a stop is a legitimate
thing to do, so that call is yours to make (the trail > position.stop_loss line above).
close_partial with a size at or above the position just closes it outright, and ignores
zero or negative sizes.
Bar fields
self._bar.open
self._bar.high
self._bar.low
self._bar.close
self._bar.volume
self._bar.timestamp # unix timestamp (int)
Optimization
Grid-search parameters with the simulations running in parallel Rust threads:
import numpy as np
from backtestingfx import Backtest
def sma_cross(df, fast, slow):
fast_sma = df["close"].rolling(fast).mean()
slow_sma = df["close"].rolling(slow).mean()
return np.where(fast_sma > slow_sma, 0.1, 0.0) # target lots per bar
bt = Backtest(df, cash=10_000, commission=3.5)
results = bt.optimize(sma_cross, maximize="total_return_pct",
fast=range(5, 26), slow=range(30, 101, 5))
best_params, best_stats = results[0]
optimize() returns [(params, stats), ...] sorted best-first by the named Stats
field. Re-sort it yourself to minimise something instead.
Why a signal function instead of next()
next() runs in Python, so every bar needs the GIL and threads can't help. A signal
function is called once per parameter combination, not once per bar — it returns the
target lot size for each bar (positive long, negative short, 0.0 flat), and Rust runs
every simulation natively with the GIL released. On a 315-combination grid that is
157x faster than looping Backtest.run() over the same grid.
The trade-off: a signal function can't see the broker, so path-dependent logic (trailing
stops, pyramiding, "exit after N bars") still needs next() and a plain loop. Indicator
warmup must come out as 0.0, not NaN — a NaN signal is rejected rather than
silently treated as "hold".
Backtest Parameters
Backtest(
df, # pandas DataFrame with OHLCV columns
StrategyClass,
cash=10000.0, # starting account balance in USD
commission=0.0, # commission per lot (e.g. 7.0 = $7/lot)
spread=0.0, # spread in price units (e.g. 0.0001 = 1 pip)
contract_size=100000.0, # standard FX lot size, don't change this
quote_to_account=1.0, # conversion rate from quote currency to USD
)
Trading non-USD pairs
By default quote_to_account=1.0 which is correct for USD-quoted pairs (EURUSD, GBPUSD).
For other pairs, pass the rate that converts the quote currency to USD:
| Pair | quote_to_account |
|---|---|
| EURUSD, GBPUSD | 1.0 (default) |
| EURGBP | GBPUSD rate (e.g. 1.27) |
| USDCAD, GBPCAD | CADUSD rate (e.g. 0.74) |
| USDJPY | JPYUSD rate (e.g. 0.0067) |
bt = Backtest(df, MyStrategy, cash=10000.0, spread=0.00015, quote_to_account=1.27)
Stats
| Field | Description |
|---|---|
initial_cash |
Starting balance |
final_cash |
Ending balance |
total_return_pct |
Total return as a percentage |
num_trades |
Number of completed trades |
num_wins |
Number of winning trades |
win_rate_pct |
Win rate as a percentage |
avg_pnl |
Average PnL per trade in USD |
best_trade |
Best single trade PnL in USD |
worst_trade |
Worst single trade PnL in USD |
profit_factor |
Gross profit / gross loss |
max_drawdown_pct |
Maximum drawdown as a percentage |
sharpe_ratio |
Unannualized Sharpe ratio |
equity_curve |
Account equity from initial cash through final liquidation |
trades |
Completed trades with entry, exit, size, direction, and net PnL |
Data Format
Pass a pandas DataFrame with these columns:
open, high, low, close, volume
The index should be a DatetimeIndex, or include a timestamp column. Volume is optional (defaults to 0).
Why Rust?
The backtesting engine is written in Rust and compiled as a native Python extension via PyO3. This means the event loop, broker simulation, and stats computation run at native speed while your strategy stays in plain Python.
License
MIT — see LICENSE
Metadata
Release files for backtestingfx 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| backtestingfx-0.2.0.tar.gz | 67.8 kB | Without provenance | Details |
Built distributions (wheels)
Total release size: 10.4 MB
Release files / backtestingfx-0.2.0.tar.gz
| Download URL | backtestingfx-0.2.0.tar.gz |
|---|---|
| Size | 67.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0149a5726a7b204422d429ad44435dc448541aec2be91be846e2664ea407abbb
|
|
BLAKE2b-256 checksum How to use checksums |
0264238c4c49feee8b92d45c3a7fdc4261ee075c38555a1b8462ed157c54f418
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 354.7 kB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
1ec67296a48621a7714ee7bc5357eab399bb0cf108f764b065a41165eaaef777
|
|
BLAKE2b-256 checksum How to use checksums |
1ca950c9e8be8131aa16ba8fafce806fafaae991b4b2c0dc8838d1097df24808
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | backtestingfx-0.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 351.3 kB |
| Tags | Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
1360d3057db448f567b67abe4f845272eb4eb14f82cc9c18e47320b7512e540e
|
|
BLAKE2b-256 checksum How to use checksums |
ab19cf4b21f3739937519243baf7b3e78693cad22c1313054a784253c67eac5f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 351.5 kB |
| Tags | CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
038ebb39f6d072a70847ca4e58178597146343d99b3be520388136635eb956db
|
|
BLAKE2b-256 checksum How to use checksums |
b91f402082891cde835c6b9beb00fd42873a5fe734bb49f74f5c37f553f16a7f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 352.1 kB |
| Tags | CPython 3.15 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
9162e5d3238c039f5dffa75406ddedfa403abed526f7082ce06b40ed8a91fd09
|
|
BLAKE2b-256 checksum How to use checksums |
48a804e625795a2b48873eb361880b061e24aa1a4f809a67541cbb827d5a5e4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 351.7 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
c86f303de17d6291ac812f01f3cb7f671b42bdcf7f9605a3e1d45fed65d91b8b
|
|
BLAKE2b-256 checksum How to use checksums |
33211b8a518395273d488ef60d42a604991a460c12c6200a0d3071a6e445603e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | backtestingfx-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 346.4 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
285b1e1b832038b6153780101098f1faa965726c1e910deed0965fb79e949471
|
|
BLAKE2b-256 checksum How to use checksums |
6357ec4cd072d3af543b99914d069f993ee0c9a97b2af77b8a08b94a0d57e22f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp314-cp314-win_amd64.whl
| Download URL | backtestingfx-0.2.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 190.7 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5adbae513188167f8aa419c40b4b1d315d52ef230cfe31b4fb46b7a52187472f
|
|
BLAKE2b-256 checksum How to use checksums |
41ec412a41d62db37ccb00a28fdd32547eeddf632fe278cee340bff1233d6edf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 352.2 kB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
7b8edc2bf15beabb7b0b8ad776f773fe53a2918f03eecf7c4912912a15233dd1
|
|
BLAKE2b-256 checksum How to use checksums |
bd8709f3481af44178e01f322792cd54f96089578a9ede4f55acebb401189dad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | backtestingfx-0.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 348.3 kB |
| Tags | CPython 3.14 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
52269644db30b02ea750eac9923a29585c576a04b54c4b7049f308f4d6abc2e6
|
|
BLAKE2b-256 checksum How to use checksums |
6b2021c8549684c49bb479af90588ee78e0774aead0e84acbab8f87708c76cc2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | backtestingfx-0.2.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 301.1 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
59f3da60f04944e2014a745b017576504f0c0062e02216dfa9716f2bbf3f0a00
|
|
BLAKE2b-256 checksum How to use checksums |
9d2a394f9f15afe5f3a094780acc84748009dd57ecc109177fd71a340690e407
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp314-cp314-macosx_10_12_x86_64.whl |
|---|---|
| Size | 306.0 kB |
| Tags | CPython 3.14 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
474f10a5e5b1ff162251113ceaecda395195895fd16adcbfb49c0c15098f8e04
|
|
BLAKE2b-256 checksum How to use checksums |
d6051e6f237687bda5f98615adc534dad249fa538324dcb651ee1ab625b6df5f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp313-cp313-win_amd64.whl
| Download URL | backtestingfx-0.2.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 190.3 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3bb4128de5d52c35ecad02d25d96d9af3d1e97d1c9f04158145cdaffe44dcebe
|
|
BLAKE2b-256 checksum How to use checksums |
9193e4dd04b03378f8eeb0cc2923896976766ad39d9943d75fda75488d245564
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 351.8 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
099de9dfc23b4dbd678ee2248a6b67a13e5368423d2feea4203737979fec3520
|
|
BLAKE2b-256 checksum How to use checksums |
3f617282d324adf30d196aecf3590a9bfcc9387e80bd599e2aa918690f86e31a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | backtestingfx-0.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 348.0 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
716f6f0271bc51c32c05174e862764da37b9e490b00cc7f160f87ac00f9efd0c
|
|
BLAKE2b-256 checksum How to use checksums |
fb18cb35fd0fa3cd6ffb1b4c582751ee6904c3e25e13f42e712ccdb252bb01be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | backtestingfx-0.2.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 301.1 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
218b6f1066e4eba778d6f83f038295e316cf05a7ceb14b3511164ee8bcd10e5c
|
|
BLAKE2b-256 checksum How to use checksums |
122cffa44840e4944f9eedac96ffcceee7a5c916cefda9b44655ba3097c73f0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 305.9 kB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
efe1d47a7205cb55edb640873592ae0bc9801ed6dce18a2fdd5a35a390c05edd
|
|
BLAKE2b-256 checksum How to use checksums |
fc49ba1f4ce6ad80035ca88cda5d431aa9a5c011212c59570d911dcf40a28342
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp312-cp312-win_amd64.whl
| Download URL | backtestingfx-0.2.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 190.5 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
c763a7fe944d68624711251496b9ce8d7f07732a39cf31f775bde107f0e85220
|
|
BLAKE2b-256 checksum How to use checksums |
72eeda0cfdc893079cd9ce6615768196b314adf467678fe476d70b3f3583b77a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 352.1 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
86e043edc3729cf13802688a3e73f040d125abceb8c531f20e2d568aad86b4b3
|
|
BLAKE2b-256 checksum How to use checksums |
f46b7f444317ac080424c07e70bfe46a3b2b2dfb3b257f64ad5ead2d61318ffb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | backtestingfx-0.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 348.0 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
09822ee9d57247f5b517c3ab65c1b5b57fb66c44249a00b7f9c3a10f0a782698
|
|
BLAKE2b-256 checksum How to use checksums |
92207613231d6b6b6059eff97f94444338708c45e07a55b5345b436bbe05b8d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | backtestingfx-0.2.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 301.0 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
37d023d8dcc908b11eef831bc1ff1e42908985cca67b82ea15597ef8d933b1b8
|
|
BLAKE2b-256 checksum How to use checksums |
9d07e046d86b5c55a15d8c2c0108e7a1b15c3616dff0f84ae9563f2bad98c3f9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl |
|---|---|
| Size | 305.9 kB |
| Tags | CPython 3.12 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
297707e6fcaddf8bab310d8c293dddb01c8b4d1426d3e4c8bbb4faf21445cfca
|
|
BLAKE2b-256 checksum How to use checksums |
3ef4805e94821c8f760c0fb70f7b61e4770d564a74007af9b263b122a7c226e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp311-cp311-win_amd64.whl
| Download URL | backtestingfx-0.2.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 192.1 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2a10171648266a03eefd46f8a86bde6a7769cd8182f18768e1456854da79265c
|
|
BLAKE2b-256 checksum How to use checksums |
153a87ddfae89c2b387b214d7790057fad3051a6c8a431d79b4f2b4eda882751
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 353.7 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
f13c4fa1b06a93e09e473d5382a6df0c6e75b0c96d657ae4c049c9966a856c88
|
|
BLAKE2b-256 checksum How to use checksums |
5109d5b368471f07dfd318b8de4178c64a8c1735d37223c8f20fe9e1f2783c7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | backtestingfx-0.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 349.4 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
0948f7da3e612c4266acba72f2ab9e585c625dd38fb49cc68c9b1f01f2ab9164
|
|
BLAKE2b-256 checksum How to use checksums |
e373a20ded7d5588a6f2db96bae2d32ef8464cece9808d8012821d30b655bc38
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | backtestingfx-0.2.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 303.0 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d1d249cdc83bc2964211a1b32e66426f9432f3fa874a24f182334ec72862c179
|
|
BLAKE2b-256 checksum How to use checksums |
76006d4ef505274645371fc9bf3dfcc0a63a5f0036605b64a5b8cf963ffca958
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 307.3 kB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
ac0e2c98aa640699b74aa1a6c98dbe5bf9908c019b399feba1c7dd0717b43252
|
|
BLAKE2b-256 checksum How to use checksums |
8699f7eeaa197b139fa35ce3c800a774dae798252d6db147c54372d32e56d447
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp310-cp310-win_amd64.whl
| Download URL | backtestingfx-0.2.0-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 192.0 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
d6a5de16edaa4892d9765ca44a9e59b6825a51b9affc7894c9ce44aeabe6434d
|
|
BLAKE2b-256 checksum How to use checksums |
fb98319bc73a575291f729aedad3aafdcd5b8e69581a4c5a0752cfd513c5e4e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 353.7 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
bf44c2e62568ea7d443c38d400774c6aacc22b580b487d45d853a3461b1425fa
|
|
BLAKE2b-256 checksum How to use checksums |
00cacd1e4a07379725fbd750af417bd210fa46e9b6093b2a3871af54f6bec7c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | backtestingfx-0.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 349.4 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
553289900f0379134b3264e74033d51cdd76ac1eb1108397e5febca44ec58c33
|
|
BLAKE2b-256 checksum How to use checksums |
6a22652de4adb835aa0f5f62abdf6d1cff4ceeb4192eaecdd2a6ba73fdb7b2bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 356.1 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
9862cbeb07f3ace97df703dccc6d10761be582a6ccf89d6376c434274b1b9ccb
|
|
BLAKE2b-256 checksum How to use checksums |
9b58f517d8d2f3e982a4c37d868617c54931019702f3d7df1cc0bdb2dab9e06c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | backtestingfx-0.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 351.9 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
23e2da075d157b52c586bfa96972ec14faaea90cd62df76075d47d4dcbe228d9
|
|
BLAKE2b-256 checksum How to use checksums |
d4c2ebe5869770eae2c78448d1407c504c2cec8058976502dfdf34173bdd969b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
| Download URL | backtestingfx-0.2.0-cp39-cp39-macosx_11_0_arm64.whl |
|---|---|
| Size | 305.4 kB |
| Tags | CPython 3.9 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c44a32a42925dd3288ee5ede21f5805a576b70010f22024178ad7a5b46507d41
|
|
BLAKE2b-256 checksum How to use checksums |
5c4ed127c4a7173de77671c05af7f6d279029176f3e61a7e875e725e573442f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / backtestingfx-0.2.0-cp39-cp39-macosx_10_12_x86_64.whl
| Download URL | backtestingfx-0.2.0-cp39-cp39-macosx_10_12_x86_64.whl |
|---|---|
| Size | 310.6 kB |
| Tags | CPython 3.9 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
c27f485b07e56a21d1eed3db07d7b5ab087d4e07d083183a4e5be591b5ccb8fe
|
|
BLAKE2b-256 checksum How to use checksums |
865b75dfee2fd6806d86d3b1924fa5e1c7437ba00892bab7884ffa51b2f52114
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for backtestingfx 0.2.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.