Raxx · internal docs

internal · gated

/tools copy inventory (appendix B to the attorney review packet for #4835)

Status: research-only. This document does NOT constitute legal advice. It is an inventory of customer-facing strings on the public calculator pages, prepared for review by a securities/investment-adviser regulatory attorney and an advertising/consumer-protection attorney. Last updated: 2026-10-31 UTC. Snapshot: origin/develop at 78b417d24. Verify freshness with the staleness check in the main packet.

Main packet: docs/legal/research/funnel-and-tools-copy-attorney-packet-2026-10-31.md. Funnel appendix: docs/legal/research/funnel-copy-inventory-2026-10-31.md.

How this inventory was produced

Counts

Prefix Group Rows
HUB Hub 21
SHL Shared shell 46
REG Registry (titles, descriptions, blurbs) 18
PSZ Position size 80
PSZS Position size: rendered samples 56
OPT Options payoff 78
OPTS Options payoff: rendered samples 126
ROR Risk of ruin 94
RORS Risk of ruin: rendered samples 73

Total rows: 592. Pre-staged proposals for the three pages not on develop are in B7 and are not counted.

Inventory by surface

B1. Hub (/tools)

ID Location (file:line, context) String as written in source Touches
HUB-001 components/tools/ToolsHub.tsx:25 (ToolsHub.label @skip) Skip to calculators -
HUB-002 components/tools/ToolsHub.tsx:27 (ToolsHub.label @items) Raxx -
HUB-003 components/tools/ToolsHub.tsx:27 (ToolsHub.label @items) Tools -
HUB-004 components/tools/ToolsHub.tsx:36 (ToolsHub) Calculators -
HUB-005 components/tools/ToolsHub.tsx:48 (ToolsHub) Enter -
HUB-006 components/tools/ToolsHub.tsx:52 (ToolsHub) Get -
HUB-007 components/tools/ToolsHub.tsx:64 (ToolsHub) No calculators are published yet -
HUB-008 components/tools/ToolsHub.tsx:65 (ToolsHub) Each calculator is listed here when it is published. -
HUB-009 components/tools/ToolsHub.tsx:71 (ToolsHub) How these calculators work -
HUB-010 components/tools/ToolsHub.tsx:75 (ToolsHub) Arithmetic only. -
HUB-011 components/tools/ToolsHub.tsx:75 (ToolsHub) Every figure is a formula applied to the numbers you type. Examples use a placeholder, XYZ. G4
HUB-012 components/tools/ToolsHub.tsx:79 (ToolsHub) Your numbers stay in your browser. G8
HUB-013 components/tools/ToolsHub.tsx:79 (ToolsHub) Nothing you enter is sent to a server, saved or logged. G8
HUB-014 components/tools/ToolsHub.tsx:83 (ToolsHub) Method shown. -
HUB-015 components/tools/ToolsHub.tsx:83 (ToolsHub) Each page lists its formulas and a worked example. -
HUB-016 lib/tools/constants.ts:24 (OG_IMAGE_ALT) Trading calculators: arithmetic on the numbers you enter, in your browser. G8
HUB-017 lib/tools/constants.ts:58 (HUB_TITLE) Free Trading Calculators - Position Size, Options Payoff G6, G7
HUB-018 lib/tools/constants.ts:60 (HUB_DESCRIPTION) Free trading calculators for position size, options payoff, risk of ruin and more. Arithmetic on the numbers you enter, in your browser. No sign-up. G6, G7, G8
HUB-019 lib/tools/constants.ts:61 (HUB_H1) Trading calculators -
HUB-020 lib/tools/constants.ts:63 (HUB_LEDE) Free calculators for position size, risk and options payoff. Each one is arithmetic on the numbers you type, and your numbers stay in your browser. G6, G7, G8
HUB-021 components/tools/ToolsHub.tsx:57 (ToolsHub; written → in the source, aria-hidden) Open calculator → -
ID Location (file:line, context) String as written in source Touches
SHL-001 components/tools/ToolsFrame.tsx:49 (ToolsFrame @aria-label) Raxx home -
SHL-002 components/tools/ToolsFrame.tsx:52 (ToolsFrame @aria-label) Site -
SHL-003 components/tools/ToolsFrame.tsx:54 (ToolsFrame) All calculators -
SHL-004 components/tools/ToolsFrame.tsx:64 (ToolsFrame) Privacy Policy -
SHL-005 components/tools/ToolsFrame.tsx:65 (ToolsFrame) Terms of Service -
SHL-006 components/tools/Breadcrumbs.tsx:17 (Breadcrumbs @aria-label) Breadcrumb -
SHL-007 components/tools/Disclaimer.tsx:17 (Disclaimer) Disclaimer G9
SHL-008 components/tools/Disclaimer.tsx:20 (Disclaimer) Terms of Service -
SHL-009 components/tools/ToolCta.tsx:45 (ToolCta) Free account G7
SHL-010 components/tools/ToolPageShell.tsx:77 (ToolPageShell.label @skip) Skip to calculator -
SHL-011 components/tools/ToolPageShell.tsx:81 (ToolPageShell.label @items) Raxx -
SHL-012 components/tools/ToolPageShell.tsx:82 (ToolPageShell.label @items) Tools -
SHL-013 components/tools/ToolPageShell.tsx:101 (ToolPageShell) Calculator -
SHL-014 components/tools/ToolPageShell.tsx:108 (ToolPageShell) This calculator needs JavaScript to run. The explanation, formulas and examples below work without it. Nothing you type is sent anywhere. G8
SHL-015 components/tools/ToolSections.tsx:60 (ToolFaq) Frequently asked questions -
SHL-016 components/tools/ToolSections.tsx:80 (RelatedTools) More calculators -
SHL-017 components/tools/CopyLinkButton.tsx:64 (CopyLinkButton) Copy link to these numbers -
SHL-018 components/tools/CopyLinkButton.tsx:71 (CopyLinkButton) Link copied. The numbers are stored after the # in the link; they are not sent to a server. G8
SHL-019 components/tools/CopyLinkButton.tsx:73 (CopyLinkButton) Your browser blocked copying. Select the link below and copy it yourself. G8
SHL-020 components/tools/CopyLinkButton.tsx:79 (CopyLinkButton) Link to these numbers -
SHL-021 components/tools/CopyLinkButton.tsx:94 (CopyLinkButton) Everything after the # stays in your browser. It is not sent to a server. G8
SHL-022 components/tools/ToolErrorBoundary.tsx:80 (ToolErrorBoundary) Calculator -
SHL-023 components/tools/ToolErrorBoundary.tsx:86 (ToolErrorBoundary) This calculator hit an error. Your numbers were not sent anywhere. G8
SHL-024 components/tools/ToolErrorBoundary.tsx:90 (ToolErrorBoundary) Reload calculator -
SHL-025 components/tools/LoadExampleButton.tsx:19 (LoadExampleButton) Load these numbers -
SHL-026 app/tools/not-found.tsx:11 (ToolsNotFound.label @skip) Skip to content -
SHL-027 app/tools/not-found.tsx:12 (ToolsNotFound) This calculator isn't published - Raxx -
SHL-028 app/tools/not-found.tsx:16 (ToolsNotFound) This calculator isn't published -
SHL-029 app/tools/not-found.tsx:17 (ToolsNotFound) There is no calculator at this address. -
SHL-030 app/tools/not-found.tsx:19 (ToolsNotFound) All calculators -
SHL-031 lib/tools/numbers.ts:115 (MESSAGES.format) Enter a number, like 100 or 100.25. -
SHL-032 lib/tools/numbers.ts:117 (MESSAGES.tooLarge) That number is too large. The limit is -
SHL-033 lib/tools/numbers.ts:118 (MESSAGES.positive) Enter a value greater than zero. -
SHL-034 lib/tools/numbers.ts:119 (MESSAGES.nonnegative) Enter zero or a positive number. -
SHL-035 lib/tools/numbers.ts:120 (MESSAGES.percent) Enter a percent above 0 and up to 100. -
SHL-036 lib/tools/numbers.ts:121 (MESSAGES.percentFromZero) Enter a percent from 0 to 100. -
SHL-037 lib/tools/numbers.ts:122 (MESSAGES.count) Enter a whole number, 1 or more. -
SHL-038 lib/tools/numbers.ts:136 (parseNumberInput.required) Enter a number. -
SHL-039 lib/tools/numbers.ts:190 (NOT_DEFINED) Not defined -
SHL-040 lib/tools/constants.ts:32 (DISCLAIMER_TEXT) Educational tool. Results are arithmetic on the numbers you enter. Not investment advice, not a recommendation to buy or sell any security. Options involve risk and are not suitable for all investors. G5, G9
SHL-041 lib/tools/constants.ts:50 (PRIVATE_NOTE) Your numbers stay in your browser. G8
SHL-042 lib/tools/constants.ts:53 (CTA_LABEL) Track this in Raxx - free G7
SHL-043 lib/tools/constants.ts:55 (CTA_BODY) Keep your sizing rules and your own trade history in one place. Free account, no card needed. G6, G7
SHL-044 components/tools/ToolSections.tsx:34 (ToolMethod; written ' in the source) How it's calculated -
SHL-045 lib/tools/numbers.ts:116 (MESSAGES.decimals) Use at most 6 decimal places. -
SHL-046 lib/tools/jsonLd.ts:40 (webApplicationJsonLd.browserRequirements; structured data for search engines, not drawn on the page) Requires JavaScript -

B3. Page titles, descriptions, headings and hub blurbs (registry)

ID Location (file:line, context) String as written in source Touches
REG-001 lib/tools/registry.ts:54 (TOOLS.title) Position Size Calculator - Shares to Buy From Your Risk G6
REG-002 lib/tools/registry.ts:56 (TOOLS.description) Free position size calculator. Enter account size, risk %, entry and stop to see shares, dollar risk and R multiple at target. No sign-up. G6, G7
REG-003 lib/tools/registry.ts:57 (TOOLS.h1) Position Size Calculator G6
REG-004 lib/tools/registry.ts:58 (TOOLS.blurb) Shares from account size, risk percent, entry and stop. G6
REG-005 lib/tools/registry.ts:59 (TOOLS.enter) account size, risk %, entry, stop G6
REG-006 lib/tools/registry.ts:60 (TOOLS.get) shares, dollar risk, R multiple -
REG-007 lib/tools/registry.ts:67 (TOOLS.title) Options Payoff Calculator - Calls, Puts and Call Spreads -
REG-008 lib/tools/registry.ts:69 (TOOLS.description) Free options payoff calculator and call spread calculator. Chart profit and loss at expiration, max gain, max loss and breakevens. No sign-up. G7
REG-009 lib/tools/registry.ts:70 (TOOLS.h1) Options Payoff Calculator -
REG-010 lib/tools/registry.ts:71 (TOOLS.blurb) Profit and loss at expiration for calls, puts and call spreads. -
REG-011 lib/tools/registry.ts:72 (TOOLS.enter) strikes, premiums, contracts -
REG-012 lib/tools/registry.ts:73 (TOOLS.get) max gain, max loss, breakevens, chart -
REG-013 lib/tools/registry.ts:82 (TOOLS.title) Risk of Ruin Calculator for Trading - Drawdown Simulator G2, G6
REG-014 lib/tools/registry.ts:84 (TOOLS.description) Free risk of ruin calculator for trading. Enter win rate, average win and loss, and risk per trade to simulate drawdown distribution. No sign-up. G2, G6, G7
REG-015 lib/tools/registry.ts:85 (TOOLS.h1) Risk of Ruin Calculator for Trading G6
REG-016 lib/tools/registry.ts:86 (TOOLS.blurb) Simulate drawdowns from your own win rate and payoff. G2
REG-017 lib/tools/registry.ts:87 (TOOLS.enter) win rate, average win and loss, risk per trade G6
REG-018 lib/tools/registry.ts:88 (TOOLS.get) drawdown histogram, share of paths at a threshold -

B4. Position size calculator

ID Location (file:line, context) String as written in source Touches
PSZ-001 components/tools/position-size/content.tsx:23 (POSITION_SIZE_LEDE) Enter account size, risk percent, entry and stop. The calculator returns the share count, dollar risk and R multiple those numbers give. G6
PSZ-002 components/tools/position-size/content.tsx:28 (POSITION_SIZE_FAQ.question) How do I calculate position size from a stop? G6
PSZ-003 components/tools/position-size/content.tsx:30 (POSITION_SIZE_FAQ.answer) Multiply account size by the risk percent to get the dollar risk. Divide that by the distance between entry and stop. Round down to whole shares. With a 10,000 account, 0.75% risk, entry 100 and stop 97.50, that is 75.00 / 2.50 = 30 shares. G6
PSZ-004 components/tools/position-size/content.tsx:33 (POSITION_SIZE_FAQ.question) Why does the calculator round the share count down? -
PSZ-005 components/tools/position-size/content.tsx:35 (POSITION_SIZE_FAQ.answer) Rounding down keeps the loss at the stop at or below the dollar risk figure. Rounding up would put it above that figure. G6
PSZ-006 components/tools/position-size/content.tsx:38 (POSITION_SIZE_FAQ.question) What does the R multiple mean? -
PSZ-007 components/tools/position-size/content.tsx:40 (POSITION_SIZE_FAQ.answer) R is the distance from entry to stop, one unit of risk. The R multiple at target is the distance from entry to target measured in those units. A target twice as far from entry as the stop gives 2.00. G6
PSZ-008 components/tools/position-size/content.tsx:43 (POSITION_SIZE_FAQ.question) Does the calculator use real prices or my account? G4
PSZ-009 components/tools/position-size/content.tsx:45 (POSITION_SIZE_FAQ.answer) No. It uses only the numbers typed into the fields. It looks up no prices, connects to no account and sends nothing to a server. G8
PSZ-010 components/tools/position-size/content.tsx:53 (HowManySharesSection) How many shares should I buy? G5, G6
PSZ-011 components/tools/position-size/content.tsx:56 (HowManySharesSection) The share count follows from four numbers you choose: account size, risk percent, entry and stop. The calculator multiplies account size by the risk percent to get a dollar amount, divides that amount by the distance between entry and stop, and rounds down to whole shares. G6
PSZ-012 components/tools/position-size/content.tsx:61 (HowManySharesSection) Change any of the four numbers and the count changes with it. The calculator does not choose any of them. -
PSZ-013 components/tools/position-size/content.tsx:77 (PositionSizeMethod) Dollar risk = account size x risk %. Shares = dollar risk / \|entry - stop\|, rounded down. R multiple = (target - entry) / \|entry - stop\|. This is arithmetic on the numbers you enter; it isn't a recommendation. The G5, G6
PSZ-014 components/tools/position-size/content.tsx:79 (PositionSizeMethod) shows the same idea on sample data. -
PSZ-015 components/tools/position-size/content.tsx:83 (PositionSizeMethod) For a short position the R multiple uses (entry - target) / \|entry - stop\|. In contracts mode the per-contract distance and the position value are multiplied by 100. Fees and slippage are not included. G6
PSZ-016 components/tools/position-size/content.tsx:92 (POSITION_SIZE_TERMS.term) Dollar risk -
PSZ-017 components/tools/position-size/content.tsx:92 (POSITION_SIZE_TERMS.definition) Account size multiplied by the risk percent entered. G6
PSZ-018 components/tools/position-size/content.tsx:93 (POSITION_SIZE_TERMS.term) Risk per share -
PSZ-019 components/tools/position-size/content.tsx:93 (POSITION_SIZE_TERMS.definition) The distance between entry and stop. G6
PSZ-020 components/tools/position-size/content.tsx:95 (POSITION_SIZE_TERMS.term) R multiple -
PSZ-021 components/tools/position-size/content.tsx:96 (POSITION_SIZE_TERMS.definition) The distance from entry to target, measured in units of risk per share. -
PSZ-022 components/tools/position-size/content.tsx:119 (POSITION_SIZE_EXAMPLES.title) Long, shares -
PSZ-023 components/tools/position-size/content.tsx:121 (POSITION_SIZE_EXAMPLES.entered.label) Account size G6
PSZ-024 components/tools/position-size/content.tsx:122 (POSITION_SIZE_EXAMPLES.entered.label) Risk percent G6
PSZ-025 components/tools/position-size/content.tsx:123 (POSITION_SIZE_EXAMPLES.entered.label) Entry / stop / target G6
PSZ-026 components/tools/position-size/content.tsx:126 (POSITION_SIZE_EXAMPLES.result.label) Shares -
PSZ-027 components/tools/position-size/content.tsx:128 (POSITION_SIZE_EXAMPLES.result.label) Position value -
PSZ-028 components/tools/position-size/content.tsx:129 (POSITION_SIZE_EXAMPLES.result.value) 4.00R -
PSZ-029 components/tools/position-size/content.tsx:134 (POSITION_SIZE_EXAMPLES.title) Short, contracts -
PSZ-030 components/tools/position-size/content.tsx:141 (POSITION_SIZE_EXAMPLES.result.label) Contracts -
PSZ-031 components/tools/position-size/content.tsx:144 (POSITION_SIZE_EXAMPLES.result.value) 2.00R -
PSZ-032 components/tools/position-size/content.tsx:166 (PositionSizeExamples) Examples -
PSZ-033 components/tools/position-size/content.tsx:171 (PositionSizeExamples) Numbers entered -
PSZ-034 components/tools/position-size/content.tsx:173 (PositionSizeExamples) Result -
PSZ-035 components/tools/position-size/PositionSizeCalculator.tsx:82 (DIRECTION_OPTIONS.label) Long -
PSZ-036 components/tools/position-size/PositionSizeCalculator.tsx:83 (DIRECTION_OPTIONS.label) Short -
PSZ-037 components/tools/position-size/PositionSizeCalculator.tsx:87 (UNIT_OPTIONS.label) Shares -
PSZ-038 components/tools/position-size/PositionSizeCalculator.tsx:88 (UNIT_OPTIONS.label) Contracts (x100) -
PSZ-039 components/tools/position-size/PositionSizeCalculator.tsx:91 (INITIAL_MESSAGE) Enter your numbers to see the result. -
PSZ-040 components/tools/position-size/PositionSizeCalculator.tsx:387 (PositionSizeCalculator) Your numbers -
PSZ-041 components/tools/position-size/PositionSizeCalculator.tsx:394 (PositionSizeCalculator) The numbers in this link could not be read, so the fields are empty. -
PSZ-042 components/tools/position-size/PositionSizeCalculator.tsx:399 (PositionSizeCalculator) Example numbers are loaded. Change any field to use your own. -
PSZ-043 components/tools/position-size/PositionSizeCalculator.tsx:407 (PositionSizeCalculator @label) Account size (USD) G6
PSZ-044 components/tools/position-size/PositionSizeCalculator.tsx:409 (PositionSizeCalculator @hint) Total account value in dollars. -
PSZ-045 components/tools/position-size/PositionSizeCalculator.tsx:419 (PositionSizeCalculator @label) Risk percent (%) G6
PSZ-046 components/tools/position-size/PositionSizeCalculator.tsx:421 (PositionSizeCalculator @hint) Percent of the account set as the loss at the stop. Your own number; the calculator suggests none. G5, G6
PSZ-047 components/tools/position-size/PositionSizeCalculator.tsx:430 (PositionSizeCalculator @legend) Direction -
PSZ-048 components/tools/position-size/PositionSizeCalculator.tsx:441 (PositionSizeCalculator @label) Entry price (USD) -
PSZ-049 components/tools/position-size/PositionSizeCalculator.tsx:451 (PositionSizeCalculator @label) Stop price (USD) G6
PSZ-050 components/tools/position-size/PositionSizeCalculator.tsx:453 (PositionSizeCalculator @hint) Long: below entry. Short: above entry. -
PSZ-051 components/tools/position-size/PositionSizeCalculator.tsx:464 (PositionSizeCalculator @label) Target price (USD) -
PSZ-052 components/tools/position-size/PositionSizeCalculator.tsx:467 (PositionSizeCalculator @hint) Adds the R multiple to the result. -
PSZ-053 components/tools/position-size/PositionSizeCalculator.tsx:475 (PositionSizeCalculator @legend) Units -
PSZ-054 components/tools/position-size/PositionSizeCalculator.tsx:479 (PositionSizeCalculator @hint) Contracts mode multiplies the per-unit distance and the position value by 100. -
PSZ-055 components/tools/position-size/PositionSizeCalculator.tsx:486 (PositionSizeCalculator) Reset -
PSZ-056 components/tools/position-size/PositionSizeCalculator.tsx:495 (PositionSizeCalculator) Result -
PSZ-057 components/tools/position-size/PositionSizeCalculator.tsx:498 (PositionSizeCalculator) Example numbers -
PSZ-058 components/tools/position-size/PositionSizeCalculator.tsx:511 (PositionSizeCalculator) Loading calculator. -
PSZ-059 components/tools/position-size/PositionSizeCalculator.tsx:525 (PositionSizeCalculator) Loading calculator -
PSZ-060 components/tools/position-size/PositionSizeCalculator.tsx:552 (ResultBody) Use example numbers -
PSZ-061 components/tools/position-size/PositionSizeCalculator.tsx:562 (ResultBody) Waiting for: -
PSZ-062 components/tools/position-size/PositionSizeCalculator.tsx:573 (ResultBody) The result appears when -
PSZ-063 components/tools/position-size/PositionSizeCalculator.tsx:601 (ResultBody) Dollar risk -
PSZ-064 components/tools/position-size/PositionSizeCalculator.tsx:605 (ResultBody) Position value -
PSZ-065 components/tools/position-size/PositionSizeCalculator.tsx:609 (ResultBody) Percent of account -
PSZ-066 components/tools/position-size/PositionSizeCalculator.tsx:614 (ResultBody) R multiple at target -
PSZ-067 components/tools/position-size/PositionSizeCalculator.tsx:631 (ResultBody) Show the arithmetic -
PSZ-068 lib/tools/positionSize.ts:65 (FIELD_LABELS.account) Account size G6
PSZ-069 lib/tools/positionSize.ts:66 (FIELD_LABELS.risk) Risk percent G6
PSZ-070 lib/tools/positionSize.ts:67 (FIELD_LABELS.entry) Entry price -
PSZ-071 lib/tools/positionSize.ts:68 (FIELD_LABELS.stop) Stop price G6
PSZ-072 lib/tools/positionSize.ts:69 (FIELD_LABELS.target) Target price -
PSZ-073 lib/tools/positionSize.ts:74 (FIELD_NOUNS.account) account size G6
PSZ-074 lib/tools/positionSize.ts:75 (FIELD_NOUNS.risk) risk percent G6
PSZ-075 lib/tools/positionSize.ts:76 (FIELD_NOUNS.entry) entry price -
PSZ-076 lib/tools/positionSize.ts:77 (FIELD_NOUNS.stop) stop price G6
PSZ-077 lib/tools/positionSize.ts:78 (FIELD_NOUNS.target) target price -
PSZ-078 lib/tools/positionSize.ts:363 (unitTitle) Contracts -
PSZ-079 lib/tools/positionSize.ts:363 (unitTitle) Shares -
PSZ-080 lib/tools/positionSize.ts:605 (evaluatePositionSize.problem.message) Enter a number, like 100 or 100.25. -

Rendered samples for Position size calculator (produced by calling the real library functions on the page's own golden examples and edge cases; these are the sentences assembled at run time from the fragments above).

ID Case Rendered text Touches
PSZS-001 example long: arithmetic step 1 Dollar risk = 10,000.00 x 0.75% = 75.00 -
PSZS-002 example long: arithmetic step 2 Risk per share = \|100.00 - 97.50\| = 2.50 -
PSZS-003 example long: arithmetic step 3 Shares = 75.00 / 2.50 = 30.00, rounded down to 30 -
PSZS-004 example long: arithmetic step 4 Position value = 30 x 100.00 = 3,000.00 -
PSZS-005 example long: arithmetic step 5 Percent of account = 3,000.00 / 10,000.00 = 30.00% -
PSZS-006 example long: arithmetic step 6 R multiple = (110.00 - 100.00) / 2.50 = 4.00 -
PSZS-007 example long: spoken result Result: 30 shares. Dollar risk 75.00 dollars. Position value 3,000.00 dollars, 30.00 percent of account. R multiple 4.00. -
PSZS-008 example short: arithmetic step 1 Dollar risk = 25,000.00 x 0.50% = 125.00 -
PSZS-009 example short: arithmetic step 2 Risk per contract = \|3.20 - 4.00\| x 100 = 80.00 -
PSZS-010 example short: arithmetic step 3 Contracts = 125.00 / 80.00 = 1.56, rounded down to 1 -
PSZS-011 example short: arithmetic step 4 Position value = 1 x 3.20 x 100 = 320.00 -
PSZS-012 example short: arithmetic step 5 Percent of account = 320.00 / 25,000.00 = 1.28% -
PSZS-013 example short: arithmetic step 6 R multiple = (3.20 - 1.60) / 0.80 = 2.00 -
PSZS-014 example short: spoken result Result: 1 contract. Dollar risk 125.00 dollars. Position value 320.00 dollars, 1.28 percent of account. R multiple 2.00. -
PSZS-015 zero shares: arithmetic step 1 Dollar risk = 1,000.00 x 0.50% = 5.00 -
PSZS-016 zero shares: arithmetic step 2 Risk per share = \|250.00 - 200.00\| = 50.00 -
PSZS-017 zero shares: arithmetic step 3 Shares = 5.00 / 50.00 = 0.10, rounded down to 0 -
PSZS-018 zero shares: arithmetic step 4 Position value = 0 x 250.00 = 0.00 -
PSZS-019 zero shares: arithmetic step 5 Percent of account = 0.00 / 1,000.00 = 0.00% -
PSZS-020 zero shares: note 1 Dollar risk 5.00 is smaller than the risk on one share (50.00), so the rounded-down count is 0. -
PSZS-021 zero shares: spoken result Result: 0 shares. Dollar risk 5.00 dollars. Position value 0.00 dollars, 0.00 percent of account. -
PSZS-022 position above account: arithmetic step 1 Dollar risk = 1,000.00 x 5.00% = 50.00 -
PSZS-023 position above account: arithmetic step 2 Risk per share = \|100.00 - 99.00\| = 1.00 -
PSZS-024 position above account: arithmetic step 3 Shares = 50.00 / 1.00 = 50.00, rounded down to 50 -
PSZS-025 position above account: arithmetic step 4 Position value = 50 x 100.00 = 5,000.00 -
PSZS-026 position above account: arithmetic step 5 Percent of account = 5,000.00 / 1,000.00 = 500.00% -
PSZS-027 position above account: note 1 Position value is larger than the account size entered. G6
PSZS-028 position above account: spoken result Result: 50 shares. Dollar risk 50.00 dollars. Position value 5,000.00 dollars, 500.00 percent of account. -
PSZS-029 target on loss side: arithmetic step 1 Dollar risk = 10,000.00 x 1.00% = 100.00 -
PSZS-030 target on loss side: arithmetic step 2 Risk per share = \|100.00 - 95.00\| = 5.00 -
PSZS-031 target on loss side: arithmetic step 3 Shares = 100.00 / 5.00 = 20.00, rounded down to 20 -
PSZS-032 target on loss side: arithmetic step 4 Position value = 20 x 100.00 = 2,000.00 -
PSZS-033 target on loss side: arithmetic step 5 Percent of account = 2,000.00 / 10,000.00 = 20.00% -
PSZS-034 target on loss side: arithmetic step 6 R multiple = (90.00 - 100.00) / 5.00 = -2.00 -
PSZS-035 target on loss side: note 1 For a long position the target sits above entry. This target is below entry, so the R multiple is negative. -
PSZS-036 target on loss side: spoken result Result: 20 shares. Dollar risk 100.00 dollars. Position value 2,000.00 dollars, 20.00 percent of account. R multiple -2.00. -
PSZS-037 stop equals entry: state=invalid [{"field":"stop","reason":"invalid","message":"Stop and entry are the same price, so the risk per share is zero. Enter a different stop."}] G6
PSZS-038 stop wrong side (long): state=invalid [{"field":"stop","reason":"invalid","message":"For a long position the stop sits below entry. Stop 105.00 is above entry 100.00."}] G6
PSZS-039 stop wrong side (short): state=invalid [{"field":"stop","reason":"invalid","message":"For a short position the stop sits above entry. Stop 95.00 is below entry 100.00."}] G6
PSZS-040 empty fields: state=initial [{"field":"account","reason":"empty","message":"Enter an account size."},{"field":"risk","reason":"empty","message":"Enter a risk percent."},{"field":"entry","reason":"empty","message":"Enter an entry price."},{"field":"stop","reason":"empty","message":"Enter a stop price."}] G6
PSZS-041 bad number: state=invalid [{"field":"account","reason":"invalid","message":"Enter a number, like 100 or 100.25."}] -
PSZS-042 risk over 100: state=invalid [{"field":"risk","reason":"invalid","message":"Enter a percent above 0 and up to 100."}] -
PSZS-043 attentionText(1) 1 field needs attention. -
PSZS-044 attentionText(3) 3 fields need attention. -
PSZS-045 primaryLabel(shares) Shares (rounded down) -
PSZS-046 primaryLabel(contracts) Contracts (rounded down) -
PSZS-047 status line while fields need fixing Waiting for: <field names>. The result appears when it is fixed. / when they are fixed. -
PSZS-048 target equals entry (account 10,000, risk 1%, entry 100, stop 95, target 100): arithmetic step 6 R multiple = (100.00 - 100.00) / 5.00 = 0.00 -
PSZS-049 target equals entry: note 1 The target equals entry, so the R multiple is zero. -
PSZS-050 target equals entry: spoken result Result: 20 shares. Dollar risk 100.00 dollars. Position value 2,000.00 dollars, 20.00 percent of account. R multiple 0.00. -
PSZS-051 display limit (account 1,000,000,000,000, risk 100%, entry 1,000, stop 999): arithmetic step 4 Position value = 1,000,000,000,000 x 1,000.00 = Over 1,000,000,000,000 -
PSZS-052 display limit: arithmetic step 5 Percent of account = Over 1,000,000,000,000 / 1,000,000,000,000.00 = 100,000.00% -
PSZS-053 display limit: note 1 Position value is larger than the account size entered. G6
PSZS-054 display limit: note 2 A result is larger than the display limit of 1,000,000,000,000. Check the numbers entered. -
PSZS-055 display limit: spoken result Result: 1,000,000,000,000 shares. Dollar risk 1,000,000,000,000.00 dollars. Position value Over 1,000,000,000,000 dollars, 100,000.00 percent of account. -
PSZS-056 target on loss side, short position (account 10,000, risk 1%, entry 100, stop 105, target 110): note 1 For a short position the target sits below entry. This target is above entry, so the R multiple is negative. -

B5. Options payoff calculator (includes the call spread section)

ID Location (file:line, context) String as written in source Touches
OPT-001 components/tools/OptionsPayoffSections.tsx:33 (OPTIONS_PAYOFF_LEDE) Chart profit and loss at expiration for a long call, long put, bull call spread or bear put spread. Enter strikes, premiums and contracts to see max gain, max loss and breakevens. -
OPT-002 components/tools/OptionsPayoffSections.tsx:37 (OPTIONS_PAYOFF_FAQ.question) What does a payoff chart show? -
OPT-003 components/tools/OptionsPayoffSections.tsx:39 (OPTIONS_PAYOFF_FAQ.answer) Profit or loss at each underlying price on the expiration date, worked out from the strikes, premiums and contracts entered. The chart covers expiration only; it does not model the period before expiration. -
OPT-004 components/tools/OptionsPayoffSections.tsx:42 (OPTIONS_PAYOFF_FAQ.question) How is the breakeven of a call spread found? -
OPT-005 components/tools/OptionsPayoffSections.tsx:44 (OPTIONS_PAYOFF_FAQ.answer) Long strike plus the net debit per share. With a long strike of 100 and a net debit of 2.50, the breakeven is 102.50, the price at which the spread's value at expiration equals what was paid for it. -
OPT-006 components/tools/OptionsPayoffSections.tsx:47 (OPTIONS_PAYOFF_FAQ.question) Why does a long call show no upper limit on max gain? -
OPT-007 components/tools/OptionsPayoffSections.tsx:49 (OPTIONS_PAYOFF_FAQ.answer) A call's value at expiration rises with the underlying price and the formula has no ceiling, so the arithmetic has no maximum. The chart draws only the price range shown on its axis. -
OPT-008 components/tools/OptionsPayoffSections.tsx:59 (OptionsPayoffMethod.term @terms) Max gain / max loss -
OPT-009 components/tools/OptionsPayoffSections.tsx:60 (OptionsPayoffMethod.definition @terms) The highest and lowest profit or loss across every underlying price at expiration. -
OPT-010 components/tools/OptionsPayoffSections.tsx:63 (OptionsPayoffMethod.term @terms) Breakeven -
OPT-011 components/tools/OptionsPayoffSections.tsx:64 (OptionsPayoffMethod.definition @terms) The underlying price at expiration where profit or loss is zero. -
OPT-012 components/tools/OptionsPayoffSections.tsx:67 (OptionsPayoffMethod.term @terms) Net debit -
OPT-013 components/tools/OptionsPayoffSections.tsx:68 (OptionsPayoffMethod.definition @terms) Premium paid minus premium received, x 100 x contracts. -
OPT-014 components/tools/OptionsPayoffSections.tsx:73 (OptionsPayoffMethod) At expiration a call is worth max(price - strike, 0) per share and a put is worth max(strike - price, 0). Profit or loss = value at expiration - premium paid, x 100 x contracts. A spread adds a long and a short option; net debit = long premium - short premium. This is arithmetic on the numbers you enter; it isn't a recommendation. Fees are not included. G5
OPT-015 components/tools/OptionsPayoffSections.tsx:90 (CallSpreadSection) Call spread calculator -
OPT-016 components/tools/OptionsPayoffSections.tsx:93 (CallSpreadSection) A bull call spread combines a long call at a lower strike with a short call at a higher strike, same expiration. The net debit is the long premium minus the short premium. Max loss is that net debit. Max gain is the strike width minus the net debit. The breakeven is the long strike plus the net debit per share. -
OPT-017 components/tools/OptionsPayoffSections.tsx:100 (CallSpreadSection @label) Open the bull call spread in the calculator -
OPT-018 components/tools/OptionsPayoffSections.tsx:127 (exampleCards.title) Bull call spread -
OPT-019 components/tools/OptionsPayoffSections.tsx:129 (exampleCards.entered.label) Long call -
OPT-020 components/tools/OptionsPayoffSections.tsx:130 (exampleCards.entered.label) Short call -
OPT-021 components/tools/OptionsPayoffSections.tsx:131 (exampleCards.entered.label) Contracts -
OPT-022 components/tools/OptionsPayoffSections.tsx:138 (exampleCards.entered.label) Strike / premium -
OPT-023 components/tools/OptionsPayoffSections.tsx:149 (OptionsPayoffExamples) Examples -
OPT-024 components/tools/OptionsPayoffSections.tsx:160 (OptionsPayoffExamples) Numbers entered -
OPT-025 components/tools/OptionsPayoffSections.tsx:169 (OptionsPayoffExamples) Result -
OPT-026 components/tools/OptionsPayoffSections.tsx:172 (OptionsPayoffExamples) Max gain -
OPT-027 components/tools/OptionsPayoffSections.tsx:176 (OptionsPayoffExamples) Max loss -
OPT-028 components/tools/OptionsPayoffSections.tsx:188 (OptionsPayoffExamples @label) Load these numbers -
OPT-029 components/tools/OptionsPayoffCalculator.tsx:70 (UNREADABLE_LINK_NOTE) The numbers in this link could not be read, so the fields are empty. -
OPT-030 components/tools/OptionsPayoffCalculator.tsx:429 (OptionsPayoffCalculator) Your numbers -
OPT-031 components/tools/OptionsPayoffCalculator.tsx:437 (OptionsPayoffCalculator) Example numbers are loaded. Change any field to use your own. -
OPT-032 components/tools/OptionsPayoffCalculator.tsx:448 (OptionsPayoffCalculator) Strategy -
OPT-033 components/tools/OptionsPayoffCalculator.tsx:484 (OptionsPayoffCalculator) (optional) -
OPT-034 components/tools/OptionsPayoffCalculator.tsx:529 (OptionsPayoffCalculator) Reset -
OPT-035 components/tools/OptionsPayoffCalculator.tsx:543 (OptionsPayoffCalculator) Result -
OPT-036 components/tools/OptionsPayoffCalculator.tsx:545 (OptionsPayoffCalculator) Example numbers -
OPT-037 components/tools/OptionsPayoffCalculator.tsx:557 (OptionsPayoffCalculator) Loading calculator. -
OPT-038 components/tools/OptionsPayoffCalculator.tsx:563 (OptionsPayoffCalculator) Enter your numbers to see the result. -
OPT-039 components/tools/OptionsPayoffCalculator.tsx:565 (OptionsPayoffCalculator) Use example numbers -
OPT-040 components/tools/OptionsPayoffCalculator.tsx:573 (OptionsPayoffCalculator) Waiting for: -
OPT-041 components/tools/OptionsPayoffCalculator.tsx:591 (OptionsPayoffCalculator) The result appears when -
OPT-042 components/tools/OptionsPayoffCalculator.tsx:616 (OptionsPayoffCalculator) Max gain -
OPT-043 components/tools/OptionsPayoffCalculator.tsx:626 (OptionsPayoffCalculator) Max loss -
OPT-044 components/tools/OptionsPayoffCalculator.tsx:635 (OptionsPayoffCalculator) Breakeven (XYZ price at expiration) G4
OPT-045 components/tools/OptionsPayoffCalculator.tsx:639 (OptionsPayoffCalculator) Net debit -
OPT-046 components/tools/OptionsPayoffCalculator.tsx:670 (OptionsPayoffCalculator) Show the arithmetic -
OPT-047 components/tools/OptionsPayoffCalculator.tsx:683 (OptionsPayoffCalculator) Loading calculator -
OPT-048 components/tools/PayoffChart.tsx:47 (KEYS_HELP) With the chart focused, Left and Right arrow keys move the cursor one step; Page Up and Page Down move ten steps; Home and End jump to the ends. -
OPT-049 components/tools/PayoffChart.tsx:141 (PayoffChart @aria-label) XYZ price at expiration G4
OPT-050 components/tools/PayoffChart.tsx:234 (PayoffChart) Profit -
OPT-051 components/tools/PayoffChart.tsx:241 (PayoffChart) Loss -
OPT-052 components/tools/PayoffChart.tsx:247 (PayoffChart) Breakeven -
OPT-053 components/tools/PayoffChart.tsx:251 (PayoffChart) Show the chart as a table -
OPT-054 components/tools/PayoffChart.tsx:253 (PayoffChart) Profit or loss at expiration -
OPT-055 components/tools/PayoffChart.tsx:256 (PayoffChart) Price at expiration -
OPT-056 components/tools/PayoffChart.tsx:257 (PayoffChart) Profit or loss -
OPT-057 lib/tools/optionsPayoff.ts:62 (STRATEGIES.label) Long call -
OPT-058 lib/tools/optionsPayoff.ts:62 (STRATEGIES.noun) long call -
OPT-059 lib/tools/optionsPayoff.ts:63 (STRATEGIES.label) Long put -
OPT-060 lib/tools/optionsPayoff.ts:63 (STRATEGIES.noun) long put -
OPT-061 lib/tools/optionsPayoff.ts:64 (STRATEGIES.label) Bull call spread -
OPT-062 lib/tools/optionsPayoff.ts:64 (STRATEGIES.noun) bull call spread -
OPT-063 lib/tools/optionsPayoff.ts:65 (STRATEGIES.label) Bear put spread -
OPT-064 lib/tools/optionsPayoff.ts:65 (STRATEGIES.noun) bear put spread -
OPT-065 lib/tools/optionsPayoff.ts:116 (PER_SHARE) Per share. -
OPT-066 lib/tools/optionsPayoff.ts:117 (CONTRACTS_HINT) Whole number. One contract is 100 shares. -
OPT-067 lib/tools/optionsPayoff.ts:118 (MARKER_HINT) Adds a marker and the profit or loss at that price. -
OPT-068 lib/tools/optionsPayoff.ts:273 (MSG_PREMIUM) Enter zero or a positive premium. -
OPT-069 lib/tools/optionsPayoff.ts:274 (MSG_CONTRACTS) Enter a whole number of contracts, 1 or more. -
OPT-070 lib/tools/optionsPayoff.ts:275 (MSG_EQUAL) Strikes can't be equal. A spread needs two different strikes. -
OPT-071 lib/tools/optionsPayoff.ts:277 (MSG_CREDIT) The short premium is higher than the long premium, which makes this a net credit. This calculator covers net debit spreads only. -
OPT-072 lib/tools/optionsPayoff.ts:278 (MSG_CREDIT_SUMMARY) The short premium is higher than the long premium, so this is a net credit. -
OPT-073 lib/tools/optionsPayoff.ts:282 (inverted) For a bull call spread the long call strike must be below the short call strike. -
OPT-074 lib/tools/optionsPayoff.ts:283 (inverted) For a bear put spread the long put strike must be above the short put strike. -
OPT-075 lib/tools/payoffChart.ts:299 (buildChartModel.raw.text) Long -
OPT-076 lib/tools/payoffChart.ts:299 (buildChartModel.raw.text) Short -
OPT-077 lib/tools/payoffChart.ts:299 (buildChartModel.raw.text) Strike -
OPT-078 lib/tools/payoffChart.ts:361 (tableRows) XYZ marker G4

Rendered samples for Options payoff calculator (includes the call spread section) (produced by calling the real library functions on the page's own golden examples and edge cases; these are the sentences assembled at run time from the fragments above).

ID Case Rendered text Touches
OPTS-001 example bull_call: arithmetic step 1 Net debit per share = 4.00 - 1.50 = 2.50 -
OPTS-002 example bull_call: arithmetic step 2 Net debit = 2.50 x 100 x 1 = 250.00 -
OPTS-003 example bull_call: arithmetic step 3 Strike width = \|110.00 - 100.00\| = 10.00 -
OPTS-004 example bull_call: arithmetic step 4 Max gain = (10.00 - 2.50) x 100 x 1 = 750.00 -
OPTS-005 example bull_call: arithmetic step 5 Max loss = net debit = 250.00 -
OPTS-006 example bull_call: arithmetic step 6 Breakeven = long strike + net debit per share = 100.00 + 2.50 = 102.50 -
OPTS-007 example bull_call: maxGain $750.00 -
OPTS-008 example bull_call: maxLoss -$250.00 -
OPTS-009 example bull_call: breakeven 102.50 -
OPTS-010 example bull_call: netDebit detail 2.50 per share x 100 x 1 contract -
OPTS-011 example bull_call: marker label Profit or loss at XYZ 106.00 G4
OPTS-012 example bull_call: spoken result Result: max loss 250.00 dollars; max gain 750.00 dollars; breakeven 102.50; net debit 250.00 dollars. -
OPTS-013 example bull_call: chart summary Payoff at expiration for a bull call spread, 1 contract. Maximum loss 250.00 dollars. Maximum gain 750.00 dollars. Breakeven at 102.50. -
OPTS-014 example long_call: arithmetic step 1 Net debit = 3.50 x 100 x 2 = 700.00 -
OPTS-015 example long_call: arithmetic step 2 Max loss = net debit = 700.00 -
OPTS-016 example long_call: arithmetic step 3 Breakeven = strike + premium = 100.00 + 3.50 = 103.50 -
OPTS-017 example long_call: arithmetic step 4 Max gain: a call has no ceiling at expiration, so there is no maximum -
OPTS-018 example long_call: maxGain No upper limit -
OPTS-019 example long_call: maxLoss -$700.00 -
OPTS-020 example long_call: breakeven 103.50 -
OPTS-021 example long_call: netDebit detail 3.50 per share x 100 x 2 contracts -
OPTS-022 example long_call: spoken result Result: max loss 700.00 dollars; no upper limit on max gain; breakeven 103.50; net debit 700.00 dollars. -
OPTS-023 example long_call: chart summary Payoff at expiration for a long call, 2 contracts. Maximum loss 700.00 dollars. Maximum gain has no upper limit. Breakeven at 103.50. -
OPTS-024 example long_put: arithmetic step 1 Net debit = 2.80 x 100 x 1 = 280.00 -
OPTS-025 example long_put: arithmetic step 2 Max loss = net debit = 280.00 -
OPTS-026 example long_put: arithmetic step 3 Breakeven = strike - premium = 100.00 - 2.80 = 97.20 -
OPTS-027 example long_put: arithmetic step 4 Max gain = (strike - premium) x 100 x contracts = (100.00 - 2.80) x 100 x 1 = 9,720.00 -
OPTS-028 example long_put: note 1 Long put max gain assumes XYZ finishes at 0. G4
OPTS-029 example long_put: maxGain $9,720.00 -
OPTS-030 example long_put: maxLoss -$280.00 -
OPTS-031 example long_put: breakeven 97.20 -
OPTS-032 example long_put: netDebit detail 2.80 per share x 100 x 1 contract -
OPTS-033 example long_put: marker label Profit or loss at XYZ 95.00 G4
OPTS-034 example long_put: spoken result Result: max loss 280.00 dollars; max gain 9,720.00 dollars; breakeven 97.20; net debit 280.00 dollars. -
OPTS-035 example long_put: chart summary Payoff at expiration for a long put, 1 contract. Maximum loss 280.00 dollars. Maximum gain 9,720.00 dollars. Breakeven at 97.20. -
OPTS-036 example bear_put: arithmetic step 1 Net debit per share = 4.20 - 1.70 = 2.50 -
OPTS-037 example bear_put: arithmetic step 2 Net debit = 2.50 x 100 x 1 = 250.00 -
OPTS-038 example bear_put: arithmetic step 3 Strike width = \|100.00 - 110.00\| = 10.00 -
OPTS-039 example bear_put: arithmetic step 4 Max gain = (10.00 - 2.50) x 100 x 1 = 750.00 -
OPTS-040 example bear_put: arithmetic step 5 Max loss = net debit = 250.00 -
OPTS-041 example bear_put: arithmetic step 6 Breakeven = long strike - net debit per share = 110.00 - 2.50 = 107.50 -
OPTS-042 example bear_put: maxGain $750.00 -
OPTS-043 example bear_put: maxLoss -$250.00 -
OPTS-044 example bear_put: breakeven 107.50 -
OPTS-045 example bear_put: netDebit detail 2.50 per share x 100 x 1 contract -
OPTS-046 example bear_put: spoken result Result: max loss 250.00 dollars; max gain 750.00 dollars; breakeven 107.50; net debit 250.00 dollars. -
OPTS-047 example bear_put: chart summary Payoff at expiration for a bear put spread, 1 contract. Maximum loss 250.00 dollars. Maximum gain 750.00 dollars. Breakeven at 107.50. -
OPTS-048 net credit: validation {"issues":{"short_prem":{"message":"The short premium is higher than the long premium, which makes this a net credit. This calculator covers net debit spreads only.","summary":"The short premium is higher than the long premium, so this is a net credit.","empty":false}},"inputs":null} -
OPTS-049 equal strikes: validation {"issues":{"short_strike":{"message":"Strikes can't be equal. A spread needs two different strikes.","summary":"Strikes can't be equal. A spread needs two different strikes.","empty":false}},"inputs":null} -
OPTS-050 inverted strikes (bull call): validation {"issues":{"long_strike":{"message":"For a bull call spread the long call strike must be below the short call strike.","summary":"For a bull call spread the long call strike must be below the short call strike.","empty":false}},"inputs":null} -
OPTS-051 inverted strikes (bear put): validation {"issues":{"long_strike":{"message":"For a bear put spread the long put strike must be above the short put strike.","summary":"For a bear put spread the long put strike must be above the short put strike.","empty":false}},"inputs":null} -
OPTS-052 net debit above width: arithmetic step 1 Net debit per share = 12.00 - 1.50 = 10.50 -
OPTS-053 net debit above width: arithmetic step 2 Net debit = 10.50 x 100 x 1 = 1,050.00 -
OPTS-054 net debit above width: arithmetic step 3 Strike width = \|110.00 - 100.00\| = 10.00 -
OPTS-055 net debit above width: arithmetic step 4 Max gain = (10.00 - 10.50) x 100 x 1 = -50.00 -
OPTS-056 net debit above width: arithmetic step 5 Max loss = net debit = 1,050.00 -
OPTS-057 net debit above width: arithmetic step 6 Breakeven = long strike + net debit per share = 100.00 + 10.50 = 110.50, which is past the short strike, so the payoff never reaches zero -
OPTS-058 net debit above width: note 1 Net debit is above the strike width, so the maximum result at expiration is a loss and the payoff never reaches zero. There is no breakeven point. -
OPTS-059 net debit above width: maxGain -$50.00 -
OPTS-060 net debit above width: maxLoss -$1,050.00 -
OPTS-061 net debit above width: breakeven Not defined: the payoff never reaches zero -
OPTS-062 net debit above width: netDebit detail 10.50 per share x 100 x 1 contract -
OPTS-063 net debit above width: marker label Profit or loss at XYZ 106.00 G4
OPTS-064 net debit above width: spoken result Result: max loss 1,050.00 dollars; max gain -50.00 dollars; no breakeven point; net debit 1,050.00 dollars. -
OPTS-065 net debit above width: chart summary Payoff at expiration for a bull call spread, 1 contract. Maximum loss 1,050.00 dollars. Maximum gain -50.00 dollars. No breakeven point. -
OPTS-066 zero premium: arithmetic step 1 Net debit = 0.00 x 100 x 2 = 0.00 -
OPTS-067 zero premium: arithmetic step 2 Max loss = net debit = 0.00 -
OPTS-068 zero premium: arithmetic step 3 Breakeven = strike + premium = 100.00 + 0.00 = 100.00 -
OPTS-069 zero premium: arithmetic step 4 Max gain: a call has no ceiling at expiration, so there is no maximum -
OPTS-070 zero premium: note 1 Premium is 0, so the net debit and max loss are 0. -
OPTS-071 zero premium: maxGain No upper limit -
OPTS-072 zero premium: maxLoss $0.00 -
OPTS-073 zero premium: breakeven 100.00 -
OPTS-074 zero premium: netDebit detail 0.00 per share x 100 x 2 contracts -
OPTS-075 zero premium: spoken result Result: max loss 0.00 dollars; no upper limit on max gain; breakeven 100.00; net debit 0.00 dollars. -
OPTS-076 zero premium: chart summary Payoff at expiration for a long call, 2 contracts. Maximum loss 0.00 dollars. Maximum gain has no upper limit. Breakeven at 100.00. -
OPTS-077 bad contracts: validation {"issues":{"contracts":{"message":"Enter a whole number of contracts, 1 or more.","summary":"Enter a whole number of contracts, 1 or more.","empty":false}},"inputs":null} -
OPTS-078 field (long_call) long_strike: label Strike price (USD) -
OPTS-079 field (long_call) long_prem: label Premium paid per share (USD) -
OPTS-080 field (long_call) long_prem: hint Price of the call per share. One contract is 100 shares. -
OPTS-081 field (long_call) contracts: label Contracts -
OPTS-082 field (long_call) contracts: hint Whole number. One contract is 100 shares. -
OPTS-083 field (long_call) marker: label XYZ price marker (USD) G4
OPTS-084 field (long_call) marker: hint Adds a marker and the profit or loss at that price. -
OPTS-085 field (long_put) long_strike: label Strike price (USD) -
OPTS-086 field (long_put) long_prem: label Premium paid per share (USD) -
OPTS-087 field (long_put) long_prem: hint Price of the put per share. One contract is 100 shares. -
OPTS-088 field (long_put) contracts: label Contracts -
OPTS-089 field (long_put) contracts: hint Whole number. One contract is 100 shares. -
OPTS-090 field (long_put) marker: label XYZ price marker (USD) G4
OPTS-091 field (long_put) marker: hint Adds a marker and the profit or loss at that price. -
OPTS-092 field (bull_call) long_strike: label Long call strike (lower strike) (USD) -
OPTS-093 field (bull_call) long_prem: label Long call premium paid (USD) -
OPTS-094 field (bull_call) long_prem: hint Per share. -
OPTS-095 field (bull_call) short_strike: label Short call strike (higher strike) (USD) -
OPTS-096 field (bull_call) short_prem: label Short call premium received (USD) -
OPTS-097 field (bull_call) short_prem: hint Per share. -
OPTS-098 field (bull_call) contracts: label Contracts -
OPTS-099 field (bull_call) contracts: hint Whole number. One contract is 100 shares. -
OPTS-100 field (bull_call) marker: label XYZ price marker (USD) G4
OPTS-101 field (bull_call) marker: hint Adds a marker and the profit or loss at that price. -
OPTS-102 field (bear_put) long_strike: label Long put strike (higher strike) (USD) -
OPTS-103 field (bear_put) long_prem: label Long put premium paid (USD) -
OPTS-104 field (bear_put) long_prem: hint Per share. -
OPTS-105 field (bear_put) short_strike: label Short put strike (lower strike) (USD) -
OPTS-106 field (bear_put) short_prem: label Short put premium received (USD) -
OPTS-107 field (bear_put) short_prem: hint Per share. -
OPTS-108 field (bear_put) contracts: label Contracts -
OPTS-109 field (bear_put) contracts: hint Whole number. One contract is 100 shares. -
OPTS-110 field (bear_put) marker: label XYZ price marker (USD) G4
OPTS-111 field (bear_put) marker: hint Adds a marker and the profit or loss at that price. -
OPTS-112 status line while fields need fixing Waiting for: <field names>. The result appears when it is fixed. / when they are fixed. -
OPTS-113 bull call spread, equal premiums (strikes 100 and 110, premiums 2.00 and 2.00): note 1 The long and short premiums are equal, so the net debit and max loss are 0. -
OPTS-114 bull call spread, net debit equals the strike width (strikes 100 and 110, premiums 11.50 and 1.50): note 1 Net debit equals the strike width, so the maximum result at expiration is 0. -
OPTS-115 display limit (long call, strike 100, premium 1,000,000,000,000, 1,000,000,000,000 contracts): arithmetic step 1 Net debit = 1,000,000,000,000.00 x 100 x 1,000,000,000,000 = Over 1,000,000,000,000 -
OPTS-116 display limit: note 1 A result is larger than the display limit of 1,000,000,000,000. Check the numbers entered. -
OPTS-117 display limit: maxLoss Below -1,000,000,000,000 -
OPTS-118 display limit: breakeven Over 1,000,000,000,000 -
OPTS-119 display limit: spoken result Result: max loss Over 1,000,000,000,000 dollars; no upper limit on max gain; breakeven Over 1,000,000,000,000; net debit Over 1,000,000,000,000 dollars. -
OPTS-120 long put, premium above the strike (strike 5.00, premium 6.00): arithmetic step 3 Breakeven: not defined, the payoff never reaches zero -
OPTS-121 unbounded loss (optionsPayoff.ts:608; a branch in the code that none of the four strategies on the page reaches, because each has a finite maximum loss; read from source, not produced by a call): chart summary Maximum loss has no lower limit. -
OPTS-122 unbounded loss (optionsPayoff.ts:600, same branch): spoken result fragment no lower limit on max loss -
OPTS-123 unbounded loss (optionsPayoff.ts:620, same branch): maxLoss No lower limit -
OPTS-124 chart cursor readout, profit form (example bull_call, cursor at the 106 marker, which is where the cursor starts). cursorSentence, optionsPayoff.ts:581-585. Drawn as the visible bold text in .tl-readout (PayoffChart.tsx:132, the paragraph is aria-hidden) and read aloud as the slider's aria-valuetext (PayoffChart.tsx:145). The visitor can move the cursor to any price on the axis, so this sentence and the next two are templates filled with whatever price and result the cursor is on XYZ 106.00 at expiration: profit 350.00 dollars G2, G4
OPTS-125 chart cursor readout, loss form (same example, cursor moved to 90) XYZ 90.00 at expiration: loss 250.00 dollars G2, G4
OPTS-126 chart cursor readout, breakeven form (same example, cursor moved to 102.50; used when the result rounds to zero) XYZ 102.50 at expiration: breakeven, 0 dollars G2, G4

B6. Risk of ruin calculator

ID Location (file:line, context) String as written in source Touches
ROR-001 app/tools/risk-of-ruin-calculator/page.tsx:44 (RiskOfRuinCalculatorPage) Each path starts at 1.00 of equity. A loss multiplies equity by 1 - risk per trade. A win multiplies it by 1 + risk per trade x (average win / average loss). The maximum drawdown on a path is the largest fall from a prior equity peak. The share shown is the number of paths whose maximum drawdown reaches your threshold, divided by the number of paths. The simulation resamples the numbers you entered; it is not a prediction of results. See how Raxx records trades in the G2, G6
ROR-002 app/tools/risk-of-ruin-calculator/page.tsx:53 (RiskOfRuinCalculatorPage) Assumptions and limits -
ROR-003 app/tools/risk-of-ruin-calculator/page.tsx:64 (RiskOfRuinCalculatorPage) Examples -
ROR-004 app/tools/risk-of-ruin-calculator/page.tsx:69 (RiskOfRuinCalculatorPage) Numbers entered -
ROR-005 app/tools/risk-of-ruin-calculator/page.tsx:72 (RiskOfRuinCalculatorPage) Win rate -
ROR-006 app/tools/risk-of-ruin-calculator/page.tsx:76 (RiskOfRuinCalculatorPage) Average win / loss -
ROR-007 app/tools/risk-of-ruin-calculator/page.tsx:82 (RiskOfRuinCalculatorPage) Risk per trade G6
ROR-008 app/tools/risk-of-ruin-calculator/page.tsx:86 (RiskOfRuinCalculatorPage) Trades / threshold -
ROR-009 app/tools/risk-of-ruin-calculator/page.tsx:92 (RiskOfRuinCalculatorPage) Result -
ROR-010 app/tools/risk-of-ruin-calculator/page.tsx:95 (RiskOfRuinCalculatorPage) Paths at threshold -
ROR-011 app/tools/risk-of-ruin-calculator/page.tsx:99 (RiskOfRuinCalculatorPage) Median max drawdown -
ROR-012 lib/tools/riskOfRuin/content.ts:16 (RUIN_LEDE) Enter a win rate, average win and loss, and risk per trade. The simulation resamples those numbers and shows how maximum drawdown is distributed. G2, G6
ROR-013 lib/tools/riskOfRuin/content.ts:19 (RUIN_TERMS.term) Win rate -
ROR-014 lib/tools/riskOfRuin/content.ts:19 (RUIN_TERMS.definition) Share of trades that are wins, from the numbers you enter. -
ROR-015 lib/tools/riskOfRuin/content.ts:20 (RUIN_TERMS.term) Payoff ratio -
ROR-016 lib/tools/riskOfRuin/content.ts:20 (RUIN_TERMS.definition) Average win divided by average loss. -
ROR-017 lib/tools/riskOfRuin/content.ts:21 (RUIN_TERMS.term) Maximum drawdown -
ROR-018 lib/tools/riskOfRuin/content.ts:21 (RUIN_TERMS.definition) The largest fall from a prior equity peak on one path. -
ROR-019 lib/tools/riskOfRuin/content.ts:22 (RUIN_TERMS.term) Seed -
ROR-020 lib/tools/riskOfRuin/content.ts:22 (RUIN_TERMS.definition) A number that fixes the random draws, so the same inputs reproduce the same output. -
ROR-021 lib/tools/riskOfRuin/content.ts:27 (RUIN_LIMITS) The win rate and payoff stay constant on every trade. -
ROR-022 lib/tools/riskOfRuin/content.ts:28 (RUIN_LIMITS) Trades are independent of each other. -
ROR-023 lib/tools/riskOfRuin/content.ts:29 (RUIN_LIMITS) Costs, slippage and changes in your own approach are not modelled. -
ROR-024 lib/tools/riskOfRuin/content.ts:30 (RUIN_LIMITS) Real results differ. G2
ROR-025 lib/tools/riskOfRuin/content.ts:37 (RUIN_FAQ.question) What does ruin mean in this calculator? -
ROR-026 lib/tools/riskOfRuin/content.ts:39 (RUIN_FAQ.answer) Ruin is a drawdown threshold you set; 50% is the example value. A simulated path hits it when its equity falls from an earlier peak on that path by at least that percent. G2
ROR-027 lib/tools/riskOfRuin/content.ts:42 (RUIN_FAQ.question) How does the simulation work? G2
ROR-028 lib/tools/riskOfRuin/content.ts:43 (RUIN_FAQ.answer) paths. On each path every trade is a win or a loss drawn with the win rate you entered, and the risk per trade you entered sets how much equity moves. A fixed seed means the same inputs give the same output. G6
ROR-029 lib/tools/riskOfRuin/content.ts:46 (RUIN_FAQ.question) Why can results here differ from real trading? -
ROR-030 lib/tools/riskOfRuin/content.ts:47 (RUIN_FAQ.answer) The simulation assumes a constant win rate and payoff and independent trades. Real results differ. G2
ROR-031 lib/tools/riskOfRuin/summary.ts:29 (RUIN_CAPTION) Simulation of the numbers you entered; not a prediction of results. G2
ROR-032 lib/tools/riskOfRuin/summary.ts:32 (RUIN_REAL_RESULTS_DIFFER) Real results differ. G2
ROR-033 lib/tools/riskOfRuin/summary.ts:36 (RUIN_ASSUMPTIONS) The win rate and the payoff (average win / average loss) are constant on every trade. -
ROR-034 lib/tools/riskOfRuin/summary.ts:37 (RUIN_ASSUMPTIONS) Trades are independent of each other. -
ROR-035 lib/tools/riskOfRuin/summary.ts:38 (RUIN_ASSUMPTIONS) Each loss costs the risk-per-trade percent of current equity; each win gains that percent times the payoff ratio. -
ROR-036 lib/tools/riskOfRuin/summary.ts:39 (RUIN_ASSUMPTIONS) Drawdown is the fall from the highest equity reached so far on that path. -
ROR-037 lib/tools/riskOfRuin/summary.ts:43 (WORKER_FAILURE_MESSAGE) The simulation could not run in this browser. Your numbers were not sent anywhere. Reload the page, or try a current version of your browser. G2, G8
ROR-038 lib/tools/riskOfRuin/inputs.ts:46 (RUIN_FIELDS.name) Win rate -
ROR-039 lib/tools/riskOfRuin/inputs.ts:47 (RUIN_FIELDS.label) Win rate (%) -
ROR-040 lib/tools/riskOfRuin/inputs.ts:50 (RUIN_FIELDS.hint) Share of trades that are wins. -
ROR-041 lib/tools/riskOfRuin/inputs.ts:56 (RUIN_FIELDS.name) Average win -
ROR-042 lib/tools/riskOfRuin/inputs.ts:60 (RUIN_FIELDS.hint) Any currency or R units. -
ROR-043 lib/tools/riskOfRuin/inputs.ts:65 (RUIN_FIELDS.name) Average loss -
ROR-044 lib/tools/riskOfRuin/inputs.ts:69 (RUIN_FIELDS.hint) Same units as average win. Only the ratio of the two is used. -
ROR-045 lib/tools/riskOfRuin/inputs.ts:74 (RUIN_FIELDS.name) Risk per trade G6
ROR-046 lib/tools/riskOfRuin/inputs.ts:75 (RUIN_FIELDS.label) Risk per trade (% of equity) G6
ROR-047 lib/tools/riskOfRuin/inputs.ts:78 (RUIN_FIELDS.hint) Each loss costs this percent of current equity. The calculator suggests no value. G5
ROR-048 lib/tools/riskOfRuin/inputs.ts:84 (RUIN_FIELDS.name) Number of trades -
ROR-049 lib/tools/riskOfRuin/inputs.ts:88 (RUIN_FIELDS.hint) Trades on each simulated path. Up to 2,000. G2
ROR-050 lib/tools/riskOfRuin/inputs.ts:90 (RUIN_FIELDS.countMessage) Enter a whole number of trades, 1 or more. -
ROR-051 lib/tools/riskOfRuin/inputs.ts:94 (RUIN_FIELDS.name) Ruin threshold -
ROR-052 lib/tools/riskOfRuin/inputs.ts:95 (RUIN_FIELDS.label) Drawdown that counts as ruin (%) -
ROR-053 lib/tools/riskOfRuin/inputs.ts:98 (RUIN_FIELDS.hint) A fall of this percent from the highest equity on a path. 50 is an example value; change it. -
ROR-054 lib/tools/riskOfRuin/inputs.ts:122 (AVG_LOSS_NOTE) The payoff ratio divides by the average loss. -
ROR-055 lib/tools/riskOfRuin/constants.ts:73 (EXAMPLE_EQUAL.title) Equal win and loss -
ROR-056 lib/tools/riskOfRuin/constants.ts:81 (EXAMPLE_LARGER_WIN.title) Larger win than loss -
ROR-057 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:107 (IDLE_STATUS) Enter your numbers to see the result. -
ROR-058 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:434 (RiskOfRuinCalculator) Your numbers -
ROR-059 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:441 (RiskOfRuinCalculator) The numbers in this link could not be read, so the fields are empty. -
ROR-060 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:447 (RiskOfRuinCalculator) Example numbers are loaded. Change any field to use your own. -
ROR-061 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:459 (RiskOfRuinCalculator) Reset -
ROR-062 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:468 (RiskOfRuinCalculator) Result -
ROR-063 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:470 (RiskOfRuinCalculator) Example numbers -
ROR-064 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:476 (RiskOfRuinCalculator) The result appears when -
ROR-065 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:489 (RiskOfRuinCalculator) Still waiting for: -
ROR-066 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:494 (RiskOfRuinCalculator) Use example numbers -
ROR-067 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:510 (RiskOfRuinCalculator) Waiting for: -
ROR-068 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:528 (RiskOfRuinCalculator) Try again -
ROR-069 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:546 (RiskOfRuinCalculator @aria-label) Simulation progress G2
ROR-070 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:562 (RiskOfRuinCalculator) The page stays usable while this runs. Changing a number restarts the simulation. G2
ROR-071 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:569 (RiskOfRuinCalculator) Given these inputs, in this simulation G2
ROR-072 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:578 (RiskOfRuinCalculator) Median maximum drawdown -
ROR-073 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:582 (RiskOfRuinCalculator) Paths simulated G2
ROR-074 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:586 (RiskOfRuinCalculator) Trades per path -
ROR-075 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:590 (RiskOfRuinCalculator) Seed -
ROR-076 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:599 (RiskOfRuinCalculator) Assumptions -
ROR-077 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:629 (RiskOfRuinCalculator @before) Re-run with a new seed -
ROR-078 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:636 (RiskOfRuinCalculator) Show how each path is built -
ROR-079 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:668 (ClosedFormNote) Closed-form cross-check: -
ROR-080 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:668 (ClosedFormNote) The classic formula applies when average win equals average loss. It is an equal-step approximation: -
ROR-081 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:671 (ClosedFormNote) it assumes unlimited trades, so it is a different measure from the simulated drawdown. G2
ROR-082 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:672 (ClosedFormNote) it treats every trade as one step of the same size, counts whole steps to a fall of -
ROR-083 components/tools/riskOfRuin/RiskOfRuinCalculator.tsx:672 (ClosedFormNote) , and assumes unlimited trades. That is a different measure from the drawdown above, so the two figures differ. -
ROR-084 components/tools/riskOfRuin/RuinHistogram.tsx:59 (HistogramSvg) Maximum drawdown on the path -
ROR-085 components/tools/riskOfRuin/RuinHistogram.tsx:84 (RuinHistogram) Histogram of maximum drawdown across simulated paths G2
ROR-086 components/tools/riskOfRuin/RuinHistogram.tsx:92 (RuinHistogram) Paths below the threshold -
ROR-087 components/tools/riskOfRuin/RuinHistogram.tsx:96 (RuinHistogram) Paths at or beyond the threshold -
ROR-088 components/tools/riskOfRuin/RuinHistogram.tsx:100 (RuinHistogram) Show the histogram as a table -
ROR-089 components/tools/riskOfRuin/RuinHistogram.tsx:102 (RuinHistogram) Simulated paths by maximum drawdown G2
ROR-090 components/tools/riskOfRuin/RuinHistogram.tsx:105 (RuinHistogram) Max drawdown -
ROR-091 components/tools/riskOfRuin/RuinHistogram.tsx:106 (RuinHistogram) Paths -
ROR-092 components/tools/riskOfRuin/RuinHistogram.tsx:107 (RuinHistogram) At or beyond threshold -
ROR-093 components/tools/riskOfRuin/LoadExampleButton.tsx:30 (LoadExampleButton) Load these numbers -
ROR-094 components/tools/riskOfRuin/LoadExampleButton.tsx:25 (LoadExampleButton @aria-label) Load these numbers: <example title> -

Rendered samples for Risk of ruin calculator (produced by calling the real library functions on the page's own golden examples and edge cases; these are the sentences assembled at run time from the fragments above).

ID Case Rendered text Touches
RORS-001 example equal: result sentence Given these inputs, in this simulation 12.0% of paths hit a 50% drawdown. G2
RORS-002 example equal: spoken sentence Given these inputs, in this simulation 12.0% of paths hit a 50 percent drawdown. G2
RORS-003 example equal: histogram description Histogram of the maximum drawdown on each of 5,000 simulated paths of 200 trades. 598 paths reach the 50 percent threshold. Median maximum drawdown 34.7 percent. G2
RORS-004 example equal: path step 1 Payoff ratio = 100.00 / 100.00 = 1.00 -
RORS-005 example equal: path step 2 A win multiplies equity by 1 + 4% x 1.00 = 1.0400 -
RORS-006 example equal: path step 3 A loss multiplies equity by 1 - 4% = 0.9600 -
RORS-007 example equal: path step 4 Each of 5,000 paths draws 200 trades; a trade is a win at the 55% win rate you entered (seeded generator, seed 4821) -
RORS-008 example equal: path step 5 Maximum drawdown on a path = the largest fall from a prior equity peak -
RORS-009 example equal: path step 6 Share of paths = paths with maximum drawdown of 50% or more / 5,000 = 598 / 5,000 = 12.0% -
RORS-010 example larger win: result sentence Given these inputs, in this simulation 0.5% of paths hit a 50% drawdown. G2
RORS-011 example larger win: spoken sentence Given these inputs, in this simulation 0.5% of paths hit a 50 percent drawdown. G2
RORS-012 example larger win: histogram description Histogram of the maximum drawdown on each of 5,000 simulated paths of 200 trades. 26 paths reach the 50 percent threshold. Median maximum drawdown 24.7 percent. G2
RORS-013 example larger win: path step 1 Payoff ratio = 150.00 / 100.00 = 1.50 -
RORS-014 example larger win: path step 2 A win multiplies equity by 1 + 3% x 1.50 = 1.0450 -
RORS-015 example larger win: path step 3 A loss multiplies equity by 1 - 3% = 0.9700 -
RORS-016 example larger win: path step 4 Each of 5,000 paths draws 200 trades; a trade is a win at the 50% win rate you entered (seeded generator, seed 4821) -
RORS-017 example larger win: path step 5 Maximum drawdown on a path = the largest fall from a prior equity peak -
RORS-018 example larger win: path step 6 Share of paths = paths with maximum drawdown of 50% or more / 5,000 = 26 / 5,000 = 0.5% -
RORS-019 win rate 0: result sentence Given these inputs, in this simulation 100% of paths hit a 50% drawdown. G2
RORS-020 win rate 0: spoken sentence Given these inputs, in this simulation 100% of paths hit a 50 percent drawdown. G2
RORS-021 win rate 0: histogram description Histogram of the maximum drawdown on each of 5,000 simulated paths of 200 trades. 5,000 paths reach the 50 percent threshold. Median maximum drawdown 100.0 percent. G2
RORS-022 win rate 0: edge case note Win rate is 0, so every simulated trade is a loss. G2
RORS-023 win rate 0: path step 1 Payoff ratio = 100.00 / 100.00 = 1.00 -
RORS-024 win rate 0: path step 2 A win multiplies equity by 1 + 4% x 1.00 = 1.0400 -
RORS-025 win rate 0: path step 3 A loss multiplies equity by 1 - 4% = 0.9600 -
RORS-026 win rate 0: path step 4 Each of 5,000 paths draws 200 trades; a trade is a win at the 0% win rate you entered (seeded generator, seed 4821) -
RORS-027 win rate 0: path step 5 Maximum drawdown on a path = the largest fall from a prior equity peak -
RORS-028 win rate 0: path step 6 Share of paths = paths with maximum drawdown of 50% or more / 5,000 = 5,000 / 5,000 = 100% -
RORS-029 win rate 100: result sentence Given these inputs, in this simulation 0% of paths hit a 50% drawdown. G2
RORS-030 win rate 100: spoken sentence Given these inputs, in this simulation 0% of paths hit a 50 percent drawdown. G2
RORS-031 win rate 100: histogram description Histogram of the maximum drawdown on each of 5,000 simulated paths of 200 trades. 0 paths reach the 50 percent threshold. Median maximum drawdown 0.0 percent. G2
RORS-032 win rate 100: edge case note Win rate is 100%, so every simulated trade is a win and no path has a drawdown. G2
RORS-033 win rate 100: path step 1 Payoff ratio = 100.00 / 100.00 = 1.00 -
RORS-034 win rate 100: path step 2 A win multiplies equity by 1 + 4% x 1.00 = 1.0400 -
RORS-035 win rate 100: path step 3 A loss multiplies equity by 1 - 4% = 0.9600 -
RORS-036 win rate 100: path step 4 Each of 5,000 paths draws 200 trades; a trade is a win at the 100% win rate you entered (seeded generator, seed 4821) -
RORS-037 win rate 100: path step 5 Maximum drawdown on a path = the largest fall from a prior equity peak -
RORS-038 win rate 100: path step 6 Share of paths = paths with maximum drawdown of 50% or more / 5,000 = 0 / 5,000 = 0% -
RORS-039 risk 100: result sentence Given these inputs, in this simulation 100% of paths hit a 50% drawdown. G2
RORS-040 risk 100: spoken sentence Given these inputs, in this simulation 100% of paths hit a 50 percent drawdown. G2
RORS-041 risk 100: histogram description Histogram of the maximum drawdown on each of 5,000 simulated paths of 200 trades. 5,000 paths reach the 50 percent threshold. Median maximum drawdown 100.0 percent. G2
RORS-042 risk 100: edge case note Risk per trade is 100%, so one loss takes equity to zero. G6
RORS-043 risk 100: path step 1 Payoff ratio = 100.00 / 100.00 = 1.00 -
RORS-044 risk 100: path step 2 A win multiplies equity by 1 + 100% x 1.00 = 2.0000 -
RORS-045 risk 100: path step 3 A loss multiplies equity by 1 - 100% = 0.0000 -
RORS-046 risk 100: path step 4 Each of 5,000 paths draws 200 trades; a trade is a win at the 55% win rate you entered (seeded generator, seed 4821) -
RORS-047 risk 100: path step 5 Maximum drawdown on a path = the largest fall from a prior equity peak -
RORS-048 risk 100: path step 6 Share of paths = paths with maximum drawdown of 50% or more / 5,000 = 5,000 / 5,000 = 100% -
RORS-049 empty: validation {"errors":{},"empty":["win","avgwin","avgloss","risk","trades"]} -
RORS-050 too many trades: validation {"errors":{"trades":"Use 2,000 trades or fewer."},"empty":[]} -
RORS-051 zero avg loss: validation {"errors":{"avgloss":"Enter a value greater than zero. The payoff ratio divides by the average loss."},"empty":[]} -
RORS-052 RUIN_CAPTION Simulation of the numbers you entered; not a prediction of results. G2
RORS-053 RUIN_REAL_RESULTS_DIFFER Real results differ. G2
RORS-054 RUIN_ASSUMPTIONS[0] The win rate and the payoff (average win / average loss) are constant on every trade. -
RORS-055 RUIN_ASSUMPTIONS[1] Trades are independent of each other. -
RORS-056 RUIN_ASSUMPTIONS[2] Each loss costs the risk-per-trade percent of current equity; each win gains that percent times the payoff ratio. -
RORS-057 RUIN_ASSUMPTIONS[3] Drawdown is the fall from the highest equity reached so far on that path. -
RORS-058 WORKER_FAILURE_MESSAGE The simulation could not run in this browser. Your numbers were not sent anywhere. Reload the page, or try a current version of your browser. G2, G8
RORS-059 FAQ 1 question What does ruin mean in this calculator? -
RORS-060 FAQ 1 answer Ruin is a drawdown threshold you set; 50% is the example value. A simulated path hits it when its equity falls from an earlier peak on that path by at least that percent. G2
RORS-061 FAQ 2 question How does the simulation work? G2
RORS-062 FAQ 2 answer It builds 5,000 paths. On each path every trade is a win or a loss drawn with the win rate you entered, and the risk per trade you entered sets how much equity moves. A fixed seed means the same inputs give the same output. G6
RORS-063 FAQ 3 question Why can results here differ from real trading? -
RORS-064 FAQ 3 answer The simulation assumes a constant win rate and payoff and independent trades. Real results differ. G2
RORS-065 status line while fields need fixing Waiting for: <field names>. The result appears when it is fixed. / when they are fixed. -
RORS-066 status line while the simulation runs Simulating <n> paths of <m>. The page stays usable while this runs. Changing a number restarts the simulation. G2
RORS-067 status line after a worker failure The simulation could not run in this browser. (then WORKER_FAILURE_MESSAGE; button: Try again) G2
RORS-068 closed-form cross-check (shown only when average win equals average loss, 50 < win rate < 100) Closed-form cross-check: <percent>. The classic formula applies when average win equals average loss. It is an equal-step approximation: it treats every trade as one step of the same size, counts whole steps to a fall of <threshold>, and assumes unlimited trades. That is a different measure from the drawdown above, so the two figures differ. (Short variant in the narrow layout: "... equal-step approximation: it assumes unlimited trades, so it is a different measure from the simulated drawdown.") G2
RORS-069 histogram table: row labels (20 bins, 5 points wide; histogramRows, summary.ts:126-143) 0% to under 5%; 5% to under 10%; 10% to under 15%; 15% to under 20%; 20% to under 25%; 25% to under 30%; 30% to under 35%; 35% to under 40%; 40% to under 45%; 45% to under 50%; 50% to under 55%; 55% to under 60%; 60% to under 65%; 65% to under 70%; 70% to under 75%; 75% to under 80%; 80% to under 85%; 85% to under 90%; 90% to under 95%; 95% to 100% -
RORS-070 histogram table: "At or beyond threshold" column, threshold 50% No for the rows 0% to under 5% through 45% to under 50%; Yes for 50% to under 55% through 95% to 100% -
RORS-071 histogram table: same column, threshold 52% (the threshold falls inside a bin) Partly for 50% to under 55%; No for the rows below it; Yes for the rows above it -
RORS-072 after Try again: visible caption (RiskOfRuinCalculator.tsx:532, aria-hidden) and screen-reader status line (:386) Trying again. -
RORS-073 spoken-only status line while the simulation runs and no result is shown (RiskOfRuinCalculator.tsx:389; announced through the visually hidden role="status" paragraph at :646, after a short delay; the text drawn on screen for the same state is RORS-066) Simulating. G2

B7. Pages that have not landed on develop (PRE-STAGED from the design stage)

#4842 (expectancy and profit factor), #4843 (covered call) and #4844 (risk/reward and breakeven win rate) are not on develop. The text below comes from the frozen design README and mockups (docs/design/seo-tools/), which the README itself calls proposals for these three pages. It is not a snapshot of shipped copy: re-inventory from develop when each card lands. It is listed now because the design stage records counsel-relevant wording on these pages: the covered call "income wording" is queued for attorney review (design open question 4), and the expectancy page adds a "not future results" line.

Item Proposed text
Registry title (#4842) Expectancy Calculator for Trading - Profit Factor and R
Registry description (#4842) Free expectancy calculator for trading. Enter win rate, average win and loss to see expectancy per trade, profit factor and breakeven win rate. No sign-up.
Registry title (#4843) Covered Call Calculator - Max Profit, Breakeven, Return
Registry description (#4843) Free covered call calculator. Enter cost basis, shares, strike and premium to see max profit, breakeven and return if called. No sign-up.
Registry title (#4844) Risk Reward Ratio Calculator - Breakeven Win Rate
Registry description (#4844) Free risk reward ratio calculator. Enter entry, stop and target, or risk and reward amounts, to see the ratio and breakeven win rate. No sign-up.
Expectancy page note (mockup 11) Expectancy describes the inputs you enter, not future results.
Expectancy FAQ (mockup 11) Expectancy is the average result per trade computed from the win rate, average win and average loss you enter. It describes the inputs, not future results.
Covered call lede (mockup 13) Enter cost basis, shares, strike and premium. The calculator returns max profit, breakeven and the return if called or unchanged at expiry, with a payoff chart.
Covered call result rows (mockup 13) Max profit; Breakeven; Return if called ("Shares called away at the strike"); Return if unchanged at expiry ("Stock finishes at the cost basis"); Average per day over 30 days, if called ("Not annualized"); Premium received
Covered call explainer (mockup 13) A covered call pairs shares held with one call option sold per 100 shares. The premium received is part of the result whatever the price does. If the stock finishes above the strike at expiration, the shares are called away at the strike, which caps the result.
Covered call scope note (mockup 13) Dividends, fees and taxes are not included.
Risk/reward note (mockup 15) Breakeven win rate ignores fees and slippage.
Risk/reward FAQ (mockup 15) A larger reward relative to risk lowers the breakeven win rate: 1 : 1 gives 50.00%, 1 : 2 gives 33.33% and 1 : 3 gives 25.00%.

Wording the design records for counsel on these pages: the covered call "income wording" (design open question 4) and the days-held per-day figures, which are never annualized because annualizing reads as a projection (design decision 9). Listed for completeness and not from the design: "expectancy" as a term, and the breakeven-win-rate FAQ, which relates a reward ratio to a win rate.