arielb57

Ariel Belhamou

arielb57

Paris. Small, exact finance tools in Rust, TypeScript and Python.

48public repositories
351commits across them
2022on GitHub since
4languages

Rust 17TypeScript 16Python 12JavaScript 2primary language per repository

Work

48 public repositories. Every number here is read from the GitHub API when this page is built. 45 of them came out of the forge pipeline and are marked as such.

Start here

If you only have a few minutes, these five are the best sample of how I work.

  1. netmin

    Settles a web of payment obligations in the fewest transfers, and either proves the count is minimal or prints the gap. On the six-party example it needs 3 transfers where the usual largest-pays-largest method needs 4.

    Start with tests/oracles.py: a brute-force enumeration of every way to split the parties, which the fast solver has to agree with on hundreds of random cases. Exact up to 24 parties in 151 ms on average, pure Python, no dependencies.

    Python 9 commits pushed 1mo ago built by forge

  2. sumtree-audit

    A Merkle sum-tree proof of liabilities, the thing an exchange publishes to show it holds what it owes.

    Read the attack before the proof. It ships with the one that breaks the naive construction, and a proof system you have not seen fail is not one to trust yet.

    Rust 8 commits pushed 1mo ago built by forge

  3. auctionclear

    Uncrosses a call auction under each venue’s tie-break rules.

    The reference implementation in the tests is deliberately slow and deliberately obvious: it tries every price. The fast one has to match it.

    Rust 7 commits pushed 1mo ago built by forge

  4. panfpe

    NIST FF1 and FF3-1 format-preserving encryption for card tokens, in TypeScript with no dependencies.

    The official test vectors are in the test suite. Crypto you cannot check against a published answer is crypto you have not tested.

    TypeScript 6 commits pushed 1mo ago built by forge

  5. peekahead

    Finds look-ahead bias in backtest features without reading the code.

    It names the leaking column, how many rows ahead it reads, and how much of the backtest’s Sharpe was the leak. Finding the bug is the easy half; pricing it is what makes someone fix it.

    Python 7 commits pushed 1mo ago built by forge

Everything public

Grouped by what each one refuses to get wrong. Filters combine, and nothing is hidden by default.

Money, to the cent 14

Exact arithmetic where a rounding error is a bug with a dollar sign on it.

centdrift Built by forge Subscription proration in exact integer arithmetic where splitting a period never moves a cent TypeScript 6 commits 1mo ago bigintbillingexact-arithmeticfintech centflip Built by forge Find the exact inputs where f64 interest or FX code rounds to the wrong cent, with proofs Rust 6 commits 1mo ago continued-fractionsexact-arithmeticfixed-incomefloating-point en16931-totals Built by forge Check e-invoice totals against the EN 16931 rules and find cent-exact fixes when rounding breaks them TypeScript 6 commits 1mo ago compliancee-invoicingen16931fintech tiercliff Built by forge Find every usage level where a tiered price table charges less for more, in exact arithmetic Rust 7 commits 1mo ago billingexact-arithmeticfintechpricing stubfrac Built by forge Day-count fractions with irregular stubs in exact rationals, plus a map of where conventions disagree Rust 6 commits 1mo ago bondsday-countexact-arithmeticfixed-income tipsratio Built by forge Exact TIPS index ratios, coupons, accrued interest and deflation floors in rational arithmetic TypeScript 7 commits 1mo ago cpiexact-arithmeticfixed-incomeinflation lotsnap Built by forge Turn a desired crypto order into the best one that passes every exchange filter, in exact decimals TypeScript 6 commits 1mo ago bigintcrypto-exchangedecimal-arithmeticorder-management achclock Built by forge Compute ACH settlement dates, same-day windows and return deadlines using the real Fed calendar TypeScript 6 commits 1mo ago achbankingbusiness-daysfederal-reserve liqbracket Built by forge Exact liquidation prices for perpetual futures under tiered margin, including hedge mode Python 7 commits 1mo ago derivativesexact-arithmeticliquidationmargin streamfall Built by forge Exact second-by-second insolvency cascades for networks of continuous money streams, with no ticking TypeScript 6 commits 1mo ago bigintdefidiscrete-event-simulationevent-simulation lmsr-exact Built by forge An LMSR prediction-market maker in integer arithmetic where rounding can never be turned into profit TypeScript 6 commits 1mo ago arbitragefixed-pointinterval-arithmeticlmsr netmin Built by forge Settle a web of payment obligations in the fewest transfers, with a proof of optimality or gap Python 9 commits 1mo ago combinatorial-optimizationdynamic-programmingfinancenetting sca-exempt Built by forge A PSD2 Strong Customer Authentication exemption engine that says when SCA can be skipped, and why. TypeScript 8 commits 1mo ago compliancefintechopen-bankingpsd2 digitblind Built by forge Exact rates of the typos ISIN, CUSIP, SEDOL, LEI, IBAN and ABA check digits fail to catch TypeScript 8 commits 1mo ago check-digitcusiperror-detectionfintech

