GET/api/research/cost-fieldnew
One entry per resolved sized trade as parallel arrays: gross R before cost, real recorded round-trip cost in R, and asset class. Net R per trade is grossR[i] minus costR[i]. This is the raw dataset behind the homepage Cost Field scene, with no aggregation applied.
- scope = pro | broadcast
- full track record (default) or gate-approved rows only
- period
- optional window filter, same grammar as the history route
Response shape
{ classes: ["crypto","metals","fx"], count, resolvedTotal, t[], grossR[], costR[], cls[] }
curl https://tradeclaw.win/api/research/cost-field
GET/api/signals/equity
Cost-adjusted equity curve plus a summary block. Each sized trade risks 1% of equity and is charged its real recorded execution cost, so the curve and the net expectancy figure are what a subscriber would actually have realized.
- summaryOnly = 1 | true
- drop the point array, return summary and rolling win rates only
- scope = pro | broadcast
- full record (default) or gate-approved rows
- band = premium | standard | all
- filter by confidence band
- category
- asset-category filter (e.g. crypto, fx)
- period
- optional window filter
- smooth = median2x | median3x
- opt-in R-cap on the curve; off by default
Response shape
{ points[], summary: { totalReturn, maxDrawdown, winRate, sizedTrades, expectancyR, netExpectancyR, avgCostR, roundTripCostPct, breakEvenWinRate, sharpeRatio, hardRCap, ... }, rollingWinRates: { "7d","30d","90d" }, band, scope, category, smooth }
curl 'https://tradeclaw.win/api/signals/equity?summaryOnly=1&scope=pro'
GET/api/signals/history
Resolved signal history, paginated, with the same win-rate and resolved counts every other surface uses. Add format=csv to stream the full filtered set as a CSV file with an id, pair, direction, prices, and 4h/24h outcome columns.
- format = json | csv
- JSON page (default) or a downloadable CSV of the filtered set
- pair
- single symbol, e.g. BTCUSD
- direction = BUY | SELL
- filter by trade side
- outcome = win | loss | pending
- filter by resolved outcome
- limit = max 200
- page size, default 50
- offset
- pagination offset
- scope / category / period / sort
- record scope, asset category, time window, ordering (sort=resolved-first)
Response shape
{ records[], total, offset, limit, scope, category, earliestTimestamp, latestTimestamp, stats: { totalSignals, resolved, wins, losses, winRate, avgConfidence, streak, bestSignal, ... } }
curl 'https://tradeclaw.win/api/signals/history?limit=50&outcome=win'
CSV export (16 columns, opens in any spreadsheet)
curl 'https://tradeclaw.win/api/signals/history?format=csv' -o tradeclaw-history.csv
GET/api/calibration
The reliability data behind the /calibration page. Signals are bucketed into five confidence bands and each band reports its real win rate, so you can see whether a 70% call actually wins 70% of the time. Includes Brier score and expected calibration error over the resolved population. Cached 5 minutes (revalidate 300).
- (none)
- no query params; measures the full counted-resolved population
Response shape
{ buckets: [5 confidence bands], overallAccuracy, totalSignals, brier, ece, calibration, windowStart, windowEnd, insufficientData, minStableSignals, updatedAt }
curl https://tradeclaw.win/api/calibration
Rendered on /calibration.
GET/feed.json
The 50 most recent signals as a subscribable feed. Also served as RSS 2.0 at /feed.xml and Atom 1.0 at /atom.xml for any reader.
- (none)
- point a JSON Feed, RSS, or Atom reader at the URL
Response shape
JSON Feed 1.1: { version, title, feed_url, items: [ { id, url, title, content_html, summary, date_published, tags } ] }
curl https://tradeclaw.win/feed.json