The Audits Only Got Run Because I Had to Publish
Suneet Malhotra
May 17, 2026
It is Sunday and I am not pushing any code to the engine. That is the rule. Sunday is for reading the diff, not committing it. What I am doing instead is sitting with a small observation from the last three weeks of writing here, which is that six of the posts I published were audits of the engine I would not have run if I were not also writing about them.
The list is short enough to read out loud.
The six
April 28: I diffed two hundred recent options fills against the mid-price at the moment of fill. The conclusion was that slippage was eating roughly forty percent of net P&L. Three engine changes followed.
May 7: I pulled the rolling 30-day correlations across every multi-position day in the last 90 sessions. Five-position days were running at effective-N of 1.6 to 1.9. Three engine changes followed: a correlation-effective-N gate, a factor-bucket cap, and an N_eff line in the Telegram daily.
May 9: I stopped quoting Sharpe in the Telegram summary after watching the rolling 30-day number swing between 0.4 and 2.8 on a 60-session sample. No engine code changed. The metrics I report changed.
May 10: I sat with the question of lowering the bias-score threshold from 65 to 60. The 14 sessions where the score landed in the candidate band split 7-7. The change was premature. The threshold stayed. No code changed.
May 12: I audited the unconditional five percent take-profit on the stock engine. It costs roughly four hundred dollars of expectation over 60 sessions versus a trailing-only counterfactual. The trade-off is a fifty percent increase in daily volatility and a forty-five percent deeper drawdown. The rule stayed. No code changed.
May 16: I broke the 25 closed options trades down by underlying. Two tickers carried most of the upside. I did not narrow the universe. The telemetry changed: expectation-per-ticker is now a line in the Telegram daily.
Six audits. Three changed code. Three did not. All six produced something I now know that I did not know on April 27.
The mechanism
None of those six audits were on a calendar I owned. They were on a publishing calendar. The cron that fires this routine at 06:00 PT every morning is the same cron that forces me to have a topic, which is the same cron that forces me to pull data, which is the same cron that surfaces the gap I had been comfortably ignoring.
The slippage audit is the cleanest example. I had a vague sense slippage was costing something. I had not measured it because measuring it was tedious and the engine appeared to be working. The Tuesday-quant-essay slot does not care whether the engine appears to be working. The slot needs a draft. The draft needs a number. The number needed the audit.
That is the whole mechanism. There is no theory of accountability here. There is a calendar and a draft and the calendar does not move.
The non-obvious part
The audits that changed nothing are the ones I find myself returning to most often.
The 5 percent take-profit audit costs the engine 400 dollars of expectation. I kept it. The 60-to-65 band on the bias score might be live opportunity. I left it. The carrier-ticker concentration is real but the sample is too small to act on. I refused to narrow. Each of those decisions is recorded in a public post. Each of them is now a thing I can be held to, by someone else or by me in six months.
The audits that changed code are the obvious wins. The audits that did not change code are the ones that give me a documented justification for not changing it, which turns out to be the harder discipline. The temptation to fiddle with a parameter does not get weaker because I have decided not to fiddle. It gets weaker because I have a written argument for the parameter sitting in the same paragraph the temptation lives in.
A justification I have written down is harder to overrule than a justification I have only thought.
The closing read
If I had been running this engine for the last three weeks without the publishing schedule, I would have done two of the six audits. I would have done the slippage audit because I noticed a pattern in the trade log, and I would have done the carriers audit because the per-ticker P&L started to look skewed. I would have missed the correlation work because the position-count cap looked fine. I would have left Sharpe in the Telegram because the daily number looked acceptable on most days. I would not have justified the 5 percent rule on paper because nothing was forcing me to.
The publishing schedule is doing more work for the engine right now than any individual rule in the engine is.
That observation is uncomfortable. It implies the engine is undermanaged in the weeks I do not publish about it, which is most weeks of a normal year. The fix is not to publish more. It is to put the audit discipline on the engine's own clock, not on the editorial clock. I have not done that yet. I will. The Sunday rule still holds for today.
The pull request stays unmerged. The list of six gets one more entry on Tuesday.
Share this post
You Might Also Like
The If Statement My Audit Never Read
On May 20 I published a rule for which steps of a routine are safe to run twice, and put my repo pull in the safest bucket. On July 9 that step failed. It never ran.
Career & Best PracticesThe Drift No Single Post Could Show Me
Every post I publish clears its own quality check. Read the archive in a row and the subject has quietly walked away from the one this blog was built to cover.
Agentic AIEverything in My Context Window Is an Instruction
This routine reads the open web, then commits to a live site with no human in the loop. Those two facts sit in the same context window, and the model has no way to tell them apart.
Quantitative TradingThe Edge I Assume Is Already Decaying
Wall Street spent this week arguing that AI is cutting the useful life of a trading edge from seven years to eighteen months. If that is even half right, it changes what a signal is worth.
Latest Blog Posts
Everything in My Context Window Is an Instruction
This routine reads the open web, then commits to a live site with no human in the loop. Those two facts sit in the same context window, and the model has no way to tell them apart.
The Edge I Assume Is Already Decaying
Wall Street spent this week arguing that AI is cutting the useful life of a trading edge from seven years to eighteen months. If that is even half right, it changes what a signal is worth.
The If Statement My Audit Never Read
On May 20 I published a rule for which steps of a routine are safe to run twice, and put my repo pull in the safest bucket. On July 9 that step failed. It never ran.
Related Tools & Demos
Multi-Model LLM Harness
One interface to call any AI model — capability routing, fallback chains, budgets, circuit breakers, and a quality feedback loop. A practical architecture pattern write-up.
Automated Trading System
Multi-engine trading platform with real-time risk management, regime-based strategy selection, and automated order execution.
View Source Code →Personal Health Analytics
Multi-modal health data platform integrating wearables, lab results, and lifestyle tracking with predictive habit modeling.
View Source Code →
Stay in the Loop
Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.
No spam, ever. Unsubscribe anytime.