OPEN SOURCE · UPDATED OCT 2026
Open source
Pull requests and commits I've written for other people's projects, with what each one changes. Merged work is grouped by project.
Merged
Each of these was reviewed and merged by the project's maintainers. Where I could confirm that a change shipped in a release, the release is listed.
NautilusTrader · Rust and Python trading engine
- #5432 MERGED · OCT 2026
The Python statistics getters now return their results in name order, so tearsheet rows no longer move between runs of the same backtest. - #5407 MERGED · OCT 2026
Registering an instrument again in the Rust backtest engine no longer replaces its matching engine: an identical definition is a no-op, and a changed one is rejected before any state changes. - #4519 MERGED · JUL 2026
Both Interactive Brokers adapters now load every configured instrument at startup, fail when one cannot be resolved, and stay retryable after a failed start. - #4354 MERGED · JUL 2026
Added up and down capture ratios as Rust-core statistics on the benchmark-aware path from #4251, following empyrical's convention. - #4251 MERGED · JUN 2026
Added beta, Jensen's alpha, information ratio, tracking error, and Treynor ratio to the Rust core with Python bindings, following a design agreed with the maintainer in an issue first. - #4174 MERGED · JUN 2026
MaxDrawdown, CAGR, and CalmarRatio now return None from the PnL and position methods instead of panicking when the Rust analyzer runs every registered statistic. - #4141 MERGED · MAY 2026
Intraday returns are now compounded instead of summed when grouped into daily bins, which corrects Sharpe, Sortino, volatility, and CAGR for any backtest with sub-daily data. - #4099 MERGED · MAY 2026
The Interactive Brokers historical client'srequest_instrumentsnow returns only the instruments asked for in that call, not every instrument cached by earlier calls.
MLX · Array framework for Apple silicon
- #4748 MERGED · OCT 2026
My first MLX pull request:vmapoftri_invignored the triangular flags and silently returned the full inverse, which also affectedsolve_triangularandcholesky_inv. The C++ fix comes with a regression test.
JAX · Composable transformations of Python and NumPy programs
- #41960 MERGED · OCT 2026
Thebinom,nbinom,geomandbernoullilog-pmfs injax.scipy.statsnow return-infat a non-integerk, where they used to return a finite value. The change comes with tests for each distribution.
QuantLib-SWIG · Python bindings for QuantLib
- #928 MERGED · SEP 2026 · RELEASED IN 1.44
Exported variance swaps with their replicating and Monte Carlo pricing engines to Python, with tests ported from the C++ test suite.
Darts · Time-series forecasting in Python
- #3122 MERGED · JUL 2026 · RELEASED IN 0.47.0
Added azero_divisionoption to nine percentage and range-based metrics, so a zero denominator gives a defined value with a warning, or an error if asked, instead of always failing.
ib_async · Python client for the Interactive Brokers API
Both changes reached ib_async as commits under my name that the maintainer applied, so GitHub shows my pull requests as closed rather than merged.
- 01da4f0 COMMIT · NEXT BRANCH · APR 2026
News ticks now carry the contract they came from, so headlines from several streaming subscriptions can be matched to their symbol. From my pull request #214. - e6414ea COMMIT · 3.0 LINE · OCT 2026
Fixed theTicker.newsexample in the v3 migration guide, which used a field that news ticks do not have. From my pull request #233.
My own repositories
The larger ones have their own pages: trading-algo, kite-algo, and worldmonitor-mcp. Seven smaller public repositories:
- stockbench-inspect
A port of the StockBench benchmark by Chen et al. (arXiv 2510.02209) to the Inspect evaluation framework, in which a model manages $100,000 across 20 Dow stocks over 83 trading days from its daily prices, news and positions. It keeps the original prompts, includes parity scripts that run the original code and the port on the same scripted replies and compare them, and adds scores that show when a weak model looks safe only because its replies were unusable. - label-lattice
A Python library with a command-line tool, and a simulation, for sharing costly AI work between people with different permissions. Under its scheme, Label-Lattice memoization with Lazy-Meet Factoring, the work on each file is done once, a combined result is released only to someone allowed to see every file in it, and revoked access takes effect. The README says plainly that the AI parts are stand-ins and that the company-scale results come from a simulation of 10,000 people. - uni-cli
A read-only command line for Canvas courses that shows what is due, grades, announcements, and what changed. It only sends GET requests to your own Canvas site. - canvas-chatgpt-plugin
A read-only Canvas companion for ChatGPT, built as an MCP server for courses, assignments, announcements, grades, and files. It is a developer preview. - reflexive-options
Research code and a paper on a model in which dealer option positions feed back into volatility, with a pre-analysis plan for testing it on market data. The README says plainly what the model does not show. - account-fallback
A small macOS wrapper that switches an AI coding CLI to a backup account when usage runs out and back to the main account when it resets, with tokens kept in the Keychain. - lab launcher
A launcher that runs an AI coding CLI with a smaller context cap, a cheaper default model, capped tool output, a status line and a usage scanner, without editing the CLI's own settings. The README explains the reasoning behind each setting and ships no benchmark numbers.
mahimn · open source · checked against github oct 26, 2026 · dates in toronto time