curl --request PATCH \
--url https://api.example.com/api/graph/v1/user/risk-profile \
--header 'Content-Type: application/json' \
--data '
{
"overrides": {
"per_trade_risk_pct": 1,
"max_portfolio_heat_pct": 1,
"max_positions": 2,
"daily_loss_limit_pct": -1,
"weekly_loss_limit_pct": -1,
"min_pop_gate": 1,
"min_edge_ratio": 1,
"options_dte_floor_swing": 2,
"consecutive_loss_pause": 2,
"max_position_size_multiplier": 1
},
"risk_budget": {
"daily_dollars_at_risk_cap": 5000,
"max_percent_equity_at_risk": 5,
"daily_loss_cap": 2000
},
"mode_allowlist": {
"autonomous": true,
"supervised": true,
"monitor": true,
"manual": true
},
"round_trip": {
"global_cap_per_session": 10
},
"cooling_off": {
"default_cool_off_minutes": 15,
"consecutive_loss_threshold": 2,
"consecutive_loss_lockout_minutes": 30
},
"funded": {
"max_per_trade_notional_usd": 1,
"max_daily_loss_usd": 1,
"max_daily_loss_pct": 1,
"max_concurrent_positions": 1,
"max_daily_trades": 1,
"cooldown_after_loss_min": 1,
"no_overnight": true,
"kill_switch_engaged": true,
"enforce_fail_closed": true,
"flatten_time_et": "<string>"
},
"supervised_confirm_window_seconds": 11
}
'import requests
url = "https://api.example.com/api/graph/v1/user/risk-profile"
payload = {
"overrides": {
"per_trade_risk_pct": 1,
"max_portfolio_heat_pct": 1,
"max_positions": 2,
"daily_loss_limit_pct": -1,
"weekly_loss_limit_pct": -1,
"min_pop_gate": 1,
"min_edge_ratio": 1,
"options_dte_floor_swing": 2,
"consecutive_loss_pause": 2,
"max_position_size_multiplier": 1
},
"risk_budget": {
"daily_dollars_at_risk_cap": 5000,
"max_percent_equity_at_risk": 5,
"daily_loss_cap": 2000
},
"mode_allowlist": {
"autonomous": True,
"supervised": True,
"monitor": True,
"manual": True
},
"round_trip": { "global_cap_per_session": 10 },
"cooling_off": {
"default_cool_off_minutes": 15,
"consecutive_loss_threshold": 2,
"consecutive_loss_lockout_minutes": 30
},
"funded": {
"max_per_trade_notional_usd": 1,
"max_daily_loss_usd": 1,
"max_daily_loss_pct": 1,
"max_concurrent_positions": 1,
"max_daily_trades": 1,
"cooldown_after_loss_min": 1,
"no_overnight": True,
"kill_switch_engaged": True,
"enforce_fail_closed": True,
"flatten_time_et": "<string>"
},
"supervised_confirm_window_seconds": 11
}
headers = {"Content-Type": "application/json"}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
overrides: {
per_trade_risk_pct: 1,
max_portfolio_heat_pct: 1,
max_positions: 2,
daily_loss_limit_pct: -1,
weekly_loss_limit_pct: -1,
min_pop_gate: 1,
min_edge_ratio: 1,
options_dte_floor_swing: 2,
consecutive_loss_pause: 2,
max_position_size_multiplier: 1
},
risk_budget: {
daily_dollars_at_risk_cap: 5000,
max_percent_equity_at_risk: 5,
daily_loss_cap: 2000
},
mode_allowlist: {autonomous: true, supervised: true, monitor: true, manual: true},
round_trip: {global_cap_per_session: 10},
cooling_off: {
default_cool_off_minutes: 15,
consecutive_loss_threshold: 2,
consecutive_loss_lockout_minutes: 30
},
funded: {
max_per_trade_notional_usd: 1,
max_daily_loss_usd: 1,
max_daily_loss_pct: 1,
max_concurrent_positions: 1,
max_daily_trades: 1,
cooldown_after_loss_min: 1,
no_overnight: true,
kill_switch_engaged: true,
enforce_fail_closed: true,
flatten_time_et: '<string>'
},
supervised_confirm_window_seconds: 11
})
};
fetch('https://api.example.com/api/graph/v1/user/risk-profile', 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://api.example.com/api/graph/v1/user/risk-profile",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'overrides' => [
'per_trade_risk_pct' => 1,
'max_portfolio_heat_pct' => 1,
'max_positions' => 2,
'daily_loss_limit_pct' => -1,
'weekly_loss_limit_pct' => -1,
'min_pop_gate' => 1,
'min_edge_ratio' => 1,
'options_dte_floor_swing' => 2,
'consecutive_loss_pause' => 2,
'max_position_size_multiplier' => 1
],
'risk_budget' => [
'daily_dollars_at_risk_cap' => 5000,
'max_percent_equity_at_risk' => 5,
'daily_loss_cap' => 2000
],
'mode_allowlist' => [
'autonomous' => true,
'supervised' => true,
'monitor' => true,
'manual' => true
],
'round_trip' => [
'global_cap_per_session' => 10
],
'cooling_off' => [
'default_cool_off_minutes' => 15,
'consecutive_loss_threshold' => 2,
'consecutive_loss_lockout_minutes' => 30
],
'funded' => [
'max_per_trade_notional_usd' => 1,
'max_daily_loss_usd' => 1,
'max_daily_loss_pct' => 1,
'max_concurrent_positions' => 1,
'max_daily_trades' => 1,
'cooldown_after_loss_min' => 1,
'no_overnight' => true,
'kill_switch_engaged' => true,
'enforce_fail_closed' => true,
'flatten_time_et' => '<string>'
],
'supervised_confirm_window_seconds' => 11
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/graph/v1/user/risk-profile"
payload := strings.NewReader("{\n \"overrides\": {\n \"per_trade_risk_pct\": 1,\n \"max_portfolio_heat_pct\": 1,\n \"max_positions\": 2,\n \"daily_loss_limit_pct\": -1,\n \"weekly_loss_limit_pct\": -1,\n \"min_pop_gate\": 1,\n \"min_edge_ratio\": 1,\n \"options_dte_floor_swing\": 2,\n \"consecutive_loss_pause\": 2,\n \"max_position_size_multiplier\": 1\n },\n \"risk_budget\": {\n \"daily_dollars_at_risk_cap\": 5000,\n \"max_percent_equity_at_risk\": 5,\n \"daily_loss_cap\": 2000\n },\n \"mode_allowlist\": {\n \"autonomous\": true,\n \"supervised\": true,\n \"monitor\": true,\n \"manual\": true\n },\n \"round_trip\": {\n \"global_cap_per_session\": 10\n },\n \"cooling_off\": {\n \"default_cool_off_minutes\": 15,\n \"consecutive_loss_threshold\": 2,\n \"consecutive_loss_lockout_minutes\": 30\n },\n \"funded\": {\n \"max_per_trade_notional_usd\": 1,\n \"max_daily_loss_usd\": 1,\n \"max_daily_loss_pct\": 1,\n \"max_concurrent_positions\": 1,\n \"max_daily_trades\": 1,\n \"cooldown_after_loss_min\": 1,\n \"no_overnight\": true,\n \"kill_switch_engaged\": true,\n \"enforce_fail_closed\": true,\n \"flatten_time_et\": \"<string>\"\n },\n \"supervised_confirm_window_seconds\": 11\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.example.com/api/graph/v1/user/risk-profile")
.header("Content-Type", "application/json")
.body("{\n \"overrides\": {\n \"per_trade_risk_pct\": 1,\n \"max_portfolio_heat_pct\": 1,\n \"max_positions\": 2,\n \"daily_loss_limit_pct\": -1,\n \"weekly_loss_limit_pct\": -1,\n \"min_pop_gate\": 1,\n \"min_edge_ratio\": 1,\n \"options_dte_floor_swing\": 2,\n \"consecutive_loss_pause\": 2,\n \"max_position_size_multiplier\": 1\n },\n \"risk_budget\": {\n \"daily_dollars_at_risk_cap\": 5000,\n \"max_percent_equity_at_risk\": 5,\n \"daily_loss_cap\": 2000\n },\n \"mode_allowlist\": {\n \"autonomous\": true,\n \"supervised\": true,\n \"monitor\": true,\n \"manual\": true\n },\n \"round_trip\": {\n \"global_cap_per_session\": 10\n },\n \"cooling_off\": {\n \"default_cool_off_minutes\": 15,\n \"consecutive_loss_threshold\": 2,\n \"consecutive_loss_lockout_minutes\": 30\n },\n \"funded\": {\n \"max_per_trade_notional_usd\": 1,\n \"max_daily_loss_usd\": 1,\n \"max_daily_loss_pct\": 1,\n \"max_concurrent_positions\": 1,\n \"max_daily_trades\": 1,\n \"cooldown_after_loss_min\": 1,\n \"no_overnight\": true,\n \"kill_switch_engaged\": true,\n \"enforce_fail_closed\": true,\n \"flatten_time_et\": \"<string>\"\n },\n \"supervised_confirm_window_seconds\": 11\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/user/risk-profile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"overrides\": {\n \"per_trade_risk_pct\": 1,\n \"max_portfolio_heat_pct\": 1,\n \"max_positions\": 2,\n \"daily_loss_limit_pct\": -1,\n \"weekly_loss_limit_pct\": -1,\n \"min_pop_gate\": 1,\n \"min_edge_ratio\": 1,\n \"options_dte_floor_swing\": 2,\n \"consecutive_loss_pause\": 2,\n \"max_position_size_multiplier\": 1\n },\n \"risk_budget\": {\n \"daily_dollars_at_risk_cap\": 5000,\n \"max_percent_equity_at_risk\": 5,\n \"daily_loss_cap\": 2000\n },\n \"mode_allowlist\": {\n \"autonomous\": true,\n \"supervised\": true,\n \"monitor\": true,\n \"manual\": true\n },\n \"round_trip\": {\n \"global_cap_per_session\": 10\n },\n \"cooling_off\": {\n \"default_cool_off_minutes\": 15,\n \"consecutive_loss_threshold\": 2,\n \"consecutive_loss_lockout_minutes\": 30\n },\n \"funded\": {\n \"max_per_trade_notional_usd\": 1,\n \"max_daily_loss_usd\": 1,\n \"max_daily_loss_pct\": 1,\n \"max_concurrent_positions\": 1,\n \"max_daily_trades\": 1,\n \"cooldown_after_loss_min\": 1,\n \"no_overnight\": true,\n \"kill_switch_engaged\": true,\n \"enforce_fail_closed\": true,\n \"flatten_time_et\": \"<string>\"\n },\n \"supervised_confirm_window_seconds\": 11\n}"
response = http.request(request)
puts response.read_body{
"preset": "<string>",
"resolved": {
"per_trade_risk_pct": 123,
"max_portfolio_heat_pct": 123,
"max_positions": 123,
"daily_loss_limit_pct": 123,
"weekly_loss_limit_pct": 123,
"min_pop_gate": 123,
"min_edge_ratio": 123,
"options_dte_floor_swing": 123,
"consecutive_loss_pause": 123,
"max_position_size_multiplier": 123
},
"overrides": {},
"hard_caps": {},
"risk_budget": {
"daily_dollars_at_risk_cap": 5000,
"max_percent_equity_at_risk": 5,
"daily_loss_cap": 2000
},
"mode_allowlist": {
"autonomous": true,
"supervised": true,
"monitor": true,
"manual": true
},
"round_trip": {
"global_cap_per_session": 10
},
"onboarding_stage": "operator",
"cooling_off": {
"default_cool_off_minutes": 15,
"consecutive_loss_threshold": 2,
"consecutive_loss_lockout_minutes": 30
},
"funded": {},
"supervised_confirm_window_seconds": 30
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Update Risk Profile
Update the user’s risk profile preset and/or overrides.
curl --request PATCH \
--url https://api.example.com/api/graph/v1/user/risk-profile \
--header 'Content-Type: application/json' \
--data '
{
"overrides": {
"per_trade_risk_pct": 1,
"max_portfolio_heat_pct": 1,
"max_positions": 2,
"daily_loss_limit_pct": -1,
"weekly_loss_limit_pct": -1,
"min_pop_gate": 1,
"min_edge_ratio": 1,
"options_dte_floor_swing": 2,
"consecutive_loss_pause": 2,
"max_position_size_multiplier": 1
},
"risk_budget": {
"daily_dollars_at_risk_cap": 5000,
"max_percent_equity_at_risk": 5,
"daily_loss_cap": 2000
},
"mode_allowlist": {
"autonomous": true,
"supervised": true,
"monitor": true,
"manual": true
},
"round_trip": {
"global_cap_per_session": 10
},
"cooling_off": {
"default_cool_off_minutes": 15,
"consecutive_loss_threshold": 2,
"consecutive_loss_lockout_minutes": 30
},
"funded": {
"max_per_trade_notional_usd": 1,
"max_daily_loss_usd": 1,
"max_daily_loss_pct": 1,
"max_concurrent_positions": 1,
"max_daily_trades": 1,
"cooldown_after_loss_min": 1,
"no_overnight": true,
"kill_switch_engaged": true,
"enforce_fail_closed": true,
"flatten_time_et": "<string>"
},
"supervised_confirm_window_seconds": 11
}
'import requests
url = "https://api.example.com/api/graph/v1/user/risk-profile"
payload = {
"overrides": {
"per_trade_risk_pct": 1,
"max_portfolio_heat_pct": 1,
"max_positions": 2,
"daily_loss_limit_pct": -1,
"weekly_loss_limit_pct": -1,
"min_pop_gate": 1,
"min_edge_ratio": 1,
"options_dte_floor_swing": 2,
"consecutive_loss_pause": 2,
"max_position_size_multiplier": 1
},
"risk_budget": {
"daily_dollars_at_risk_cap": 5000,
"max_percent_equity_at_risk": 5,
"daily_loss_cap": 2000
},
"mode_allowlist": {
"autonomous": True,
"supervised": True,
"monitor": True,
"manual": True
},
"round_trip": { "global_cap_per_session": 10 },
"cooling_off": {
"default_cool_off_minutes": 15,
"consecutive_loss_threshold": 2,
"consecutive_loss_lockout_minutes": 30
},
"funded": {
"max_per_trade_notional_usd": 1,
"max_daily_loss_usd": 1,
"max_daily_loss_pct": 1,
"max_concurrent_positions": 1,
"max_daily_trades": 1,
"cooldown_after_loss_min": 1,
"no_overnight": True,
"kill_switch_engaged": True,
"enforce_fail_closed": True,
"flatten_time_et": "<string>"
},
"supervised_confirm_window_seconds": 11
}
headers = {"Content-Type": "application/json"}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
overrides: {
per_trade_risk_pct: 1,
max_portfolio_heat_pct: 1,
max_positions: 2,
daily_loss_limit_pct: -1,
weekly_loss_limit_pct: -1,
min_pop_gate: 1,
min_edge_ratio: 1,
options_dte_floor_swing: 2,
consecutive_loss_pause: 2,
max_position_size_multiplier: 1
},
risk_budget: {
daily_dollars_at_risk_cap: 5000,
max_percent_equity_at_risk: 5,
daily_loss_cap: 2000
},
mode_allowlist: {autonomous: true, supervised: true, monitor: true, manual: true},
round_trip: {global_cap_per_session: 10},
cooling_off: {
default_cool_off_minutes: 15,
consecutive_loss_threshold: 2,
consecutive_loss_lockout_minutes: 30
},
funded: {
max_per_trade_notional_usd: 1,
max_daily_loss_usd: 1,
max_daily_loss_pct: 1,
max_concurrent_positions: 1,
max_daily_trades: 1,
cooldown_after_loss_min: 1,
no_overnight: true,
kill_switch_engaged: true,
enforce_fail_closed: true,
flatten_time_et: '<string>'
},
supervised_confirm_window_seconds: 11
})
};
fetch('https://api.example.com/api/graph/v1/user/risk-profile', 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://api.example.com/api/graph/v1/user/risk-profile",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'overrides' => [
'per_trade_risk_pct' => 1,
'max_portfolio_heat_pct' => 1,
'max_positions' => 2,
'daily_loss_limit_pct' => -1,
'weekly_loss_limit_pct' => -1,
'min_pop_gate' => 1,
'min_edge_ratio' => 1,
'options_dte_floor_swing' => 2,
'consecutive_loss_pause' => 2,
'max_position_size_multiplier' => 1
],
'risk_budget' => [
'daily_dollars_at_risk_cap' => 5000,
'max_percent_equity_at_risk' => 5,
'daily_loss_cap' => 2000
],
'mode_allowlist' => [
'autonomous' => true,
'supervised' => true,
'monitor' => true,
'manual' => true
],
'round_trip' => [
'global_cap_per_session' => 10
],
'cooling_off' => [
'default_cool_off_minutes' => 15,
'consecutive_loss_threshold' => 2,
'consecutive_loss_lockout_minutes' => 30
],
'funded' => [
'max_per_trade_notional_usd' => 1,
'max_daily_loss_usd' => 1,
'max_daily_loss_pct' => 1,
'max_concurrent_positions' => 1,
'max_daily_trades' => 1,
'cooldown_after_loss_min' => 1,
'no_overnight' => true,
'kill_switch_engaged' => true,
'enforce_fail_closed' => true,
'flatten_time_et' => '<string>'
],
'supervised_confirm_window_seconds' => 11
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/api/graph/v1/user/risk-profile"
payload := strings.NewReader("{\n \"overrides\": {\n \"per_trade_risk_pct\": 1,\n \"max_portfolio_heat_pct\": 1,\n \"max_positions\": 2,\n \"daily_loss_limit_pct\": -1,\n \"weekly_loss_limit_pct\": -1,\n \"min_pop_gate\": 1,\n \"min_edge_ratio\": 1,\n \"options_dte_floor_swing\": 2,\n \"consecutive_loss_pause\": 2,\n \"max_position_size_multiplier\": 1\n },\n \"risk_budget\": {\n \"daily_dollars_at_risk_cap\": 5000,\n \"max_percent_equity_at_risk\": 5,\n \"daily_loss_cap\": 2000\n },\n \"mode_allowlist\": {\n \"autonomous\": true,\n \"supervised\": true,\n \"monitor\": true,\n \"manual\": true\n },\n \"round_trip\": {\n \"global_cap_per_session\": 10\n },\n \"cooling_off\": {\n \"default_cool_off_minutes\": 15,\n \"consecutive_loss_threshold\": 2,\n \"consecutive_loss_lockout_minutes\": 30\n },\n \"funded\": {\n \"max_per_trade_notional_usd\": 1,\n \"max_daily_loss_usd\": 1,\n \"max_daily_loss_pct\": 1,\n \"max_concurrent_positions\": 1,\n \"max_daily_trades\": 1,\n \"cooldown_after_loss_min\": 1,\n \"no_overnight\": true,\n \"kill_switch_engaged\": true,\n \"enforce_fail_closed\": true,\n \"flatten_time_et\": \"<string>\"\n },\n \"supervised_confirm_window_seconds\": 11\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.example.com/api/graph/v1/user/risk-profile")
.header("Content-Type", "application/json")
.body("{\n \"overrides\": {\n \"per_trade_risk_pct\": 1,\n \"max_portfolio_heat_pct\": 1,\n \"max_positions\": 2,\n \"daily_loss_limit_pct\": -1,\n \"weekly_loss_limit_pct\": -1,\n \"min_pop_gate\": 1,\n \"min_edge_ratio\": 1,\n \"options_dte_floor_swing\": 2,\n \"consecutive_loss_pause\": 2,\n \"max_position_size_multiplier\": 1\n },\n \"risk_budget\": {\n \"daily_dollars_at_risk_cap\": 5000,\n \"max_percent_equity_at_risk\": 5,\n \"daily_loss_cap\": 2000\n },\n \"mode_allowlist\": {\n \"autonomous\": true,\n \"supervised\": true,\n \"monitor\": true,\n \"manual\": true\n },\n \"round_trip\": {\n \"global_cap_per_session\": 10\n },\n \"cooling_off\": {\n \"default_cool_off_minutes\": 15,\n \"consecutive_loss_threshold\": 2,\n \"consecutive_loss_lockout_minutes\": 30\n },\n \"funded\": {\n \"max_per_trade_notional_usd\": 1,\n \"max_daily_loss_usd\": 1,\n \"max_daily_loss_pct\": 1,\n \"max_concurrent_positions\": 1,\n \"max_daily_trades\": 1,\n \"cooldown_after_loss_min\": 1,\n \"no_overnight\": true,\n \"kill_switch_engaged\": true,\n \"enforce_fail_closed\": true,\n \"flatten_time_et\": \"<string>\"\n },\n \"supervised_confirm_window_seconds\": 11\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/user/risk-profile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"overrides\": {\n \"per_trade_risk_pct\": 1,\n \"max_portfolio_heat_pct\": 1,\n \"max_positions\": 2,\n \"daily_loss_limit_pct\": -1,\n \"weekly_loss_limit_pct\": -1,\n \"min_pop_gate\": 1,\n \"min_edge_ratio\": 1,\n \"options_dte_floor_swing\": 2,\n \"consecutive_loss_pause\": 2,\n \"max_position_size_multiplier\": 1\n },\n \"risk_budget\": {\n \"daily_dollars_at_risk_cap\": 5000,\n \"max_percent_equity_at_risk\": 5,\n \"daily_loss_cap\": 2000\n },\n \"mode_allowlist\": {\n \"autonomous\": true,\n \"supervised\": true,\n \"monitor\": true,\n \"manual\": true\n },\n \"round_trip\": {\n \"global_cap_per_session\": 10\n },\n \"cooling_off\": {\n \"default_cool_off_minutes\": 15,\n \"consecutive_loss_threshold\": 2,\n \"consecutive_loss_lockout_minutes\": 30\n },\n \"funded\": {\n \"max_per_trade_notional_usd\": 1,\n \"max_daily_loss_usd\": 1,\n \"max_daily_loss_pct\": 1,\n \"max_concurrent_positions\": 1,\n \"max_daily_trades\": 1,\n \"cooldown_after_loss_min\": 1,\n \"no_overnight\": true,\n \"kill_switch_engaged\": true,\n \"enforce_fail_closed\": true,\n \"flatten_time_et\": \"<string>\"\n },\n \"supervised_confirm_window_seconds\": 11\n}"
response = http.request(request)
puts response.read_body{
"preset": "<string>",
"resolved": {
"per_trade_risk_pct": 123,
"max_portfolio_heat_pct": 123,
"max_positions": 123,
"daily_loss_limit_pct": 123,
"weekly_loss_limit_pct": 123,
"min_pop_gate": 123,
"min_edge_ratio": 123,
"options_dte_floor_swing": 123,
"consecutive_loss_pause": 123,
"max_position_size_multiplier": 123
},
"overrides": {},
"hard_caps": {},
"risk_budget": {
"daily_dollars_at_risk_cap": 5000,
"max_percent_equity_at_risk": 5,
"daily_loss_cap": 2000
},
"mode_allowlist": {
"autonomous": true,
"supervised": true,
"monitor": true,
"manual": true
},
"round_trip": {
"global_cap_per_session": 10
},
"onboarding_stage": "operator",
"cooling_off": {
"default_cool_off_minutes": 15,
"consecutive_loss_threshold": 2,
"consecutive_loss_lockout_minutes": 30
},
"funded": {},
"supervised_confirm_window_seconds": 30
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Body
conservative, moderate, aggressive Show child attributes
Show child attributes
Dollar-denominated risk caps for Trade Manager blocking rules.
Show child attributes
Show child attributes
Which Trade Manager submission modes the user is allowed to use.
Show child attributes
Show child attributes
Global round-trip limits per trading session.
Show child attributes
Show child attributes
day_0, learner, operator Anti-tilt guard configuration (spec §6.5).
Show child attributes
Show child attributes
Write-validator for the funded live-trading policy block (§3).
Field names mirror funded_policy.FundedPolicy (Python reader) and
funded_policy.go EXACTLY — both order paths read this same block directly.
All fields optional (partial PATCH). ge=0 honors an explicit 0 (a real
"pause" value) while rejecting negatives up front, so the fail-closed readers
never see a value they would silently drop. Rejecting a type mismatch here
(Pydantic 422) keeps a malformed write from ever reaching the readers, which
raise + block live trading on bad data. enforce_fail_closed is tri-state
(None = use the account-mode default). No clamp/ceiling — user values win.
Show child attributes
Show child attributes
x >= 10Response
Successful Response
Show child attributes
Show child attributes
Dollar-denominated risk caps for Trade Manager blocking rules.
Show child attributes
Show child attributes
Which Trade Manager submission modes the user is allowed to use.
Show child attributes
Show child attributes
Global round-trip limits per trading session.
Show child attributes
Show child attributes
Anti-tilt guard configuration (spec §6.5).
Show child attributes
Show child attributes