curl --request GET \
--url https://testnet.edel-api.xyz/v1/agents/strategy-estimatesimport requests
url = "https://testnet.edel-api.xyz/v1/agents/strategy-estimates"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://testnet.edel-api.xyz/v1/agents/strategy-estimates', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://testnet.edel-api.xyz/v1/agents/strategy-estimates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://testnet.edel-api.xyz/v1/agents/strategy-estimates"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://testnet.edel-api.xyz/v1/agents/strategy-estimates")
.asString();require 'uri'
require 'net/http'
url = URI("https://testnet.edel-api.xyz/v1/agents/strategy-estimates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"version": "agent-money-estimate-catalog/v1",
"marketId": "<string>",
"generatedAtEpochMs": 1,
"estimates": [
{
"strategyId": "<string>",
"marketId": "<string>",
"status": "estimated",
"reason": "cache_warming",
"message": "<string>",
"series": "trade",
"timeframe": "4h",
"window": {
"fromEpochMs": 1,
"toEpochMs": 123
},
"barCount": 1,
"tradeCount": 1,
"minimumTradeCount": 123,
"notionalUsd": "1000",
"estimatedPnlUsd": "<string>",
"rangeUsd": {
"lower": "<string>",
"upper": "<string>",
"lowerPercentile": 0.1,
"upperPercentile": 0.9,
"method": "closed_trade_pnl_bootstrap",
"resamples": 123,
"seed": 1
},
"feeBps": 0,
"slippageBps": 0,
"label": "Historical estimate, not a promise"
}
]
}{
"version": "external-rest-error/v1",
"requestId": "<string>",
"code": "invalid_request",
"safeMessage": "<string>",
"retryable": true,
"recoveryActions": [
"none"
],
"occurredAtEpochMs": 1,
"realtimeTicketFailure": "invalid",
"apiKeyRejection": "malformed",
"agentRefusal": "agents_not_admitted_in_environment",
"rejectionGuard": "amount_atoms_invalid",
"withdrawalFailure": "requested",
"dependency": "dfns"
}{
"version": "external-rest-error/v1",
"requestId": "<string>",
"code": "invalid_request",
"safeMessage": "<string>",
"retryable": true,
"recoveryActions": [
"none"
],
"occurredAtEpochMs": 1,
"realtimeTicketFailure": "invalid",
"apiKeyRejection": "malformed",
"agentRefusal": "agents_not_admitted_in_environment",
"rejectionGuard": "amount_atoms_invalid",
"withdrawalFailure": "requested",
"dependency": "dfns"
}{
"version": "external-rest-error/v1",
"requestId": "<string>",
"code": "invalid_request",
"safeMessage": "<string>",
"retryable": true,
"recoveryActions": [
"none"
],
"occurredAtEpochMs": 1,
"realtimeTicketFailure": "invalid",
"apiKeyRejection": "malformed",
"agentRefusal": "agents_not_admitted_in_environment",
"rejectionGuard": "amount_atoms_invalid",
"withdrawalFailure": "requested",
"dependency": "dfns"
}{
"version": "external-rest-error/v1",
"requestId": "<string>",
"code": "invalid_request",
"safeMessage": "<string>",
"retryable": true,
"recoveryActions": [
"none"
],
"occurredAtEpochMs": 1,
"realtimeTicketFailure": "invalid",
"apiKeyRejection": "malformed",
"agentRefusal": "agents_not_admitted_in_environment",
"rejectionGuard": "amount_atoms_invalid",
"withdrawalFailure": "requested",
"dependency": "dfns"
}Read cached historical money estimates for runnable agent strategies
Returns one cached historical estimate for each Ready to run strategy on a listed market. A bounded background job tests 1,000 USD fixed notional entries against the last 90 days of 4h candles and bootstraps the closed-trade dollar PnL range at the 10th and 90th percentiles. The response names the candle series, sample size, window, zero assumed fees and slippage, and data gaps. Small samples, missing history or a template that cannot run answer without a number. This read never starts a backtest, trade or provider call. Historical estimate, not a promise.
Method and path: GET /v1/agents/strategy-estimates
Authentication: none.
Request schema: none.
Response schema: AgentMoneyEstimateCatalog.
Error envelope: ExternalRestError (external-rest-error/v1).
curl --request GET \
--url https://testnet.edel-api.xyz/v1/agents/strategy-estimatesimport requests
url = "https://testnet.edel-api.xyz/v1/agents/strategy-estimates"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://testnet.edel-api.xyz/v1/agents/strategy-estimates', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://testnet.edel-api.xyz/v1/agents/strategy-estimates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://testnet.edel-api.xyz/v1/agents/strategy-estimates"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://testnet.edel-api.xyz/v1/agents/strategy-estimates")
.asString();require 'uri'
require 'net/http'
url = URI("https://testnet.edel-api.xyz/v1/agents/strategy-estimates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"version": "agent-money-estimate-catalog/v1",
"marketId": "<string>",
"generatedAtEpochMs": 1,
"estimates": [
{
"strategyId": "<string>",
"marketId": "<string>",
"status": "estimated",
"reason": "cache_warming",
"message": "<string>",
"series": "trade",
"timeframe": "4h",
"window": {
"fromEpochMs": 1,
"toEpochMs": 123
},
"barCount": 1,
"tradeCount": 1,
"minimumTradeCount": 123,
"notionalUsd": "1000",
"estimatedPnlUsd": "<string>",
"rangeUsd": {
"lower": "<string>",
"upper": "<string>",
"lowerPercentile": 0.1,
"upperPercentile": 0.9,
"method": "closed_trade_pnl_bootstrap",
"resamples": 123,
"seed": 1
},
"feeBps": 0,
"slippageBps": 0,
"label": "Historical estimate, not a promise"
}
]
}{
"version": "external-rest-error/v1",
"requestId": "<string>",
"code": "invalid_request",
"safeMessage": "<string>",
"retryable": true,
"recoveryActions": [
"none"
],
"occurredAtEpochMs": 1,
"realtimeTicketFailure": "invalid",
"apiKeyRejection": "malformed",
"agentRefusal": "agents_not_admitted_in_environment",
"rejectionGuard": "amount_atoms_invalid",
"withdrawalFailure": "requested",
"dependency": "dfns"
}{
"version": "external-rest-error/v1",
"requestId": "<string>",
"code": "invalid_request",
"safeMessage": "<string>",
"retryable": true,
"recoveryActions": [
"none"
],
"occurredAtEpochMs": 1,
"realtimeTicketFailure": "invalid",
"apiKeyRejection": "malformed",
"agentRefusal": "agents_not_admitted_in_environment",
"rejectionGuard": "amount_atoms_invalid",
"withdrawalFailure": "requested",
"dependency": "dfns"
}{
"version": "external-rest-error/v1",
"requestId": "<string>",
"code": "invalid_request",
"safeMessage": "<string>",
"retryable": true,
"recoveryActions": [
"none"
],
"occurredAtEpochMs": 1,
"realtimeTicketFailure": "invalid",
"apiKeyRejection": "malformed",
"agentRefusal": "agents_not_admitted_in_environment",
"rejectionGuard": "amount_atoms_invalid",
"withdrawalFailure": "requested",
"dependency": "dfns"
}{
"version": "external-rest-error/v1",
"requestId": "<string>",
"code": "invalid_request",
"safeMessage": "<string>",
"retryable": true,
"recoveryActions": [
"none"
],
"occurredAtEpochMs": 1,
"realtimeTicketFailure": "invalid",
"apiKeyRejection": "malformed",
"agentRefusal": "agents_not_admitted_in_environment",
"rejectionGuard": "amount_atoms_invalid",
"withdrawalFailure": "requested",
"dependency": "dfns"
}Query Parameters
The listed market whose cached estimates to read.
1 - 64