Markets and microstructure 15

Order books, auctions, filings and backtests, checked against brute force where one exists.

itchbook Built by forge Zero-copy NASDAQ ITCH 5.0 decoder and order book rebuilder, checked against a model book Rust 6 commits 1mo ago binary-protocoldifferential-testinghftitch matchlaw Built by forge An executable spec for continuous matching engines: replay your fills, get the first rule broken Rust 6 commits 1mo ago differential-testingmarket-microstructurematching-engineorder-book auctionclear Built by forge Call-auction uncrossing with each venue's tie-break rules, checked against brute force over every price Rust 7 commits 1mo ago call-auctiondifferential-testingexchange-rulesmarket-microstructure fixgap Built by forge Check FIX session logs against the sequence-recovery rules and name the exact rule broken TypeScript 6 commits 1mo ago conformance-testingfinancial-messagingfix-protocolmarket-infrastructure queuebound Built by forge Tight best- and worst-case fill bounds for a passive order backtested on L2 data Python 6 commits 1mo ago backtestinglimit-order-bookmarket-microstructureorder-book tickpack Built by forge Lossless tick-data codec that finds the price grid inside float columns and beats Gorilla XOR Rust 6 commits 1mo ago compressionfloat-encodinggorillagorilla-compression markout-fdr Built by forge Find which clients send toxic flow from fill markouts, with honest error rates for overlapping horizons Python 6 commits 1mo ago bootstrapfalse-discovery-ratefdrmarket-microstructure volarb Built by forge Find static arbitrage in option quote grids, and the fewest quotes to drop to remove it Python 6 commits 1mo ago arbitragederivativesdynamic-programmingexact-arithmetic ddbreach Built by forge Decide whether a prop-firm drawdown rule was certainly, possibly, or never breached from OHLC bars Rust 6 commits 1mo ago backtestingdrawdownformal-semanticsohlc warmupbound Built by forge How many bars an EMA, RSI or ATR needs before its seed can't change a tick, proven Rust 6 commits 1mo ago backtestingindicatorsnumerical-analysisquant-finance shortswing Built by forge Largest Section 16(b) short-swing profit from insider trades, with a proof that it is optimal Rust 6 commits 1mo ago complianceinsider-tradingmin-cost-flowoptimization thirteenf-delta Built by forge Real position changes from SEC 13F filings, not artefacts of amendments, units or splits TypeScript 7 commits 1mo ago 13fdata-qualityedgarfinance irroots Built by forge Find every IRR of a cash flow, or prove there is none, using exact root isolation instead of Newton TypeScript 7 commits 1mo ago capital-budgetingcorporate-financeexact-arithmeticfinance cla-exact Built by forge Markowitz Critical Line Algorithm in exact rationals: the whole efficient frontier, certified Python 6 commits 1mo ago critical-line-algorithmefficient-frontierexact-arithmetickkt exactcoverage Built by forge VaR backtests (Kupiec, Christoffersen, Basel traffic light) with exact finite-sample p-values Python 6 commits 1mo ago backtestingbaselexact-inferencekupiec

