Four sessions, three closed trades, no winners, and under five dollars of damage. That last number is the only reason this week reads as a diagnosis rather than a disaster — because every fault it found is one that scales with position size, and none of them were found by losing money.
Being straight about it: there is no winning trade to report. Three closes, three losses. What worked is one layer down, and it is the fault this column has been carrying since the start of the month. Two Ford lots — 2 shares bought by hand at $14.40 on Sep 3, 1 share bought by the engine at $14.5399 on Sep 4 — were marked for exit on Sep 9 and the exit ran five consecutive times without filling. The engine kept deciding correctly and the order kept not existing. On the first run of Sep 10 both filled: 09:38:55 ET at $13.5401 and 09:40:11 ET at $13.5428, −$2.72 together. That is the first exit this engine has ever routed end-to-end to a broker and had complete. Three things are worth separating out of it. One, nothing was fixed. The blocker was unsettled cash — the account reported zero shares available to sell, because the proceeds of an earlier trade had not cleared — and it cleared on its own when the settlement clock ran out. No code changed. An engineer would call that a lucky timeout, and it is, and it is still the first completed exit. Two, the fills were better than the marks. At the moment the exit fired, the engine's own book said −0.68R and −0.77R; the fills printed −0.59R and −0.68R. Three, the reconciliation came back clean for the second run running — single executions, order identifiers matched, nothing floating. That is the whole win: an engine that can be believed about what it owns. It is a small thing to celebrate and it is the precondition for everything else in this column.
On Sep 8 at 13:38 ET the engine picked First Solar off its own screen — five signals firing, gap, reclaim, dip, VWAP and relative strength — and bought 1 share at $214.1399 with a protective order at $212.09. It was a scalp: a same-day trade, and the operating rule since the July audit is that nothing is carried overnight, because the synthetic stop only runs in regular hours. It was carried overnight anyway. It stopped at 09:42 ET the next morning at $212.00 — −$2.14, −1.04R, held 1,203 minutes against a design life of a few hours. Nothing about the trade failed. The calendar did. The cutoff for closing the day's positions is 15:48 ET — twelve minutes before the bell. The day's final run was scheduled for 15:47 ET. One minute early, every single day, and therefore permanently ineligible to flatten anything. Three layers had to line up for that to cost money and all three did: the tick that could have closed it fired a minute before it was allowed to; the separate end-of-day pass at 15:52 ET that exists precisely to catch this had exhausted its cost budget reconciling three open lots and stopped; and underneath both, the function deciding whether the session was closing compared that cutoff against a timestamp the model writes into its own input — a clock the system was asking itself for rather than reading. A fourth fault sat beside them, unrelated and worse. The fill wrote no position record at all: the component that places the order has no writer for the tracking file, because when this engine's run-book was ported into its current form the instruction to write that row on the fill was dropped. For the whole life of the position the safety monitor reported it as unverified — not evaluated. The stop was at the broker. The engine could not see that it was.
First, the fix, which landed fast and is verifiable. A fourth, independent reading of the wall clock — real market time, from the operating system rather than from the model's own input — now sits inside the session-close decision, combined so that it can only ever cause an extra flatten and never suppress one, guarded against firing twice a day, and shared by both sleeves. And the schedule itself moved: the stock engine's last run of the day now fires at 15:49 ET, one minute inside the cutoff instead of one minute outside it, with the schedule file stamped at 06:30 — the morning after the stop-out. The new clock reading can now actually return true on the last run, instead of being correctly false at 15:47.
Second, the part that is not fixed, and it is the same bug in the sleeve that has lost 99% of the money. The options engine's schedule has not been touched since . Its final run of the day fires at 15:45 ET — three minutes before the cutoff, so the identical ineligibility applies; its end-of-day pass runs after it and is the only pass in that sleeve that can close a position at all. The stock sleeve paid −1.04R to discover this and the options sleeve has not yet been handed the answer. On a single long option — where the position's whole value is premium that decays every day and reprices violently on a gap — the same overnight carry does not cost two dollars. It is one line in one schedule file and it goes in first this week.
Third, the arithmetic, which is unchanged and still points at the exits. Twenty graded stock trades: five wins averaging +0.726R against fourteen losses averaging −1.290R, a realised payoff of 0.56 to 1 against a design of 3 to 1. At 3:1 the engine needs to be right 25% of the time; at 0.56:1 it needs 64%, and it is running 26.3%. The ratio improved from 0.51 this week and the improvement is not good news — it moved only because the two Ford exits printed shallower than a full stop, cut by a percentage-of-entry rule that triggers well inside the level the trade was actually sized to. That truncates losses; it does nothing to the win side. The win sample is still five, and not one trade in twenty has ever touched its profit target. Which is why the fix is still the one named last week and still unbuilt: the upper tail is governed by a clock — four of the five wins were closed by time, not by a profit rule — so the trailing exit has to arm at about +0.5R instead of +1.0R, or part of the position comes off at +0.75R. Until that ships, no entry gate may be loosened, and the counterfactual ledger agrees: re-scored at the payoff this engine actually produces, not one blocked-trade bucket clears the 64% bar — the near-miss quality bucket sits at 53% over 17, the capital-blocked bucket at 60% over 10, the risk-halt bucket at 30% over 12, the scalp gate at 29% over 18, the technical veto at 17% over 7, and the overnight cap at 12.5% over 16. Every argument for trading more fails its own test.
Four things it logged. One — the no-overnight rule stopped being a theory. It has been argued against internally all summer, on the grounds that it kills trades that would have worked. Sixteen counterfactual observations from mid-July to late August say otherwise: blocked overnight carries would have been right 12.5% of the time at an average of −0.60R, −9.63R in total, and stripping the single good day leaves zero wins in fourteen. First Solar is the seventeenth observation and the first one paid in real money, at −1.04R. The rule is not too strict. It was too strict to be enforced by a schedule that could not reach it.
Two — the grader wrote down that it is structurally one day behind, rather than reporting a gap as a gap. A same-day setup cannot be graded until the next day's price bar exists, and the grading run fires at 05:50 Pacific, before that bar does. So every such counterfactual grades exactly one run late by construction, and a run that only ever looks at the prior session will orphan each one permanently unless it also sweeps the backlog — which is exactly what happened to the Sep 9 Celestica observation, which sat ungraded for a full run and then graded on the Sep 10 bar as a −1.0R loss, meaning the technical veto that blocked it saved a full stop. A system that can tell you why its number is missing is a different object from one that reports zero.
Three — a position was decided and never placed, and the accounting cannot see the difference. On Sep 9 the funnel recorded one entry created: Intel, 10 shares at $105.70, having passed every gate at 13:35 ET. The broker received nothing. The run reached its own cost ceiling before the order went out and stopped rather than send half a sequence — the right call, and it left a record saying a trade was made. The classification scheme has six reasons a trade might not happen and none of them is the decision was correct and the execution layer never ran. What is missing is one field: entries placed, beside entries created.
Four — the confidence penalties did not move, and the options read is unchanged because nothing closed. Five categories still carry a one-point markdown: the swing profile over 14 trades, chips and AI over 5, cybersecurity over 6, the most common signal stack over 7, and trading in a risk-off tape over 20. Two of this week's three closes were a bootstrap-profile bucket of n = 2, too small to move anything, which is correct. On options, the split remains tenor rather than direction: bought with under 29 days to expiry the sleeve is 0 wins in 8 — seven losses and a scratch — averaging −0.40R; with 29 days or more it is 2 wins in 5, averaging −0.09R. And nine of the ten losses died on a premium stop or an invalidation rule rather than on decay, which is the tell that the instrument is doing the damage, not the read.
One — the options schedule moves to 15:49 ET, with its end-of-day pass behind it. One line, one file, no threshold touched. This is the direct transfer of a lesson the stock sleeve paid for, into the sleeve where the same fault is worth two orders of magnitude more.
Two — the funnel learns the difference between a decision and an order. An entries placed count beside entries created, and a seventh no-trade reason for a run that decided correctly and was stopped by its own cost ceiling. Without it, a week like this one reports a trade that never existed.
Three — the fill writes its own position row. The instruction exists in the original run-book and was lost in the port; it goes back into the component that actually places the order, so no position can live even for a minute in the state First Solar lived in — protected at the broker and invisible to the thing responsible for protecting it.
Four — the options sleeve gets its record back. Its last written decision log is : nine sessions with no accounting at all, because the runs are configured in a rehearsal mode that skips writing. That is the same defect this column documented on the stock side two weeks ago, still live on the other half. Two frozen entries this week — an Intel call and a PLTR put, both fully qualified, neither placeable — are the best would-have-traded evidence the operation produced, and neither is graded.
Five — the capital reservation gets re-argued, and this is a decision, not a wish. As of Sep 11 the account holds $1,066.12 of settled cash, of which $1,000 is reserved for options and $0 is deployed there. So roughly 94% of the sleeve's usable cash is ring-fenced for the half that has lost $2,168.20 across 13 trades — a profit factor of 0.22, a return of −28.7% on the premium it risked — while the stock half spent the week buying single shares of a $14 stock and lost $4.86 doing it. That is not a gate problem or a signal problem. It is an allocation that has not been re-decided since the evidence arrived. The options sleeve does not get capital back before the two-leg structure exists — a defined-risk spread, where one option is sold against the one bought, so the position stops paying for volatility twice and stops bleeding every day it is right slowly. That structure has now been named in six consecutive logs and is still unbuilt because the order path can only place a single leg.
Six — the upper tail. Arm the trailing exit at +0.5R. Carried from last week, unshipped, and it stays at the top of the list until a trade in this ledger exits on a profit rule.
How we'll know it worked next Sunday: (a) the options schedule file is stamped later than Sep 13 and its last run of the day reads 15:49 ET; (b) an options decision record exists for at least three of five sessions; (c) the funnel reports placed separately from created, and the Sep 9 Intel case is re-classified; (d) at least one engine fill writes its own position row with no hand assist — the test that has now gone two weeks with nothing to test it; and (e) neither sleeve carries a position overnight through an eligibility failure. If the stock sleeve simply has another quiet four sessions, that is not a pass on any of these.
Thursday and Friday took the three systems that stand between this engine and a new position out of prose and into code. That work has its own note, because it does not belong in a trading grade.
The flow sniffer, which watches the options tape for unusual single-name buying; the regime read, which sets the size dial from where the two big index funds sit against their moving averages; and the risk governor, the breaker that decides whether either engine may open anything. All three went from prompts a model re-read each morning to scheduled jobs that run no model at all, each audited first by a second model reading the live files, and each had the same defect in a different costume — the rule stated in prose, its numbers held in several disagreeing copies, and a missing input reading as a passing one. On the sniffer's first live morning it reported ok for two hours while refusing every investigation it started. The governor posted new risk blocked twenty minutes after the close over a volatility row the exchange had not published yet, for a fact every intraday run already held. Both of those false words came from a status that was asserted rather than derived, and both fixes make it derived. Not measured, and worth saying plainly: whether the sniffer has any edge (2,806 observations, all unresolved), or whether the governor has ever saved a dollar. The full build note →
The newsletter's demand-and-credit read on semiconductors, cyber, and construction — this week's headline, and the dated checkpoint that would confirm it or crack it.
Track the second derivative rather than the headline. Second-quarter contract prices rose roughly 60% quarter on quarter, the largest single-quarter move of this cycle. Third-quarter increases were guided to 13–18% against the 20% Samsung was reported to be seeking. And the fourth-quarter forecast for mobile DRAM now narrows again to roughly 8–13% quarter on quarter, explicitly on weak end demand and elevated customer inventory, with suppliers' capacity shift toward servers and high-bandwidth memory cited as the thing preventing an outright fall. That deceleration is exactly the mechanism this column's May call was built on — buyers refusing a price — and the call was still graded a miss, correctly. It predicted a settlement below the guidance band by mid-July and got a 60% increase instead. The mechanism showed up one lane over, in consumer and mobile rather than in the phantom-inventory unwind, and one quarter after its own deadline. Being early and being wrong are the same grade, and the reason the mechanism was right is not a partial credit. What it does change is where to look next: the argument is no longer whether memory is tight, it is whether the deceleration stays quarantined in the lanes nobody is fighting over.
Two weeks ago this column replaced "the whole group is being de-rated" with dispersion, and named SailPoint's print as the test. It reported before the open: earnings of $0.09 against $0.08 expected, annual recurring revenue up 25% to $1.231B, and AI-derived recurring revenue past $70M — more than 30% of net new recurring revenue added in the quarter. It opened 4.2% lower and closed the day down 1.2%, against an options market that had priced a 12.6% move. So it was not sold on the print the way Palo Alto was, and it did not rally on numbers either — the test is inconclusive at the one-day horizon, and that is the honest grade. The week around it is not inconclusive at all: 18.82 to 17.24, −8.4%, of which −5.5% came the session before it reported and −2.3% two sessions after. The selling was continuous and the print was the quietest part of it. Meanwhile the sharper divergence this week is one lane over. Nine three-day federal remediation deadlines put vulnerability management at the top of the catalyst file at +1.78 in the same week the tape put it dead last at −6.91% mean. Cloudflare rose 9.90% on Sept 9 against a sector index that moved 0.4%, on a service announced Sept 3 that finds a vulnerability, blocks the attack at the edge and writes the patch. And Palo Alto's annual filing on Sept 10 carried the best growth-plus-margin figure in the coverage at 62.9, next-generation recurring revenue of $9.1B up 63%, and contracted future revenue past $20B — alongside stock compensation at 15.45% of revenue, growing 1,250bp faster than revenue. Demand is real; who captures it is contested.
The call needed two of four contractors to stretch their collection period by more than five days quarter on quarter. Computed from the second-quarter balance sheets: MasTec −3.1 days, EMCOR +1.3, Comfort Systems −5.1, Sterling +1.6. Zero of four, and two compressing. The construction pipeline reached the same verdict independently and retired the whole instrument: cash conversion was the wrong place to look, because the binding constraint in this cycle is labour productivity, not customer payment behaviour. The replacement measures the constraint directly. Contractors doing data-center work now carry an average backlog of 10.6 months against 8.3 for everyone else — a 2.3-month gap, and a backlog is a promise to supply crews on a date. Underneath it, private non-residential construction spending has contracted in six of the past seven months while the category containing data centers ran roughly 28% higher year on year, at an annualised $50.7B. One category is carrying a sector that is otherwise shrinking, and it is the category that cannot hire. The trade association's own count puts the national electrician shortfall around 50,000 and widening.
And the newsletter, on itself: the record at tkal.news/calls reads three claims, one hit, two misses — a resolved hit rate of 33%, and, more to the point, zero open calls. That is not a quiet fortnight. The weekly published a new one — that DDR4 is price without volume, with the Taiwan distributor tape named as the resolver around Sept 10 — and it was never written into the scorecard. So the resolver date has now passed on a call the ledger does not know exists, and no resolution text was ever produced. Which is precisely the fault Section I spent this week documenting in the trading engine, arriving in the half of the operation that is supposed to hold the other half to account. An entry was created and never placed; a call was published and never registered. Both systems can tell you what they decided. Neither can reliably tell you what it did, and the gap between those two verbs is where every loss in this column has lived for a month. The fix on the newsletter side is the same shape as the fix on the trading side and it is smaller: the weekly's publishing step writes the claim into the scorecard file as part of shipping the issue, not afterwards, so a call that reaches readers cannot fail to reach the ledger. Next Sunday this paragraph should read: four claims, one open, and a grade on DDR4.