Ariel Belhamou
arielb57
Paris. Small, exact finance tools in Rust, TypeScript and Python.
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.
-
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.
-
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.
-
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.
-
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.
-
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.
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.
Markets and microstructure 15
Order books, auctions, filings and backtests, checked against brute force where one exists.
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.
Nothing matches those filters.
Activity
400 contributions in 2026, across 48 repositories. What GitHub can attribute to the account, nothing more.
Contributions, last 12 months
Languages by volume
By year
| Year | Commits | PRs | Issues | Total |
|---|---|---|---|---|
| 2026 | 351 | 0 | 1 | 400 |
| 2025 | 0 | 0 | 0 | 0 |
| 2024 | 0 | 0 | 0 | 0 |
| 2023 | 0 | 0 | 0 | 0 |
| 2022 | 0 | 0 | 0 | 1 |
Most recently pushed
| Repository | Language | Commits | Stars | Pushed |
|---|---|---|---|---|
| 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.