Career & Best Practices5 min read

The Audits Only Got Run Because I Had to Publish

S

Suneet Malhotra

May 17, 2026

1 views
The Audits Only Got Run Because I Had to Publish - Career & Best Practices blog post

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

Stay in the Loop

Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.

No spam, ever. Unsubscribe anytime.