Backtests and models that lie 5

Tools that measure how much of a result was the method and how much was the leak.

Security, privacy, forensics 7

Proofs shipped with the attack that breaks them, and audits of what a program can reach.

Builds and static analysis 4

What a build would gain if one thing were faster, proven rather than profiled.

Bigger things 2

The pipeline that produced the rest, and this site. Built directly, not generated.

Everything else 1

Public repositories that fit none of the groups above. Nothing is hidden.

Activity

400 contributions in 2026, across 48 repositories. What GitHub can attribute to the account, nothing more.

400
contributions in 2026
5
days, longest streak
0
stars received
8
days with activity

Contributions, last 12 months

NovDecJanFebMarAprMayJunJulAugSepOctNovMonWedFri0 contributions on 2025-10-280 contributions on 2025-10-290 contributions on 2025-10-300 contributions on 2025-10-310 contributions on 2025-11-010 contributions on 2025-11-020 contributions on 2025-11-030 contributions on 2025-11-040 contributions on 2025-11-050 contributions on 2025-11-060 contributions on 2025-11-070 contributions on 2025-11-080 contributions on 2025-11-090 contributions on 2025-11-100 contributions on 2025-11-110 contributions on 2025-11-120 contributions on 2025-11-130 contributions on 2025-11-140 contributions on 2025-11-150 contributions on 2025-11-160 contributions on 2025-11-170 contributions on 2025-11-180 contributions on 2025-11-190 contributions on 2025-11-200 contributions on 2025-11-210 contributions on 2025-11-220 contributions on 2025-11-230 contributions on 2025-11-240 contributions on 2025-11-250 contributions on 2025-11-260 contributions on 2025-11-270 contributions on 2025-11-280 contributions on 2025-11-290 contributions on 2025-11-300 contributions on 2025-12-010 contributions on 2025-12-020 contributions on 2025-12-030 contributions on 2025-12-040 contributions on 2025-12-050 contributions on 2025-12-060 contributions on 2025-12-070 contributions on 2025-12-080 contributions on 2025-12-090 contributions on 2025-12-100 contributions on 2025-12-110 contributions on 2025-12-120 contributions on 2025-12-130 contributions on 2025-12-140 contributions on 2025-12-150 contributions on 2025-12-160 contributions on 2025-12-170 contributions on 2025-12-180 contributions on 2025-12-190 contributions on 2025-12-200 contributions on 2025-12-210 contributions on 2025-12-220 contributions on 2025-12-230 contributions on 2025-12-240 contributions on 2025-12-250 contributions on 2025-12-260 contributions on 2025-12-270 contributions on 2025-12-280 contributions on 2025-12-290 contributions on 2025-12-300 contributions on 2025-12-310 contributions on 2026-01-010 contributions on 2026-01-020 contributions on 2026-01-030 contributions on 2026-01-040 contributions on 2026-01-050 contributions on 2026-01-060 contributions on 2026-01-070 contributions on 2026-01-080 contributions on 2026-01-090 contributions on 2026-01-100 contributions on 2026-01-110 contributions on 2026-01-120 contributions on 2026-01-130 contributions on 2026-01-140 contributions on 2026-01-150 contributions on 2026-01-160 contributions on 2026-01-170 contributions on 2026-01-180 contributions on 2026-01-190 contributions on 2026-01-200 contributions on 2026-01-210 contributions on 2026-01-220 contributions on 2026-01-230 contributions on 2026-01-240 contributions on 2026-01-250 contributions on 2026-01-260 contributions on 2026-01-270 contributions on 2026-01-280 contributions on 2026-01-290 contributions on 2026-01-300 contributions on 2026-01-310 contributions on 2026-02-010 contributions on 2026-02-020 contributions on 2026-02-030 contributions on 2026-02-040 contributions on 2026-02-050 contributions on 2026-02-060 contributions on 2026-02-070 contributions on 2026-02-080 contributions on 2026-02-090 contributions on 2026-02-100 contributions on 2026-02-110 contributions on 2026-02-120 contributions on 2026-02-130 contributions on 2026-02-140 contributions on 2026-02-150 contributions on 2026-02-160 contributions on 2026-02-170 contributions on 2026-02-180 contributions on 2026-02-190 contributions on 2026-02-200 contributions on 2026-02-210 contributions on 2026-02-220 contributions on 2026-02-230 contributions on 2026-02-240 contributions on 2026-02-250 contributions on 2026-02-260 contributions on 2026-02-270 contributions on 2026-02-280 contributions on 2026-03-010 contributions on 2026-03-020 contributions on 2026-03-030 contributions on 2026-03-040 contributions on 2026-03-050 contributions on 2026-03-060 contributions on 2026-03-070 contributions on 2026-03-080 contributions on 2026-03-090 contributions on 2026-03-100 contributions on 2026-03-110 contributions on 2026-03-120 contributions on 2026-03-130 contributions on 2026-03-140 contributions on 2026-03-150 contributions on 2026-03-160 contributions on 2026-03-170 contributions on 2026-03-180 contributions on 2026-03-190 contributions on 2026-03-200 contributions on 2026-03-210 contributions on 2026-03-220 contributions on 2026-03-230 contributions on 2026-03-240 contributions on 2026-03-250 contributions on 2026-03-260 contributions on 2026-03-270 contributions on 2026-03-280 contributions on 2026-03-290 contributions on 2026-03-300 contributions on 2026-03-310 contributions on 2026-04-010 contributions on 2026-04-020 contributions on 2026-04-030 contributions on 2026-04-040 contributions on 2026-04-050 contributions on 2026-04-060 contributions on 2026-04-070 contributions on 2026-04-080 contributions on 2026-04-090 contributions on 2026-04-100 contributions on 2026-04-110 contributions on 2026-04-120 contributions on 2026-04-130 contributions on 2026-04-140 contributions on 2026-04-150 contributions on 2026-04-160 contributions on 2026-04-170 contributions on 2026-04-180 contributions on 2026-04-190 contributions on 2026-04-200 contributions on 2026-04-210 contributions on 2026-04-220 contributions on 2026-04-230 contributions on 2026-04-240 contributions on 2026-04-250 contributions on 2026-04-260 contributions on 2026-04-270 contributions on 2026-04-280 contributions on 2026-04-290 contributions on 2026-04-300 contributions on 2026-05-010 contributions on 2026-05-020 contributions on 2026-05-030 contributions on 2026-05-040 contributions on 2026-05-050 contributions on 2026-05-060 contributions on 2026-05-070 contributions on 2026-05-080 contributions on 2026-05-090 contributions on 2026-05-100 contributions on 2026-05-110 contributions on 2026-05-120 contributions on 2026-05-130 contributions on 2026-05-140 contributions on 2026-05-150 contributions on 2026-05-160 contributions on 2026-05-170 contributions on 2026-05-180 contributions on 2026-05-190 contributions on 2026-05-200 contributions on 2026-05-210 contributions on 2026-05-220 contributions on 2026-05-230 contributions on 2026-05-240 contributions on 2026-05-250 contributions on 2026-05-260 contributions on 2026-05-270 contributions on 2026-05-280 contributions on 2026-05-290 contributions on 2026-05-300 contributions on 2026-05-310 contributions on 2026-06-010 contributions on 2026-06-020 contributions on 2026-06-030 contributions on 2026-06-040 contributions on 2026-06-050 contributions on 2026-06-060 contributions on 2026-06-070 contributions on 2026-06-080 contributions on 2026-06-090 contributions on 2026-06-100 contributions on 2026-06-110 contributions on 2026-06-120 contributions on 2026-06-130 contributions on 2026-06-140 contributions on 2026-06-150 contributions on 2026-06-160 contributions on 2026-06-170 contributions on 2026-06-180 contributions on 2026-06-190 contributions on 2026-06-200 contributions on 2026-06-210 contributions on 2026-06-220 contributions on 2026-06-230 contributions on 2026-06-240 contributions on 2026-06-250 contributions on 2026-06-260 contributions on 2026-06-270 contributions on 2026-06-280 contributions on 2026-06-290 contributions on 2026-06-300 contributions on 2026-07-010 contributions on 2026-07-020 contributions on 2026-07-030 contributions on 2026-07-040 contributions on 2026-07-050 contributions on 2026-07-060 contributions on 2026-07-070 contributions on 2026-07-080 contributions on 2026-07-090 contributions on 2026-07-100 contributions on 2026-07-110 contributions on 2026-07-120 contributions on 2026-07-130 contributions on 2026-07-140 contributions on 2026-07-150 contributions on 2026-07-160 contributions on 2026-07-170 contributions on 2026-07-180 contributions on 2026-07-190 contributions on 2026-07-200 contributions on 2026-07-210 contributions on 2026-07-220 contributions on 2026-07-230 contributions on 2026-07-241 contribution on 2026-07-250 contributions on 2026-07-260 contributions on 2026-07-270 contributions on 2026-07-280 contributions on 2026-07-290 contributions on 2026-07-300 contributions on 2026-07-310 contributions on 2026-08-010 contributions on 2026-08-020 contributions on 2026-08-030 contributions on 2026-08-040 contributions on 2026-08-050 contributions on 2026-08-060 contributions on 2026-08-070 contributions on 2026-08-080 contributions on 2026-08-090 contributions on 2026-08-100 contributions on 2026-08-110 contributions on 2026-08-120 contributions on 2026-08-130 contributions on 2026-08-140 contributions on 2026-08-150 contributions on 2026-08-160 contributions on 2026-08-170 contributions on 2026-08-180 contributions on 2026-08-190 contributions on 2026-08-200 contributions on 2026-08-210 contributions on 2026-08-220 contributions on 2026-08-230 contributions on 2026-08-240 contributions on 2026-08-250 contributions on 2026-08-260 contributions on 2026-08-270 contributions on 2026-08-280 contributions on 2026-08-290 contributions on 2026-08-300 contributions on 2026-08-310 contributions on 2026-09-010 contributions on 2026-09-020 contributions on 2026-09-030 contributions on 2026-09-040 contributions on 2026-09-050 contributions on 2026-09-060 contributions on 2026-09-070 contributions on 2026-09-080 contributions on 2026-09-090 contributions on 2026-09-100 contributions on 2026-09-110 contributions on 2026-09-124 contributions on 2026-09-13144 contributions on 2026-09-1473 contributions on 2026-09-1549 contributions on 2026-09-16122 contributions on 2026-09-170 contributions on 2026-09-180 contributions on 2026-09-190 contributions on 2026-09-200 contributions on 2026-09-217 contributions on 2026-09-220 contributions on 2026-09-230 contributions on 2026-09-240 contributions on 2026-09-250 contributions on 2026-09-260 contributions on 2026-09-270 contributions on 2026-09-280 contributions on 2026-09-290 contributions on 2026-09-300 contributions on 2026-10-010 contributions on 2026-10-020 contributions on 2026-10-030 contributions on 2026-10-040 contributions on 2026-10-050 contributions on 2026-10-060 contributions on 2026-10-070 contributions on 2026-10-080 contributions on 2026-10-090 contributions on 2026-10-100 contributions on 2026-10-110 contributions on 2026-10-120 contributions on 2026-10-130 contributions on 2026-10-140 contributions on 2026-10-150 contributions on 2026-10-160 contributions on 2026-10-170 contributions on 2026-10-180 contributions on 2026-10-190 contributions on 2026-10-200 contributions on 2026-10-210 contributions on 2026-10-220 contributions on 2026-10-230 contributions on 2026-10-240 contributions on 2026-10-250 contributions on 2026-10-260 contributions on 2026-10-270 contributions on 2026-10-280 contributions on 2026-10-290 contributions on 2026-10-300 contributions on 2026-10-310 contributions on 2026-11-010 contributions on 2026-11-02
Less More

