Metrics
How these numbers are defined
Plain definitions and the exact formulas CoveredLoop uses. Figures follow the accounts and time window you select in the app. This page is not a forecast and not investment advice.
What counts as one trade
One closed trade is one fully closed structure. A covered call or wheel counts only once its shares are gone and it has no open option. A spread counts when every leg is closed. A standalone option or stock lot counts when that lot is closed.
Formula
Structures (Metrics default): one row when the covered call or wheel has zero shares and no open option, when every leg of a credit spread is closed, or when a standalone option or stock lot is closed. Lots (Metrics toggle only): one row per closed call, put, or stock lot, including each roll.
Inputs
- Structure: every leg and roll inside that finished campaign, plus stock P&L and dividends on a covered call or wheel, summed into one realized P&L. Premiums are already net of fees.
- Iron condor or iron butterfly: one structure, not four legs, and only after all legs are closed.
- A call bought back or rolled while the shares are still held is not a closed trade. A partial share sale on a chain that still holds shares is not a closed trade. Those dollars stay on the Profit and Loss calendar and the realized series. They are not in the closed-trade count, the win rate, or trading P&L.
- The same rule is used on every account. Combining accounts does not recount a structure.
- Dividends are inside the structure. They are not their own trade.
- Profit and Loss, the calendar, distribution, and Trade History stay on the collapsed book (one structure row, and realized pieces of an open chain still show as realized P&L). Only the Metrics page, and the metrics email, can switch to Lots.
Commissions and fees
Per-trade commissions and fees are taken out of that trade’s realized P&L; margin interest, the platform subscription, and other non-trade fees are not.
Formula
Manual lot: realized P&L = price P&L − fees entered on the ticket. Covered call / wheel structure: total P&L = stock P&L + net premiums + dividends. Premiums are already net of fees. Tradier fill (ids containing -fill- or -hist-): realized P&L = broker gain/loss − commissions matched to that symbol.
Inputs
- Trade commissions and regulatory fees that are attached to the lot or structure.
- Not subtracted from each trade: margin interest, subscription, and other cash fees. Those sit on the fee ledger and in the account balance, so they move equity-curve stats (Sharpe, drawdown, Calmar, and the rest) but not win rate or profit factor.
- Premium yield uses net premiums only. It does not subtract trading costs. Net investment still adds trading costs. Structure P&L does not take fees off a second time.
Win rate
Win rate is the share of closed trades that finished with a profit, and a break-even trade counts in the denominator but not as a win.
Formula
Win rate = (trades with realized P&L > 0) / (all closed trades) × 100
Inputs
- Win: realized P&L greater than $0.
- Loss: realized P&L less than $0.
- Break-even: realized P&L exactly $0. It is not a win and not a loss, but it is still a closed trade, so it lowers the win rate.
- Wins per loss ignores break-even trades. Win rate does not.
- Dividends are not trades.
- The Winners / losers tile uses this same rule.
Blank only when there are no closed trades. The rate itself is on the trend chart and inside the Winners / losers popup, not as its own card.
Wins per loss
Wins per loss is how many winning closes you have for each losing close, ignoring how large those trades were and ignoring break-evens.
Formula
Wins per loss = (count of realized P&L > 0) / (count of realized P&L < 0)
Inputs
- Numerator: winning closed trades.
- Denominator: losing closed trades.
- Break-even trades (P&L = $0) are in neither count.
Blank when there are no losing trades, including a book that is all winners. The card does not show infinity.
Avg win ÷ avg loss
This is the typical winning trade’s dollar profit divided by the typical losing trade’s dollar loss, not a count of wins.
Formula
Avg win ÷ avg loss = mean(realized P&L of winners) / |mean(realized P&L of losers)|
Inputs
- Winners only in the numerator (P&L > 0). Break-evens are left out.
- Losers only in the denominator (P&L < 0), as a positive dollar amount.
Blank when there are no losing trades or the average loss is $0.
Average trade P&L
Average trade P&L is the mean dollar profit or loss of every closed trade in the window, including break-evens.
Formula
Average trade P&L = mean(realized P&L of closed trades)
Inputs
- Every closed trade with a realized P&L, including $0.
- Dividends excluded.
- Commissions already netted inside each trade’s realized P&L, as described under Commissions and fees.
Average P&L %
Average P&L % is the mean of each closed trade’s profit or loss as a percent of that trade’s opening notional, not of max risk.
Formula
For each trade: P&L % = realized P&L / |open price × quantity × multiplier| × 100 Average P&L % = mean of those percents Average winning (losing) P&L % = the same mean, winners (losers) only
Inputs
- Multiplier is the contract multiplier on the lot (100 for options when it is not set). A covered-call or wheel structure row uses multiplier 1 and quantity 1, and open price is the capital base (stock cost, or put collateral if there is no stock).
- A credit-spread structure row uses multiplier 100 and open price = credit per share, so the denominator is the net credit, not max risk.
- A single option lot uses the opening premium (debit paid or credit received).
- A stock lot uses |open price × shares|, the cost of that lot.
- Trades with no positive denominator are skipped.
- Break-even trades contribute 0% and are included in the all-trades average. They are excluded from the winning-only and losing-only averages.
This is not return on capital. On a credit spread, return on capital divides by max risk. Average P&L % divides by the credit.
Expectancy ($ and R)
Dollar expectancy is the average dollars you would expect per closed trade; expectancy in R is that same idea in units of risk, and only the dollar figure is shown.
Formula
Expectancy $ = (wins / N) × average win $ + (losses / N) × average loss $ where N = all closed trades, average loss $ is negative, and break-evens add nothing but still increase N. Expectancy in R is not a Metrics card. One trade’s R = realized P&L / 1R. Expectancy in R would be the mean of those R values.
Inputs
- 1R for a credit spread, iron condor, or iron butterfly: max risk = (widest wing width × $100 × contracts) − net credit, and not below $0. Same max risk as the credit-spread card.
- 1R for stock, a covered call, or a wheel that holds shares: cost basis (shares × average cost). There is no planned-stop field, so a stop is not used.
- 1R for a cash-secured put with no shares: strike × $100 × contracts (cash collateral).
- 1R for a single option lot: |open price × contracts × multiplier|, the premium debit or credit. That is not the max loss of a naked short.
- Dollar expectancy uses the same wins, losses, and N as win rate. It equals average trade P&L.
The Metrics card is expectancy in dollars. It is blank when there are no closed trades.
Profit factor
Profit factor is total dollars won on winning trades divided by total dollars lost on losing trades.
Formula
Profit factor = gross profit / |gross loss|
Inputs
- Gross profit = sum of realized P&L where P&L > 0.
- Gross loss = sum of realized P&L where P&L < 0.
- Break-even trades add $0 to both sides.
- Commissions are already inside each trade’s realized P&L.
Blank when there are no losing dollars, even if every trade won. The card does not show infinity.
Kelly
CoveredLoop does not calculate a Kelly fraction and does not size trades with one, so there is no full, half, or continuous Kelly variant on the Metrics page.
Formula
Not computed. The classic binary (full) Kelly that uses the same closed-trade inputs would be f* = p − (1 − p) / b, where p = wins / (wins + losses) and b = avg win $ / |avg loss $|. Break-evens are left out of p. That is not half-Kelly and not the continuous-growth formula, and the app does not apply it.
Inputs
- Would-be p: win count and loss count, break-evens excluded (not the win-rate denominator).
- Would-be b: avg win ÷ avg loss, as defined above.
- No fraction of Kelly (half, quarter) is stored or displayed.
System Quality Number (SQN)
SQN is Van Tharp’s score on the dollar results of closed trades — square root of the sample size, times average P&L, divided by the standard deviation of those P&Ls — with no cap on N.
Formula
SQN = √N × mean(P&L) / s s = √( Σ (P&L − mean)² / (N − 1) ) (sample standard deviation)
Inputs
- The series is dollar realized P&L, not R-multiples. Van Tharp’s textbook form uses R; this card uses dollars because 1R is not stored on every trade.
- N = all closed trades in the window, including break-evens ($0) and excluding dividends.
- No N cap. A 400-trade book is not scaled back to 100. The written comparison to a typical trader mentions a 100-trade equivalent (SQN × √(100 / N)); the card shows the raw SQN.
- Needs at least two closed trades and a standard deviation above zero.
Sortino ratio
Sortino is not calculated. The volatility-adjusted ratio on the Metrics page is Sharpe, which uses total standard deviation, not downside deviation.
Formula
Not computed. A Sortino on the same series would be (mean(r) − rf) / downside deviation × √252, with rf = 0 and downside deviation = √( mean of min(r, 0)² ). CoveredLoop does not show that number.
Inputs
- Same daily account-balance returns as Sharpe, including cash transfers.
- No separate downside deviation is stored.
Calmar ratio
Calmar is the compound annual growth of the cash-flow-adjusted equity curve divided by the worst peak-to-trough drop on that same curve.
Formula
Index compounds (equity change − deposits + withdrawals) / prior equity. CAGR = (ending index / starting index) ^ (1 / years) − 1 years = (end date − start date) / 365.25 Calmar = CAGR / (max drawdown % / 100)
Inputs
- The index is the TWR equity curve: deposits and withdrawals do not move it.
- Max drawdown % is measured on that same index (see Max drawdown).
Blank when history is shorter than two points, the start equity is not positive, or max drawdown is 0.
Omega ratio
Omega adds up the up-moves in account balance and divides by the down-moves, using a threshold of zero so a flat step is ignored.
Formula
Omega = Σ (r where r > 0) / |Σ (r where r < 0)| Threshold = 0. r is the simple balance change defined under Sharpe.
Inputs
- Same account-balance steps as Sharpe. Not trade P&L. Not cash-stripped.
- Threshold is 0. There is no user-set hurdle rate.
- Steps with r = 0 are ignored.
Blank when there is no negative step. Gain to pain is this number minus 1.
Gain-to-pain ratio
Gain to pain adds every account-balance step, up and down, and divides by the size of the down steps.
Formula
Gain to pain = Σ r / |Σ (r where r < 0)| This equals Omega − 1 when the Omega threshold is 0.
Inputs
- Same simple balance returns as Sharpe and Omega.
- The numerator includes negative steps, so the ratio can be negative.
Blank when there is no negative step.
Ulcer Performance Index
The Ulcer Performance Index is annualized growth of the cash-flow-adjusted equity curve divided by a score of how deep and how long that curve sat below its running peak.
Formula
Drawdown % at each point = (running peak of the TWR index − index) / running peak × 100 Ulcer Index = √( mean of (drawdown %)² ), including points sitting on the peak (0) UPI = (CAGR × 100) / Ulcer Index
Inputs
- The TWR index, same curve as Calmar and max drawdown. Deposits and withdrawals are removed.
- CAGR as defined under Calmar. Risk-free rate is 0.
- The running peak is the highest index value seen so far.
Blank when CAGR cannot be computed or the ulcer index is 0.
Recovery factor
Recovery factor is how much the cash-flow-adjusted equity curve grew from the first point to the last, divided by the deepest dollar hole on that curve.
Formula
Recovery factor = (ending TWR index − starting TWR index) / |max drawdown $|
Inputs
- Numerator is trading growth on the TWR index, not Net equity P&L. Deposits do not increase it and withdrawals do not decrease it.
- Max drawdown in index dollars (peak index − later trough). Not annualized.
Blank when the largest dollar drawdown is $0.
Tail ratio
Tail ratio compares a typical extreme up-move in the account balance with a typical extreme down-move.
Formula
Tail ratio = |95th percentile of r| / |5th percentile of r| Percentile index = (n − 1) × p, with linear interpolation between the two nearest sorted returns.
Inputs
- r is the simple account-balance step used by Sharpe, not closed-trade P&L.
- 95th and 5th percentiles. Not the single best and worst day.
Blank when there are no returns or the 5th percentile is exactly 0.
Max drawdown
Max drawdown is the worst peak-to-trough drop on the cash-flow-adjusted equity curve (the TWR index). A deposit or withdrawal is not a drawdown.
Formula
Build the TWR index from the account-balance history. On each step, r = (equity − prior equity − net deposits/withdrawals) / prior equity. Index starts at the first equity and then compounds by (1 + r). Walk that index in date order. Running peak updates whenever the index makes a new high. Dollar drop = running peak − index Percent drop = dollar drop / running peak Max drawdown is the largest dollar drop; if two drops tie in dollars, the larger percent wins. Max drawdown % = that percent × 100
Inputs
- Which curve: the TWR index for the accounts and Metrics time window you selected, not raw account balance.
- Deposits and withdrawals are removed before the peak and trough are measured. Time-weighted return uses the same cash-flow rule.
- On live and paper books, a persistent exact-dollar jump the broker did not tag can be inferred as capital. Sample and Manual do not infer.
- Net equity P&L is a different number: ending balance − starting balance, and it still includes deposits and withdrawals.
Blank when the history has fewer than two points.
Balance change
Balance change is the percent change in account equity, and cash you moved in or out counts as part of that change.
Formula
Balance change % = (ending equity − starting equity) / |starting equity| × 100
Inputs
- Start and end come from the equity curve for the selected accounts and the tile’s window (Daily, Weekly, Monthly, YTD, 1Y, or Inception).
- Daily = (equity − prior close − net transfers today) ÷ prior close, which is the same number as Daily TWR.
- A deposit raises the balance. A withdrawal lowers it. Neither is a trading gain or loss.
- Net equity P&L on Metrics is the dollar version of this over the Metrics window: ending equity − starting equity, still including cash. The tile says “includes deposits/withdrawals” and shows Net deposits beside it.
Time-weighted return
Time-weighted return is the trading return after deposits and withdrawals are taken out, so adding money is not a gain and taking money out is not a loss.
Formula
On each step: r_t = (equity_t − equity_t−1 − cash flow_t) / equity_t−1 TWR = product of (1 + r_t) − 1 Cash flow_t = deposits minus withdrawals dated after the previous point and on or before this point.
Inputs
- Same windows as the Balance % tiles.
- A step is skipped when the starting equity is under $1,000, or when |r| is over 40% (treated as a missing-account hole, not P&L).
- A persistent exact-dollar jump of at least $2,000 and 8% of equity can be inferred as capital when the broker did not tag the transfer. The latest mark is never inferred.
- Daily = (equity − prior close − net transfers today) ÷ prior close, which is the same number as Daily TWR.
- When net cash flow in the window is $0, TWR matches the balance change.
- For more than one account, TWR is a weighted average of each account's own time-weighted return, weighted by its average invested capital over the window (only days it held money count).
Break-even / share
Break-even / share is the stock price that covers what you paid for the shares and the fees, after the option premium already collected on this structure.
Formula
Break-even / share = (total share cost + fees − net premium collected on the chain) ÷ shares held Net premium collected = all option credits received − all buyback debits paid on this structure
Inputs
- Total share cost is the stock cost basis on this structure (shares × average cost).
- Fees are the trading costs on this structure (commissions and regulatory fees).
- Net premium collected is every option credit received minus every buyback debit already paid, including closed rolls and the credit from an option that is still open.
- The open option’s current cost to close is not subtracted. The number changes when a trade is opened or closed, not when the mark moves.
- Shares held are the shares still in the structure. With no shares, break-even / share is blank.
- Dividends are not in this formula. Net investment / share is a different number: it also subtracts dividends and adds the current cost to close open options.
Return if assigned
Return if assigned is the percent a covered call would make on the Research what-if if the short call is assigned at the strike. It is not a Metrics tile and not the covered-call card.
Formula
Return if assigned % = (premium collected + (strike − share price) × shares) ÷ stock investment × 100 Stock investment (the basis) = share price × shares
Inputs
- Share price is the spot on the covered-call what-if. The worksheet treats that spot as the price paid per share. It is not a separate average-cost field.
- Stock investment is that share price times the shares on the worksheet. The percent divides by this basis.
- Premium collected is the call premium per share × $100 × contracts, minus fees entered on the worksheet.
- Strike is the short call strike. (strike − share price) × shares is the projected stock gain if assigned.
- The same percent is the what-if chip labeled Overall potential return.
Max profit in dollars on that worksheet can use an entered average cost when it differs from the spot. The percent does not. It always uses the spot as the share price.
A cash-secured put what-if does not show this percent. Assignment there has no call strike.
Return on capital
Return on capital for a credit spread is profit divided by max risk; on a covered call it is the whole trade’s profit divided by the stock capital.
Formula
Credit spread, open: ROC = max reward / max risk × 100 Credit spread, closed: ROC = realized P&L / max risk × 100 Max risk = (wing width × $100 × contracts) − net credit, not below $0, when the credit per share is not larger than the width. Max reward = net credit, capped at the width premium. Covered call / wheel, closed: trade return % = total trade P&L / capital base × 100 Capital base = stock cost basis, or put collateral if there is no stock.
Inputs
- Realized P&L on a closed spread is the structure’s net (credit minus close debit), not each leg.
- An assigned spread that would otherwise show a stock loss beyond max risk is limited to −max risk.
- Trade return on a covered call includes stock P&L, net premiums, and dividends. Premiums are already net of fees.
- This is not average P&L %, which divides a spread by its credit rather than by max risk.
Questions
What is on this page?
Plain definitions and the formulas CoveredLoop uses for the metrics in the app, including win rate, drawdown, and premium yield.
Do these figures predict a result?
No. A definition describes how a figure is calculated from the accounts and dates you select. It is not a forecast.
Why might a broker show a different number?
This page is the formula CoveredLoop uses. A broker may group trades or pick a different time window.
Where do the inputs come from?
From the trades in the accounts and the date window you select in the app. Each formula on this page lists its inputs underneath.
