curl --request POST \
--url https://api.example.com/api/graph/v1/options/debate/{symbol}import requests
url = "https://api.example.com/api/graph/v1/options/debate/{symbol}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/api/graph/v1/options/debate/{symbol}', 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/options/debate/{symbol}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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://api.example.com/api/graph/v1/options/debate/{symbol}"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/graph/v1/options/debate/{symbol}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/options/debate/{symbol}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"bear_thesis": {
"confidence": 58,
"headline": "Extended valuation and earnings risk",
"strength": "MODERATE",
"symbol": "NVDA"
},
"bull_thesis": {
"confidence": 72,
"headline": "Strong momentum with volume confirmation",
"strength": "STRONG",
"symbol": "NVDA"
},
"request": {
"include_historical": true,
"risk_appetite": "moderate",
"symbol": "NVDA",
"timeframe": "swing",
"verbose": false
},
"symbol": "NVDA",
"timestamp": "2026-01-29T10:30:00Z",
"verdict": {
"confidence": 65,
"deciding_factors": [
"Technical momentum outweighs valuation concern",
"FPT suggests favorable timing"
],
"key_risk": "Earnings in 2 weeks",
"timing_recommendation": "Enter on pullback to support",
"verdict": "BUY"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Run options-focused investment debate
Run a complete debate with enhanced options context.
Same 3-agent (Bull/Bear/Arbiter) workflow as the standard debate, but the agents receive additional options-specific context:
- IV surface: Term structure shape, skew ratio, ATM IV percentile
- Options flow: Unusual activity, signal direction and strength
- Options confluence: Standalone options score (0-100)
- Strategy recommendation: Best options strategy for current setup
- Quality gates: Spread quality, IV floor, theta drag, OI minimum
The bull agent frames options as opportunity (cheap vol, favorable skew). The bear agent challenges with options risks (IV crush, theta drag, liquidity). The arbiter integrates options confluence alongside equity confluence.
Performance
Same as standard debate: 15-30 seconds.
curl --request POST \
--url https://api.example.com/api/graph/v1/options/debate/{symbol}import requests
url = "https://api.example.com/api/graph/v1/options/debate/{symbol}"
response = requests.post(url)
print(response.text)const options = {method: 'POST'};
fetch('https://api.example.com/api/graph/v1/options/debate/{symbol}', 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/options/debate/{symbol}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
]);
$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://api.example.com/api/graph/v1/options/debate/{symbol}"
req, _ := http.NewRequest("POST", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.example.com/api/graph/v1/options/debate/{symbol}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/graph/v1/options/debate/{symbol}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
response = http.request(request)
puts response.read_body{
"bear_thesis": {
"confidence": 58,
"headline": "Extended valuation and earnings risk",
"strength": "MODERATE",
"symbol": "NVDA"
},
"bull_thesis": {
"confidence": 72,
"headline": "Strong momentum with volume confirmation",
"strength": "STRONG",
"symbol": "NVDA"
},
"request": {
"include_historical": true,
"risk_appetite": "moderate",
"symbol": "NVDA",
"timeframe": "swing",
"verbose": false
},
"symbol": "NVDA",
"timestamp": "2026-01-29T10:30:00Z",
"verdict": {
"confidence": 65,
"deciding_factors": [
"Technical momentum outweighs valuation concern",
"FPT suggests favorable timing"
],
"key_risk": "Earnings in 2 weeks",
"timing_recommendation": "Enter on pullback to support",
"verdict": "BUY"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Path Parameters
Query Parameters
Trading timeframe
day, swing, position, investment Risk appetite level
conservative, moderate, aggressive LLM model override (e.g. 'gpt-5.2', 'grok-4-1-fast-reasoning'). None = default.
Response
Options debate completed
Complete debate response with all agent outputs.
Stock ticker symbol
Original request parameters
Show child attributes
Show child attributes
Bull agent thesis
Show child attributes
Show child attributes
Bear agent counter-thesis
Show child attributes
Show child attributes
Arbiter final verdict
Show child attributes
Show child attributes
Market data context used in debate
Show child attributes
Show child attributes
When debate completed
UUID of persisted debate run
Total debate duration in milliseconds
Total tokens consumed across all agents
Whether all critical validations passed
True if debate was not persisted due to validation failure
Overall quality score (0-100)
0 <= x <= 100List of validation issues found
Status of historical analog retrieval
unavailable, empty, found Show child attributes
Show child attributes