Skip to content
View tschm's full-sized avatar
🦧
Be sure to wear some flowers in your hair
🦧
Be sure to wear some flowers in your hair

Highlights

  • Pro

Organizations

@cvxgrp @Jebel-Quant

Block or report tschm

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
tschm/README.md

Thomas Schmelzer

I build optimization algorithms and research tooling for quantitative finance, from Palo Alto and Abu Dhabi.

I left continental Europe in 2004 to become a Rhodes Scholar at Balliol College, Oxford. I wrote my DPhil — Oxford's PhD — on fast matrix functions, supervised by Nick Trefethen. Shadows of this past include

  • nncg — non-negative conjugate gradients: bound-constrained SPD quadratics solved by a guarded active-set loop, the reference implementation for Schmelzer & Stoll
  • mean_variance_solvers — two companion working papers on fast matrix-free and direct solvers for long-only mean-variance portfolios

In 2007 I jumped head first into quantitative hedge funds, where I became interested in higher-dimensional convex problems

  • linalg — the linear algebra underneath portfolio optimization
  • cvxcla — the critical line algorithm: exact efficient frontiers rather than sampled ones
  • pyhrp — cluster-based allocation: hierarchical risk parity, Schur complement risk parity, 1/N

I have released utilities such as

  • jquantstats — time series and portfolio analytics
  • basanos — a first hurdle for expected returns

Entire strategies are discussed in

  • cs — the 10-line CTA: a trend-following strategy in ten lines of code, and what convex programming reveals about its Sharpe ratio, kurtosis and trading costs. Written for a talk at Credit Suisse, on a challenge from a young CEO. The engine underneath it is TinyCTA

In 2023 I was a visiting scholar at Stanford, working with Stephen Boyd. That is where the cvxgrp work comes from: cvxcla above, and alongside it simulator for backtests small enough to read, cvxrisk for risk models you can compose, and cvxball for the smallest enclosing sphere.

In 2025 I launched — together with HE Omar Saif Ghobash — Jebel Quant Research. Jebel Quant Research offers help with data, strategies and trading. We also continue the tradition of publishing open source software. We have released

  • rhiza — one template repository that owns the boring parts of a Python project: CI workflows, the Makefile, linting, typing, test and coverage gates, and the docs build. A repo pins a template release and syncs; every project then shares one configuration instead of drifting into its own.
  • rhiza-claude — the same workflow as slash commands for Claude Code: /init to adopt rhiza, /update to move to a newer template release, /quality to score a repo against the gates, /release to cut a version.

The point of both is leverage. Configuration is written once, reviewed once, and then inherited — so the time goes into the research and not into the plumbing.

I have had exposure to ADIA's Team Q. That experience became my manifesto:

A Technology Vision for Quantitative Trading — fourteen pages arguing that the industry's problems are organisational rather than technical. The handover model, in which research is written in Python and reimplemented in C++, produces diffuse accountability, dozens of reinvented wheels, and reconciliation as an organising principle; what replaces it is a single environment for research and production, a checkerboard team instead of an upstream and a downstream one, and quality at every stage instead of inspection at the end. Before any of the quant work I trained as a mechanic at AUDI, so the factory analogies come from the shop floor rather than a business book: the industry adopted Ford's assembly line, which manufacturing itself had largely abandoned by the 1980s, when Toyota's line is the better model and a professional kitchen — calm, deliberate, every station visible to every other — is better still. A chef buys the oven and does not cook from a packet. Knowing which is which is the whole of build-or-buy.

I am a firm believer in good and detailed documentation

  • rhiza-education — training for and with rhiza
  • An introduction to rhiza-claude — a paper on what the plugin is for, before what it contains: the two-repository boundary a sync respects, what "rhiza-managed" means on disk, the order the commands are meant to be run in, and why a tool that sells determinism keeps half of itself in prose

A good part of my work lands in other people's repositories — nearly 400 merged pull requests outside my own projects. The ones I keep returning to

  • chebpy — a Python implementation of Chebfun, and so the most direct continuation of the DPhil I could have hoped for
  • loman — computation graphs for quantitative research and trading
  • investment-funnel — an open platform for developing and backtesting investment strategies
  • pycharting — high-performance charting for financial data

And smaller fixes, usually filed where a tool got in my way: scipy, cvxpy, marimo, PyPortfolioOpt, Clarabel, Kaleido, finmarketpy, connector-x, ISLP labs.

I am currently one of the most active GitHub users in the UAE:

committers.top badge

Though that is a measure of volume, and volume was never the point. Or maybe it was?

A more useful measure is what is still open. The table is regenerated nightly, so a new project joins it on its first release without anyone editing this file; the badges within it are live, and each one links to the thing behind it. The state of the work is as visible to you as it is to me.

quality coverage downloads issues pull requests branches releases latest last commit
rhiza-claude code quality open issues open pull requests 2 8 latest release last commit
shrinkage open issues open pull requests 1 1 latest release last commit
proximal open issues open pull requests 2 43 latest release last commit
jquantstats code quality 100% downloads open issues open pull requests 2 68 latest release last commit
basanos code quality 100% downloads open issues open pull requests 3 21 latest release last commit
pyhrp code quality 100% downloads open issues open pull requests 1 140 latest release last commit
cvxcla 100% downloads open issues open pull requests 6 39 latest release last commit
cvxrisk 100% downloads open issues open pull requests 1 35 latest release last commit
linalg code quality 100% downloads open issues open pull requests 1 19 latest release last commit
nncg 100% open issues open pull requests 1 10 latest release last commit
rhiza-hooks code quality 100% open issues open pull requests 1 18 latest release last commit
cs code quality open issues open pull requests 3 13 latest release last commit
TinyCTA code quality 100% downloads open issues open pull requests 2 77 latest release last commit
jsharpe code quality 100% downloads open issues open pull requests 2 17 latest release last commit
rhiza code quality open issues open pull requests 3 106 latest release last commit
mean_variance_solvers open issues open pull requests 3 2 latest release last commit
rhiza-education open issues open pull requests 2 1 latest release last commit

An issue that has been open for a year is not a backlog item, it is a decision that was never made.

Pinned Loading

  1. cs cs Public

    The 10-line CTA — a trend-following strategy in ten lines of code, and what convex programming reveals about its Sharpe ratio, kurtosis and trading costs

    Python 45 23

  2. cvxgrp/cvxcla cvxgrp/cvxcla Public

    critical line algorithm for efficient frontier

    Python 22 6

  3. pyhrp pyhrp Public

    Cluster-based portfolio allocation: HRP, Schur risk parity, and 1/N

    Python 55 23

  4. Jebel-Quant/jquantstats Jebel-Quant/jquantstats Public

    Time series and portfolio analytics for quantitative finance.

    Python 42 9

  5. Jebel-Quant/rhiza Jebel-Quant/rhiza Public template

    A collection of reusable configuration templates for modern Python projects

    Python 13 5

  6. Jebel-Quant/rhiza-claude Jebel-Quant/rhiza-claude Public template

    Claude Code plugin marketplace for the rhiza plugin — slash commands for working in rhiza-managed repos.

    Python 1