Long 100 shares, short one weekly call, one name, no rolls. The strategy is small enough to state in a sentence, which means the whole result lives in the decisions around it — which strike, at what price, and at which moment. This page books all three explicitly and then measures how much each one was worth.
Every line below is executed by one loop in
lib/covered_call.py. Nothing on this page is chosen by hand, and
nothing is chosen after seeing the outcome.
tests/test_covered_call.py pins both sides of it.
Only trades that were actually booked. No working orders, no signals, no intentions. Each row names the rule that produced it.
Shares, the short call with its strike and expiry, cash, and the marks — at the close of every session. The ledger is derived from the blotter rather than accumulated alongside it, so the two cannot drift apart: cash at any bar is the starting cash plus the deltas of the blotter events that have happened by then, and a test asserts exactly that at every one of the — bars.
Reg T rather than portfolio margin, for a reason that is not just "the handout said so": Reg T is computable without a broker's PM engine, and a book that clears Reg T also clears PM. The implication runs one way only, so the conservative requirement is the one worth reporting.
The covered call adds nothing to the initial requirement, which is the whole reason the position is called covered: the short call's only obligation is to deliver stock the account already owns. Cash moves on blotter events and nowhere else — buy stock, collect premium, expire at zero, assign at the strike. Marks move NAV; they never move cash.
The whole book fills at the mid, so the assumption deserves evidence rather than a sentence. Below is every hourly bar in which a call both had a two-sided quote and actually printed: — of them.
A pooled R² over contracts worth one cent to ninety-nine dollars is inflated by range alone. The honest check is whether the fit survives inside a narrow band, where knowing that a $3 option is not a $6 option is actually difficult. It does — which was not the expected answer, and is reported here because it was not.
"Fill at mid" is only half an assumption. The other half is which mid — and nothing in the assignment, or in most backtests, says. Below is the identical book, same rule and same strike logic and same calendar, written at each tradeable hour of the entry session. Only the clock moves.
The booked rule is the assignment's baseline. The others run through the identical engine — same calendar, same fills, same ledger — so the difference between them is a difference of decisions and not of two implementations that drifted. Two of them are not fixed distances at all: they solve for the strike the week's own at-the-money implied volatility prices at a stated chance of being breached, reusing the Black-76 inversion written for Assignment 1.1.
Two claims on this page rest on what an hourly bar is: that its BID/ASK is the quote standing at the end of the hour, and that prints landing outside their own bar's quote are a timing artefact rather than something real. Both were assumptions. So the same contracts were re-pulled at one minute — — two-sided quoted bars — and both were measured.
Two of these are corrections to the handout. The rest are assumptions this page would otherwise have been resting on quietly — including two bugs of my own, which are here because of how they were caught rather than despite it.