Trading edge from win rate and average win and loss
Trading edge from win rate and average win and loss: expectancy, profit factor, breakeven win rate, Kelly fraction and expected losing streaks.
Answeringour last check, 2026-10-20
1 of 1checks answered this week
290 msmedian answer time
$0.01listed price per call
$0.01price it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
GET https://saylorinnovations.com/api/trading/expectancy
| Category | Everything else |
|---|---|
| Provider host | saylorinnovations.com |
| Networks | eip155:137, eip155:42161, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 0 from 0 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 2026-10-20 | valid payment request | 402 | $0.01 | 290 ms |
Example input (from the provider)
{
"method": "GET",
"queryParams": {
"avg_loss": "150",
"avg_win": "300",
"trades": "200",
"win_rate_percent": "45"
},
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"avg_loss": {
"description": "average losing trade as a positive number",
"type": "string"
},
"avg_win": {
"description": "average winning trade",
"type": "string"
},
"trades": {
"description": "optional number of trades to project, default 100",
"type": "string"
},
"win_rate_percent": {
"description": "share of winning trades",
"type": "string"
}
},
"required": [
"win_rate_percent",
"avg_win",
"avg_loss"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"avg_loss": {
"description": "Average losing trade",
"type": "number"
},
"avg_win": {
"description": "Average winning trade",
"type": "number"
},
"breakeven_win_rate_percent": {
"description": "Win rate needed to break even at this payoff",
"type": "number"
},
"expectancy_in_r": {
"description": "Expectancy in multiples of the average loss",
"type": "number"
},
"expectancy_per_trade": {
"description": "Average result per trade",
"type": "number"
},
"expected_longest_losing_streak": {
"description": "Approximate longest losing streak over the projected trades",
"type": [
"number",
"null"
]
},
"expected_profit_over_trades": {
"description": "Expectancy times the number of trades",
"type": "number"
},
"half_kelly_percent": {
"description": "Half of the Kelly fraction, never below zero",
"type": "number"
},
"has_edge": {
"description": "True when expectancy is positive",
"type": "boolean"
},
"kelly_fraction_percent": {
"description": "Kelly criterion bet size as a percent of capital",
"type": "number"
},
"note": {
"description": "Plain-language caveat about how to read and use the result",
"type": "string"
},
"probability_of_5_losses_in_a_row_percent": {
"description": "Chance that any given run of five trades all lose",
"type": "number"
},
"profit_factor": {
"description": "Gross wins divided by gross losses, null if there are no losses",
"type": [
"number",
"null"
]
},
"reward_to_risk": {
"description": "Average win divided by average loss",
"type": "number"
},
"source": {
"description": "Where the data or formula comes from",
"type": "string"
},
"trades": {
"description": "Number of trades projected",
"type": "number"
},
"win_rate_percent": {
"description": "Share of winning trades",
"type": "number"
}
},
"required": [
"expectancy_per_trade",
"has_edge"
],
"type": "object"
},
"type": {
"const": "json",
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}