Languages by volume

Rust 42.3%
TypeScript 33.9%
Python 18.5%
JavaScript 4.7%
CSS 0.5%
Shell 0.1%

By year

YearCommitsPRsIssuesTotal
202635101400
20250000
20240000
20230000
20220001

Most recently pushed

RepositoryLanguageCommitsStarsPushed
arielb57.github.io JavaScript 7 0 1mo ago
arielb57 — 4 0 1mo ago
sca-exempt TypeScript 8 0 1mo ago
digitblind TypeScript 8 0 1mo ago
sumtree-audit Rust 8 0 1mo ago
irroots TypeScript 7 0 1mo ago
auctionclear Rust 7 0 1mo ago
thirteenf-delta TypeScript 7 0 1mo ago
manytrials Python 6 0 1mo ago
tipsratio TypeScript 7 0 1mo ago
peekahead Python 7 0 1mo ago
netmin Python 9 0 1mo ago

About

I am a self-taught developer in Paris. Most of this year went into two things: the backend of VYVE, a marketplace, and forge, a pipeline that reads the week's engineering news and turns it into small tools that actually get finished. Nearly everything public on this account came out of the second one. Most of it is about money or markets, because that is where a cent off is a bug and “close enough” does not survive an audit.

The habit I care about most is that a tool should say what it knows. When the exact answer is reachable, I get it, in integers or rationals rather than floats, and the README says so. When it is not, the best answer goes on the screen next to a bound that is actually proven, so the worst case is in the output rather than in someone's head. When the real finding is that the usual implementation is wrong, the counterexample ships with the fix. I write the Limitations section of each README first. Someone will find them anyway.

