GET /traders/{address}/statements: Full PMWAS Statement
curl --request GET \
--url https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statementsimport requests
url = "https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements', 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://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements",
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://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements"
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://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements")
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{
"statement": {
"period": {},
"disclosure": {
"cost_basis_method": "<string>",
"jurisdiction_profile": "<string>",
"long_term_threshold_days": 123,
"wash_sale_enabled": true,
"price_source": "<string>",
"valuation_timestamp": "<string>"
},
"reconciliation_certificate": {},
"reports": {}
}
}Trader Data API
GET /traders/{address}/statements: Full PMWAS Statement
Complete §20 PMWAS statement containing all eight reports (R1–R8) for a wallet.
GET
/
trader-analytics
/
traders
/
{address}
/
statements
GET /traders/{address}/statements: Full PMWAS Statement
curl --request GET \
--url https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statementsimport requests
url = "https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements', 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://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements",
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://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements"
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://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements")
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{
"statement": {
"period": {},
"disclosure": {
"cost_basis_method": "<string>",
"jurisdiction_profile": "<string>",
"long_term_threshold_days": 123,
"wash_sale_enabled": true,
"price_source": "<string>",
"valuation_timestamp": "<string>"
},
"reconciliation_certificate": {},
"reports": {}
}
}Sign each request with a fresh HMAC signature. The cURL and HTTP header values below are placeholders, not reusable credentials. For runnable signing code, use request signing examples. Python examples use the signed session from that page; Node.js examples use its
bravadoFetch helper.Statements are precomputed for a set of wallets. For any other wallet this endpoint returns
404 with "code": "STATEMENT_NOT_AVAILABLE", and retrying will not change the answer. For realized, unrealized and overall PnL of any wallet, including open positions that were never closed, use GET /traders/{address}.GET https://partner-api.bravadotrade.com/trader-analytics/traders/{address}/statements
Report Overview
| Report | Description |
|---|---|
| R1 | Form-8949-style dispositions: per-lot gain/loss, term, cost basis method |
| R2 | Income: liquidity rewards, maker rebates, referral rewards |
| R3 | Open positions with mark price and valuation confidence |
| R4 | Capital flows: deposits, withdrawals, transfers |
| R5 | Realized PnL summary by market |
| R6 | Fee breakdown by role |
| R7 | Performance metrics: NAV, PnL, ROI, TWR, MWR, win rate |
| R8 | Reconciliation certificate |
Path Parameters
Query Parameters
integer
default:"500"
Maximum R1 rows to include. Maximum
5000. For wallets with many dispositions, use has_more_r1 and /statements/r1 to paginate.Response
object
The complete §20 statement object.
Show Statement fields
Show Statement fields
object
{from, to} ISO 8601 range.object
object
R8 certificate. See /reconciliation.
object
Map of
r1–r8 to report objects.Formal accounting endpoints require wallet data to be fully indexed. A
503 with {"available": false} means data is not yet ready. Retry in a few minutes.Example
curl -G https://partner-api.bravadotrade.com/trader-analytics/traders/0xabc.../statements \
-H "X-BRAVADO-API-KEY: $BRAVADO_API_KEY" \
-H "X-BRAVADO-TIMESTAMP: <unix-ms>" \
-H "X-BRAVADO-SIGNATURE: <signature-for-this-request>" \
-d r1_limit=100 \
-d basis=net
{
"trader": "0xabc...",
"has_more_r1": true,
"r1_total": 842,
"statement": {
"period": { "from": "2023-01-01T00:00:00Z", "to": "2025-01-15T00:00:00Z" },
"disclosure": {
"cost_basis_method": "FIFO",
"jurisdiction_profile": "US_INDIVIDUAL",
"long_term_threshold_days": 365
},
"reconciliation_certificate": { "I1": "0", "I2": "0", "I3": "0", "I4": "0", "all_zero": true }
}
}