> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joyride.exchange/llms.txt
> Use this file to discover all available pages before exploring further.

# Chance of Profit

> How Joyride calculates chance of profit for option markets.

Chance of profit, shown as **COP** in the trading app, estimates the probability that an option position finishes profitable at expiry.

Joyride computes COP server-side and exposes it as `greeks.pop`. The value is a probability from `0.0` to `1.0`; the app formats it as a percentage.

## What COP Measures

COP is based on the option's **break-even price**, not just whether the option expires in the money.

For a long call:

```text theme={null}
break_even = strike + option_mark
COP = probability(expiry_price > break_even)
```

For a long put:

```text theme={null}
break_even = strike - option_mark
COP = probability(expiry_price < break_even)
```

This means COP includes the premium paid for the option. A call can expire in the money and still lose money if the expiry price does not clear `strike + option_mark`.

## Inputs

The calculation uses:

| Input              | Meaning                                            |
| ------------------ | -------------------------------------------------- |
| Spot price         | Current underlying price                           |
| Strike             | Option strike price                                |
| Time to expiry     | Annualized time remaining until expiry             |
| Risk-free rate     | Annualized rate used by the pricing model          |
| Implied volatility | Annualized IV from Joyride's volatility skew model |
| Option mark        | Book-derived option mark used as the premium       |

The option mark comes from the order book. A two-sided book uses the bid/ask midpoint. A one-sided book may use the available bid or ask as a degraded but real signal.

## Formula

Joyride uses the same lognormal model family used for Black-Scholes Greeks.

First, it evaluates `d2` at the break-even price:

```text theme={null}
d1 = (ln(spot / break_even) + (rate + volatility^2 / 2) * time) / (volatility * sqrt(time))
d2 = d1 - volatility * sqrt(time)
```

Then it converts `d2` into a probability with the standard normal cumulative distribution function:

```text theme={null}
long_call_COP = N(d2)
long_put_COP = N(-d2)
```

The result is clamped to `[0.0, 1.0]`.

## Long and Short Display

The server value is always the **long-side** probability.

When the app is showing the sell or short side, it displays the complement:

```text theme={null}
short_side_COP = 1 - long_side_COP
```

## Missing Values

The app renders `--` when there is no trustworthy mark to calculate against. This usually means the book is empty or the quote was rejected as crossed.

This is intentional. Using a mark of zero would make break-even equal to the strike and could produce misleading near-100% COP for some in-the-money options.

## Interpretation

COP is a model estimate, not a guarantee. It depends on the current spot price, current book-derived mark, time remaining, and implied volatility assumption at the moment it is calculated.

Use COP as one market signal alongside price, liquidity, delta, IV, and your own view of the underlying.
