Files
ferro-ta/benchmarks/artifacts/latest/benchmark_derivatives_compare.json
T
Pratik Bhadane 71b6343e92 feat: refresh benchmark coverage and harden CI tooling
Refresh the benchmark and performance surface across the repo. This updates the benchmark wrappers and helper scripts, regenerates the checked-in benchmark and perf-contract artifacts, and folds in the related roadmap, compatibility, and example notebook changes that belong with this performance-focused pass.

Harden the Python CI and local pre-push flow so the same checks pass reliably in both places. The workflow and pre-push script now use module-safe uv typecheck invocations, the Python test environment installs the optional MCP dependency needed by the MCP server tests, and one-off root benchmark outputs are ignored to keep the repo clean.

Align local tooling with the current project configuration by updating the Ruff pre-commit hook, tightening the API typing and MCP server helpers, and refreshing the lockfile to pick up the audited PyJWT fix while preserving the rest of the staged source changes.
2026-03-24 14:52:20 +05:30

1163 lines
30 KiB
JSON

{
"schema_version": 1,
"command": "python benchmarks/bench_derivatives_compare.py --sizes 1000 10000 --accuracy-size 512 --json benchmarks/artifacts/latest/benchmark_derivatives_compare.json",
"n_warmup": 1,
"n_runs": 7,
"accuracy_size": 512,
"sizes": [
1000,
10000
],
"metadata": {
"suite": "benchmark_derivatives_compare",
"runtime": {
"generated_at_utc": "2026-03-24T05:39:25.642936+00:00",
"python_version": "3.13.5",
"python_implementation": "CPython",
"python_executable": "/Users/pratikbhadane/Work/Projects/ferro-ta/.venv/bin/python3",
"platform": "macOS-26.3.1-arm64-arm-64bit-Mach-O",
"system": "Darwin",
"release": "25.3.0",
"machine": "arm64",
"processor": "arm",
"cpu_model": "Apple M3 Max",
"cpu_count_logical": 14,
"total_memory_bytes": 38654705664
},
"git": {
"commit": "0382c4e3024c96809ffd89dd76d820efcd56479d",
"dirty": true,
"branch": "main"
},
"build": {
"rustc": "rustc 1.91.1 (ed61e7d7e 2025-11-07) (Homebrew)\nbinary: rustc\ncommit-hash: ed61e7d7e242494fb7057f2657300d9e77bb4fcb\ncommit-date: 2025-11-07\nhost: aarch64-apple-darwin\nrelease: 1.91.1\nLLVM version: 21.1.5",
"cargo": "cargo 1.91.1 (Homebrew)",
"cargo_release_profile": {
"lto": true,
"codegen-units": 1
},
"rustflags": null,
"cargo_build_rustflags": null,
"maturin_flags": null
},
"packages": {
"numpy": "2.2.6",
"ferro-ta": "1.0.3",
"py_vollib": null
},
"dataset": {
"generator": "synthetic_option_chain",
"speed_sizes": [
1000,
10000
],
"accuracy_size": 512,
"dtype": "float64",
"array_layout": "C-contiguous",
"seed": 42,
"ranges": {
"spot": [
80.0,
120.0
],
"strike": [
70.0,
130.0
],
"rate": [
0.0,
0.07
],
"carry": [
0.0,
0.03
],
"time_to_expiry_years": [
0.019178082191780823,
2.0
],
"volatility": [
0.08,
0.65
]
}
},
"methodology": {
"warmup_runs": 1,
"measured_runs": 7,
"reported_metric": "median_ms",
"speed_metric": "contracts_per_second",
"accuracy_reference": "Scalar analytical Black-Scholes-Merton and Black-76 formulas using math.erf; IV accuracy is measured as repriced error from the recovered volatility because direct volatility differences can be unstable on low-vega contracts.",
"input_layout_notes": "Benchmarks use contiguous float64 arrays. If your workload passes non-contiguous arrays or mixed dtypes, benchmark that path separately.",
"allocation_notes": "python_peak_allocation_bytes is a tracemalloc snapshot of Python-tracked allocations only; it does not measure native RSS.",
"provider_notes": "reference_python_loop and py_vollib are scalar baselines and are size-capped in the speed table to keep runtime reasonable."
},
"providers": [
{
"name": "ferro_ta",
"kind": "project",
"note": "Rust-backed vectorized implementation.",
"max_speed_size": null,
"supported_cases": [
"bsm_call_price",
"bsm_call_iv",
"bsm_call_greeks",
"black76_call_price"
]
},
{
"name": "reference_numpy",
"kind": "reference",
"note": "Pure NumPy analytical formulas with vectorized IV bisection.",
"max_speed_size": null,
"supported_cases": [
"bsm_call_price",
"bsm_call_iv",
"bsm_call_greeks",
"black76_call_price"
]
},
{
"name": "reference_python_loop",
"kind": "reference",
"note": "Scalar math-loop analytical baseline; useful for accuracy sanity checks.",
"max_speed_size": 1000,
"supported_cases": [
"bsm_call_price",
"bsm_call_iv",
"bsm_call_greeks",
"black76_call_price"
]
}
]
},
"accuracy": {
"summary": [
{
"case": "bsm_call_price",
"best_provider": "reference_python_loop",
"best_max_abs_error": 0.0,
"worst_provider": "ferro_ta",
"worst_max_abs_error": 1.6274806e-05
},
{
"case": "bsm_call_iv",
"best_provider": "reference_python_loop",
"best_max_abs_error": 1e-10,
"worst_provider": "reference_numpy",
"worst_max_abs_error": 1.6276264e-05
},
{
"case": "bsm_call_greeks",
"best_provider": "reference_python_loop",
"best_max_abs_error": 0.0,
"worst_provider": "ferro_ta",
"worst_max_abs_error": 1.7335858e-05
},
{
"case": "black76_call_price",
"best_provider": "reference_python_loop",
"best_max_abs_error": 0.0,
"worst_provider": "ferro_ta",
"worst_max_abs_error": 1.6274806e-05
}
],
"results": [
{
"case": "bsm_call_price",
"label": "BSM Call Price",
"provider": "ferro_ta",
"provider_kind": "project",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512
],
"max_abs_error": 1.6274806e-05,
"mean_abs_error": 5.249347e-06,
"rmse": 6.48942e-06,
"max_rel_error": 0.009546518154
},
{
"case": "bsm_call_price",
"label": "BSM Call Price",
"provider": "reference_numpy",
"provider_kind": "reference",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512
],
"max_abs_error": 1.6274806e-05,
"mean_abs_error": 5.249347e-06,
"rmse": 6.48942e-06,
"max_rel_error": 0.009546518154
},
{
"case": "bsm_call_price",
"label": "BSM Call Price",
"provider": "reference_python_loop",
"provider_kind": "reference",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512
],
"max_abs_error": 0.0,
"mean_abs_error": 0.0,
"rmse": 0.0,
"max_rel_error": 0.0
},
{
"case": "bsm_call_iv",
"label": "BSM Call IV Recovery",
"provider": "ferro_ta",
"provider_kind": "project",
"sample_size": 512,
"accuracy_target": "reconstructed_price",
"output_shape": [
512
],
"max_abs_error": 1.6275836e-05,
"mean_abs_error": 5.249474e-06,
"rmse": 6.489527e-06,
"max_rel_error": 0.475843909884
},
{
"case": "bsm_call_iv",
"label": "BSM Call IV Recovery",
"provider": "reference_numpy",
"provider_kind": "reference",
"sample_size": 512,
"accuracy_target": "reconstructed_price",
"output_shape": [
512
],
"max_abs_error": 1.6276264e-05,
"mean_abs_error": 5.249487e-06,
"rmse": 6.489634e-06,
"max_rel_error": 0.009628987742
},
{
"case": "bsm_call_iv",
"label": "BSM Call IV Recovery",
"provider": "reference_python_loop",
"provider_kind": "reference",
"sample_size": 512,
"accuracy_target": "reconstructed_price",
"output_shape": [
512
],
"max_abs_error": 1e-10,
"mean_abs_error": 4.5e-11,
"rmse": 5.3e-11,
"max_rel_error": 0.00547208151
},
{
"case": "bsm_call_greeks",
"label": "BSM Call Greeks",
"provider": "ferro_ta",
"provider_kind": "project",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512,
5
],
"max_abs_error": 1.7335858e-05,
"mean_abs_error": 8.64081e-07,
"rmse": 2.444399e-06,
"max_rel_error": 0.002644156321,
"component_names": [
"delta",
"gamma",
"vega",
"theta",
"rho"
]
},
{
"case": "bsm_call_greeks",
"label": "BSM Call Greeks",
"provider": "reference_numpy",
"provider_kind": "reference",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512,
5
],
"max_abs_error": 1.7335858e-05,
"mean_abs_error": 8.64081e-07,
"rmse": 2.444399e-06,
"max_rel_error": 0.002644156321,
"component_names": [
"delta",
"gamma",
"vega",
"theta",
"rho"
]
},
{
"case": "bsm_call_greeks",
"label": "BSM Call Greeks",
"provider": "reference_python_loop",
"provider_kind": "reference",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512,
5
],
"max_abs_error": 0.0,
"mean_abs_error": 0.0,
"rmse": 0.0,
"max_rel_error": 0.0,
"component_names": [
"delta",
"gamma",
"vega",
"theta",
"rho"
]
},
{
"case": "black76_call_price",
"label": "Black-76 Call Price",
"provider": "ferro_ta",
"provider_kind": "project",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512
],
"max_abs_error": 1.6274806e-05,
"mean_abs_error": 5.249347e-06,
"rmse": 6.48942e-06,
"max_rel_error": 0.009546518154
},
{
"case": "black76_call_price",
"label": "Black-76 Call Price",
"provider": "reference_numpy",
"provider_kind": "reference",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512
],
"max_abs_error": 1.6274806e-05,
"mean_abs_error": 5.249347e-06,
"rmse": 6.48942e-06,
"max_rel_error": 0.009546518154
},
{
"case": "black76_call_price",
"label": "Black-76 Call Price",
"provider": "reference_python_loop",
"provider_kind": "reference",
"sample_size": 512,
"accuracy_target": "expected_output",
"output_shape": [
512
],
"max_abs_error": 0.0,
"mean_abs_error": 0.0,
"rmse": 0.0,
"max_rel_error": 0.0
}
]
},
"speed": {
"summary": [
{
"case": "bsm_call_price",
"size": 1000,
"fastest_provider": "ferro_ta",
"fastest_median_ms": 0.0336,
"ranking": [
{
"provider": "ferro_ta",
"median_ms": 0.0336,
"contracts_per_s": 29761904.76
},
{
"provider": "reference_numpy",
"median_ms": 0.0456,
"contracts_per_s": 21929824.56
},
{
"provider": "reference_python_loop",
"median_ms": 0.8157,
"contracts_per_s": 1225940.91
}
]
},
{
"case": "bsm_call_price",
"size": 10000,
"fastest_provider": "ferro_ta",
"fastest_median_ms": 0.2752,
"ranking": [
{
"provider": "ferro_ta",
"median_ms": 0.2752,
"contracts_per_s": 36337209.3
},
{
"provider": "reference_numpy",
"median_ms": 0.3109,
"contracts_per_s": 32164683.18
}
]
},
{
"case": "bsm_call_iv",
"size": 1000,
"fastest_provider": "ferro_ta",
"fastest_median_ms": 0.4121,
"ranking": [
{
"provider": "ferro_ta",
"median_ms": 0.4121,
"contracts_per_s": 2426595.49
},
{
"provider": "reference_numpy",
"median_ms": 1.8036,
"contracts_per_s": 554446.66
},
{
"provider": "reference_python_loop",
"median_ms": 13.4274,
"contracts_per_s": 74474.58
}
]
},
{
"case": "bsm_call_iv",
"size": 10000,
"fastest_provider": "ferro_ta",
"fastest_median_ms": 4.0739,
"ranking": [
{
"provider": "ferro_ta",
"median_ms": 4.0739,
"contracts_per_s": 2454650.34
},
{
"provider": "reference_numpy",
"median_ms": 11.7949,
"contracts_per_s": 847824.06
}
]
},
{
"case": "bsm_call_greeks",
"size": 1000,
"fastest_provider": "ferro_ta",
"fastest_median_ms": 0.0497,
"ranking": [
{
"provider": "ferro_ta",
"median_ms": 0.0497,
"contracts_per_s": 20120724.35
},
{
"provider": "reference_numpy",
"median_ms": 0.0871,
"contracts_per_s": 11481056.26
},
{
"provider": "reference_python_loop",
"median_ms": 1.189,
"contracts_per_s": 841042.89
}
]
},
{
"case": "bsm_call_greeks",
"size": 10000,
"fastest_provider": "reference_numpy",
"fastest_median_ms": 0.572,
"ranking": [
{
"provider": "reference_numpy",
"median_ms": 0.572,
"contracts_per_s": 17482517.48
},
{
"provider": "ferro_ta",
"median_ms": 0.7486,
"contracts_per_s": 13358268.77
}
]
},
{
"case": "black76_call_price",
"size": 1000,
"fastest_provider": "ferro_ta",
"fastest_median_ms": 0.0254,
"ranking": [
{
"provider": "ferro_ta",
"median_ms": 0.0254,
"contracts_per_s": 39370078.74
},
{
"provider": "reference_numpy",
"median_ms": 0.0384,
"contracts_per_s": 26041666.67
},
{
"provider": "reference_python_loop",
"median_ms": 0.7358,
"contracts_per_s": 1359064.96
}
]
},
{
"case": "black76_call_price",
"size": 10000,
"fastest_provider": "ferro_ta",
"fastest_median_ms": 0.2184,
"ranking": [
{
"provider": "ferro_ta",
"median_ms": 0.2184,
"contracts_per_s": 45787545.79
},
{
"provider": "reference_numpy",
"median_ms": 0.2823,
"contracts_per_s": 35423308.54
}
]
}
],
"results": [
{
"case": "bsm_call_price",
"label": "BSM Call Price",
"size": 1000,
"provider": "ferro_ta",
"provider_kind": "project",
"median_ms": 0.0336,
"contracts_per_s": 29761904.76,
"runs_ms": [
0.0337,
0.0404,
0.0336,
0.033,
0.0332,
0.0329,
0.0361
],
"stats": {
"median_ms": 0.0336,
"mean_ms": 0.0347,
"min_ms": 0.0329,
"max_ms": 0.0404,
"stddev_ms": 0.0027,
"cv_pct": 7.901
},
"python_peak_allocation_bytes": 17861,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_price",
"label": "BSM Call Price",
"size": 1000,
"provider": "reference_numpy",
"provider_kind": "reference",
"median_ms": 0.0456,
"contracts_per_s": 21929824.56,
"runs_ms": [
0.0468,
0.0456,
0.0483,
0.045,
0.0548,
0.0452,
0.0449
],
"stats": {
"median_ms": 0.0456,
"mean_ms": 0.0472,
"min_ms": 0.0449,
"max_ms": 0.0548,
"stddev_ms": 0.0036,
"cv_pct": 7.526
},
"python_peak_allocation_bytes": 115672,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_price",
"label": "BSM Call Price",
"size": 1000,
"provider": "reference_python_loop",
"provider_kind": "reference",
"median_ms": 0.8157,
"contracts_per_s": 1225940.91,
"runs_ms": [
0.8154,
0.8078,
0.8184,
0.8265,
0.8157,
0.8155,
0.8267
],
"stats": {
"median_ms": 0.8157,
"mean_ms": 0.818,
"min_ms": 0.8078,
"max_ms": 0.8267,
"stddev_ms": 0.0067,
"cv_pct": 0.82
},
"python_peak_allocation_bytes": 39464,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_price",
"label": "BSM Call Price",
"size": 10000,
"provider": "ferro_ta",
"provider_kind": "project",
"median_ms": 0.2752,
"contracts_per_s": 36337209.3,
"runs_ms": [
0.2632,
0.2812,
0.2666,
0.2666,
0.281,
0.2752,
0.276
],
"stats": {
"median_ms": 0.2752,
"mean_ms": 0.2728,
"min_ms": 0.2632,
"max_ms": 0.2812,
"stddev_ms": 0.0073,
"cv_pct": 2.684
},
"python_peak_allocation_bytes": 17861,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_price",
"label": "BSM Call Price",
"size": 10000,
"provider": "reference_numpy",
"provider_kind": "reference",
"median_ms": 0.3109,
"contracts_per_s": 32164683.18,
"runs_ms": [
0.304,
0.315,
0.3261,
0.309,
0.3218,
0.3109,
0.3084
],
"stats": {
"median_ms": 0.3109,
"mean_ms": 0.3136,
"min_ms": 0.304,
"max_ms": 0.3261,
"stddev_ms": 0.0079,
"cv_pct": 2.515
},
"python_peak_allocation_bytes": 1132672,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_iv",
"label": "BSM Call IV Recovery",
"size": 1000,
"provider": "ferro_ta",
"provider_kind": "project",
"median_ms": 0.4121,
"contracts_per_s": 2426595.49,
"runs_ms": [
0.4309,
0.4121,
0.4068,
0.418,
0.4082,
0.4285,
0.4093
],
"stats": {
"median_ms": 0.4121,
"mean_ms": 0.4163,
"min_ms": 0.4068,
"max_ms": 0.4309,
"stddev_ms": 0.0099,
"cv_pct": 2.378
},
"python_peak_allocation_bytes": 20709,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_iv",
"label": "BSM Call IV Recovery",
"size": 1000,
"provider": "reference_numpy",
"provider_kind": "reference",
"median_ms": 1.8036,
"contracts_per_s": 554446.66,
"runs_ms": [
1.8522,
1.8036,
1.8552,
1.7976,
1.7981,
1.8119,
1.7963
],
"stats": {
"median_ms": 1.8036,
"mean_ms": 1.8164,
"min_ms": 1.7963,
"max_ms": 1.8552,
"stddev_ms": 0.026,
"cv_pct": 1.434
},
"python_peak_allocation_bytes": 149448,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_iv",
"label": "BSM Call IV Recovery",
"size": 1000,
"provider": "reference_python_loop",
"provider_kind": "reference",
"median_ms": 13.4274,
"contracts_per_s": 74474.58,
"runs_ms": [
13.4787,
13.4274,
13.4138,
13.4148,
13.4643,
13.6664,
13.3763
],
"stats": {
"median_ms": 13.4274,
"mean_ms": 13.4631,
"min_ms": 13.3763,
"max_ms": 13.6664,
"stddev_ms": 0.0959,
"cv_pct": 0.712
},
"python_peak_allocation_bytes": 39584,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_iv",
"label": "BSM Call IV Recovery",
"size": 10000,
"provider": "ferro_ta",
"provider_kind": "project",
"median_ms": 4.0739,
"contracts_per_s": 2454650.34,
"runs_ms": [
4.0739,
4.0792,
3.9101,
4.0077,
4.2279,
4.076,
3.9563
],
"stats": {
"median_ms": 4.0739,
"mean_ms": 4.0473,
"min_ms": 3.9101,
"max_ms": 4.2279,
"stddev_ms": 0.1032,
"cv_pct": 2.549
},
"python_peak_allocation_bytes": 82830,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_iv",
"label": "BSM Call IV Recovery",
"size": 10000,
"provider": "reference_numpy",
"provider_kind": "reference",
"median_ms": 11.7949,
"contracts_per_s": 847824.06,
"runs_ms": [
11.713,
11.7014,
11.8743,
11.7949,
11.4815,
11.8635,
11.8188
],
"stats": {
"median_ms": 11.7949,
"mean_ms": 11.7496,
"min_ms": 11.4815,
"max_ms": 11.8743,
"stddev_ms": 0.1359,
"cv_pct": 1.157
},
"python_peak_allocation_bytes": 1463448,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_greeks",
"label": "BSM Call Greeks",
"size": 1000,
"provider": "ferro_ta",
"provider_kind": "project",
"median_ms": 0.0497,
"contracts_per_s": 20120724.35,
"runs_ms": [
0.0558,
0.0497,
0.0486,
0.0503,
0.051,
0.0494,
0.0486
],
"stats": {
"median_ms": 0.0497,
"mean_ms": 0.0505,
"min_ms": 0.0486,
"max_ms": 0.0558,
"stddev_ms": 0.0025,
"cv_pct": 4.902
},
"python_peak_allocation_bytes": 41928,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_greeks",
"label": "BSM Call Greeks",
"size": 1000,
"provider": "reference_numpy",
"provider_kind": "reference",
"median_ms": 0.0871,
"contracts_per_s": 11481056.26,
"runs_ms": [
0.0883,
0.0871,
0.0876,
0.0871,
0.0868,
0.0864,
0.1533
],
"stats": {
"median_ms": 0.0871,
"mean_ms": 0.0967,
"min_ms": 0.0864,
"max_ms": 0.1533,
"stddev_ms": 0.025,
"cv_pct": 25.847
},
"python_peak_allocation_bytes": 138128,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_greeks",
"label": "BSM Call Greeks",
"size": 1000,
"provider": "reference_python_loop",
"provider_kind": "reference",
"median_ms": 1.189,
"contracts_per_s": 841042.89,
"runs_ms": [
1.243,
1.3353,
1.189,
1.1827,
1.1821,
1.1827,
1.2165
],
"stats": {
"median_ms": 1.189,
"mean_ms": 1.2188,
"min_ms": 1.1821,
"max_ms": 1.3353,
"stddev_ms": 0.0563,
"cv_pct": 4.619
},
"python_peak_allocation_bytes": 199408,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_greeks",
"label": "BSM Call Greeks",
"size": 10000,
"provider": "ferro_ta",
"provider_kind": "project",
"median_ms": 0.7486,
"contracts_per_s": 13358268.77,
"runs_ms": [
0.7306,
0.7328,
0.7688,
0.732,
0.7792,
0.7486,
0.8081
],
"stats": {
"median_ms": 0.7486,
"mean_ms": 0.7572,
"min_ms": 0.7306,
"max_ms": 0.8081,
"stddev_ms": 0.0295,
"cv_pct": 3.897
},
"python_peak_allocation_bytes": 401848,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "bsm_call_greeks",
"label": "BSM Call Greeks",
"size": 10000,
"provider": "reference_numpy",
"provider_kind": "reference",
"median_ms": 0.572,
"contracts_per_s": 17482517.48,
"runs_ms": [
0.6104,
0.5705,
0.5715,
0.5817,
0.572,
0.5747,
0.5708
],
"stats": {
"median_ms": 0.572,
"mean_ms": 0.5788,
"min_ms": 0.5705,
"max_ms": 0.6104,
"stddev_ms": 0.0145,
"cv_pct": 2.499
},
"python_peak_allocation_bytes": 1362128,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "black76_call_price",
"label": "Black-76 Call Price",
"size": 1000,
"provider": "ferro_ta",
"provider_kind": "project",
"median_ms": 0.0254,
"contracts_per_s": 39370078.74,
"runs_ms": [
0.0286,
0.0263,
0.0258,
0.0254,
0.0253,
0.0253,
0.0254
],
"stats": {
"median_ms": 0.0254,
"mean_ms": 0.026,
"min_ms": 0.0253,
"max_ms": 0.0286,
"stddev_ms": 0.0012,
"cv_pct": 4.639
},
"python_peak_allocation_bytes": 14717,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "black76_call_price",
"label": "Black-76 Call Price",
"size": 1000,
"provider": "reference_numpy",
"provider_kind": "reference",
"median_ms": 0.0384,
"contracts_per_s": 26041666.67,
"runs_ms": [
0.0395,
0.0385,
0.0387,
0.0383,
0.0384,
0.0382,
0.0383
],
"stats": {
"median_ms": 0.0384,
"mean_ms": 0.0385,
"min_ms": 0.0382,
"max_ms": 0.0395,
"stddev_ms": 0.0005,
"cv_pct": 1.22
},
"python_peak_allocation_bytes": 99448,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "black76_call_price",
"label": "Black-76 Call Price",
"size": 1000,
"provider": "reference_python_loop",
"provider_kind": "reference",
"median_ms": 0.7358,
"contracts_per_s": 1359064.96,
"runs_ms": [
0.7271,
0.7251,
0.845,
0.7809,
0.7345,
0.7358,
0.7418
],
"stats": {
"median_ms": 0.7358,
"mean_ms": 0.7558,
"min_ms": 0.7251,
"max_ms": 0.845,
"stddev_ms": 0.0436,
"cv_pct": 5.769
},
"python_peak_allocation_bytes": 39416,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "black76_call_price",
"label": "Black-76 Call Price",
"size": 10000,
"provider": "ferro_ta",
"provider_kind": "project",
"median_ms": 0.2184,
"contracts_per_s": 45787545.79,
"runs_ms": [
0.2286,
0.2183,
0.219,
0.2184,
0.2223,
0.218,
0.2176
],
"stats": {
"median_ms": 0.2184,
"mean_ms": 0.2203,
"min_ms": 0.2176,
"max_ms": 0.2286,
"stddev_ms": 0.004,
"cv_pct": 1.8
},
"python_peak_allocation_bytes": 14717,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
},
{
"case": "black76_call_price",
"label": "Black-76 Call Price",
"size": 10000,
"provider": "reference_numpy",
"provider_kind": "reference",
"median_ms": 0.2823,
"contracts_per_s": 35423308.54,
"runs_ms": [
0.2823,
0.276,
0.275,
0.3064,
0.3196,
0.2835,
0.2734
],
"stats": {
"median_ms": 0.2823,
"mean_ms": 0.288,
"min_ms": 0.2734,
"max_ms": 0.3196,
"stddev_ms": 0.0179,
"cv_pct": 6.201
},
"python_peak_allocation_bytes": 972448,
"input_layout": {
"dtype": "float64",
"contiguous": true
}
}
]
}
}