One example of why I bother. The README of netmin used to say the exact solver took 0.1 s at 24 parties. My benchmark stopped at 20. The number for 24 had never been measured; I had extrapolated it. When I finally ran it, it was 151 ms on average and 240 ms at worst. The correction is in the commit history and the README now says what the benchmark prints. That is the rule I try to hold everything to: if there is a number, there is a script that produces it. It is also why every figure on this page is read from the GitHub API when the page is built, not typed in.

VYVE is private, so it is not in the list above. It is Postgres with row-level security everywhere, an escrow payment flow, and the legal and tax structure that has to match it: 343 commits and 273 test files since May 2026. The hard part was not the code. It was deciding who is allowed to see what, and then proving the database enforces it rather than hoping the application layer does.

forge reads seven engineering feeds every morning, ranks what it finds by how many sources agree, turns the survivors into specifications, builds them, and then does its best to reject its own output. The quality gate counts assertions and checks how many of them compare a literal to itself; too many and the build fails. It never publishes on its own. Every run ends in a review queue where I read the result. The repositories it produced carry the forge-built topic, and the cards above say so.

How this was made. Everything here was written with AI assistance. I would rather say that than have someone work it out. The tool repositories came out of forge from a specification and were reviewed by me before publication; forge itself, this site and VYVE I built directly, deciding and correcting as I went. Either way I read all of it before it goes public. If I cannot explain a repository, it should not be on here.

I apply to university next year. The time until then goes on things that are worth showing rather than things that are easy to count. Every number on this page is read from the GitHub API once a day; if one looks small, it is because it is small.