@0xinsider/sdk 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/client.d.ts +9 -73
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -3
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/provenance.js +2 -2
- package/dist/schema.d.ts +42 -81
- package/dist/schema.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/schema.d.ts
CHANGED
|
@@ -802,10 +802,10 @@ export type LargeTrade = {
|
|
|
802
802
|
/** The Polymarket CLOB token id (ERC1155 asset id, decimal string) for the traded outcome; null when unavailable (e.g. unsynced markets) and for a Polymarket trade recorded before 2026-04-02T00:00:00Z, where the traded side is unknown. */
|
|
803
803
|
token_id: string | null;
|
|
804
804
|
price: number;
|
|
805
|
-
/** Current
|
|
805
|
+
/** Current trade review score on a 0..1 scale; higher values indicate a stronger review signal. This is the current response value and can differ from the recorded score. Missing measurements remain unavailable. */
|
|
806
806
|
review_score: number;
|
|
807
807
|
/**
|
|
808
|
-
*
|
|
808
|
+
* Deprecated alias of review_score with the same current value and 0..1 scale.
|
|
809
809
|
* @deprecated
|
|
810
810
|
*/
|
|
811
811
|
signal_score: number;
|
|
@@ -1205,7 +1205,6 @@ export type PickHolder = {
|
|
|
1205
1205
|
is_bot?: boolean;
|
|
1206
1206
|
/** The wallet's X handle from its Polymarket profile, normalized to 1-15 characters of [A-Za-z0-9_] with no `@`. Link it as `https://x.com/<handle>`. Stamped at serve time from the wallet's current trader record, never frozen with the pick. The five badge fields are present together, and only for a wallet that carries at least one badge; all absent means no badge, or a body cached before the fields shipped. */
|
|
1207
1207
|
x_username?: string | null;
|
|
1208
|
-
category_evidence?: HolderCategoryEvidence;
|
|
1209
1208
|
};
|
|
1210
1209
|
export type PickOfTheDay = {
|
|
1211
1210
|
/** Always 'full' for an authenticated Pro key. */
|
|
@@ -1217,7 +1216,7 @@ export type PickOfTheDay = {
|
|
|
1217
1216
|
* @deprecated
|
|
1218
1217
|
*/
|
|
1219
1218
|
pick_rank?: number;
|
|
1220
|
-
/**
|
|
1219
|
+
/** Published picks for this product day in the returned display order. Use pick_id for identity. */
|
|
1221
1220
|
picks?: PickOfTheDay[];
|
|
1222
1221
|
/** Number of items in `picks`: the proof-readable picks. Picks held in `proof_pending_picks` are not counted. */
|
|
1223
1222
|
pick_count?: number;
|
|
@@ -1225,7 +1224,7 @@ export type PickOfTheDay = {
|
|
|
1225
1224
|
scheduled_picks?: ScheduledPickSlot[];
|
|
1226
1225
|
/** Human-readable matchup (e.g. "Portugal vs. Uzbekistan"). */
|
|
1227
1226
|
matchup?: string;
|
|
1228
|
-
/**
|
|
1227
|
+
/** Recorded canonical sport category. Prefer display_category for the public competition label. */
|
|
1229
1228
|
category?: string;
|
|
1230
1229
|
/** Frozen public presentation category: the competition the Polymarket event belongs to. A curated label comes first -- an official league (e.g. "WNBA" or "UFC"), the esports title (e.g. "CS2", "LoL", "Dota 2" or "Valorant"), or a soccer competition (e.g. "LaLiga", "Premier League", "Serie A" or "UEFA Champions League"); any other competition carries the provider's own competition name without its season year (e.g. "UEFA Nations League", "ATP" or "Wimbledon"). It equals category only when the provider names no competition. An esports pick keeps the pooled "Esports" bucket in category, so a per-title label never implies a per-title measured cohort. Additive and optional for mixed-version client compatibility. */
|
|
1231
1230
|
display_category?: string;
|
|
@@ -1251,23 +1250,19 @@ export type PickOfTheDay = {
|
|
|
1251
1250
|
position?: string;
|
|
1252
1251
|
/** One-line summary of which side sharp money is backing. Required on every item in `picks`: a current-day published pick whose required holder proof is not safely readable is listed in `proof_pending_picks` instead of being served with a partial success shape or a synthetic zero, and the route returns 503 read_model_warming only when no published pick has readable proof. */
|
|
1253
1252
|
side_summary?: string;
|
|
1254
|
-
/**
|
|
1253
|
+
/** S/A wallet count on the backed side in the public V1 compatibility projection. */
|
|
1255
1254
|
sharp_wallet_count?: number;
|
|
1256
1255
|
/**
|
|
1257
|
-
* Deprecated spelling of sharp_wallet_count
|
|
1256
|
+
* Deprecated spelling of sharp_wallet_count with the same value.
|
|
1258
1257
|
* @deprecated
|
|
1259
1258
|
*/
|
|
1260
1259
|
smart_wallet_count?: number;
|
|
1261
|
-
/** Best
|
|
1260
|
+
/** Best recorded S/A grade in the public V1 compatibility projection. */
|
|
1262
1261
|
top_grade?: string;
|
|
1263
|
-
/**
|
|
1264
|
-
category_edge_pct?: number;
|
|
1265
|
-
/** Deprecated (#7170): no longer populated for picks selected on/after the calibration-edge change; omitted (absent) for new picks (the field uses skip_serializing_if, so a null value is dropped from the JSON rather than serialized as null). Permanently frozen-legacy -- retained for historical picks, with no removal or replacement planned, so no v2 is implied. Historical picks may still carry a value. Legacy meaning: pooled count of resolved markets behind category_edge_pct (the headline's n). */
|
|
1266
|
-
category_edge_sample?: number;
|
|
1267
|
-
/** Recency-weighted graded-flow magnitude in USD; omitted when <= 0. Canonical key since #16308; smart_usd is its deprecated spelling, emitted beside it with the same value. */
|
|
1262
|
+
/** Recorded sharp-money magnitude in USD when available. */
|
|
1268
1263
|
sharp_usd?: number;
|
|
1269
1264
|
/**
|
|
1270
|
-
* Deprecated spelling of sharp_usd
|
|
1265
|
+
* Deprecated spelling of sharp_usd with the same value.
|
|
1271
1266
|
* @deprecated
|
|
1272
1267
|
*/
|
|
1273
1268
|
smart_usd?: number;
|
|
@@ -1301,67 +1296,40 @@ export type PickOfTheDay = {
|
|
|
1301
1296
|
unit_score?: number;
|
|
1302
1297
|
/** Backend-formatted signed unit score, present exactly when unit_score is present. */
|
|
1303
1298
|
unit_score_display?: string;
|
|
1304
|
-
/**
|
|
1299
|
+
/** Recorded sharp-money share as a 0..1 fraction when available. This is not a winning probability. */
|
|
1305
1300
|
sharp_pct?: number;
|
|
1306
|
-
/**
|
|
1301
|
+
/** Recorded market-implied probability as a 0..1 fraction when available. */
|
|
1307
1302
|
market_pct?: number;
|
|
1308
|
-
/**
|
|
1309
|
-
consensus_edge_pct?: number;
|
|
1310
|
-
/** First-party/internal team-directional commitment read at selection time: the fraction (0..1) of the backed side's current-policy graded sharp-money DOLLARS held by wallets read one-way rather than hedged: no opposite leg on this market worth at least 10% of the backed leg (Polymarket's own currentValue pair), and no opposing team across the game's markets where the wallet's synced legs are fresh. Current public V1 rows omit this B-inclusive read because its historical S/A equivalent is not reconstructed. A high value means the graded pile is really committed to this side; a low one means much of it is hedged or unreadable. Omitted when the read was not computed (a pick selected before the field existed, an ungroupable game, an empty graded pile, or a pile where no holder carried usable evidence) -- which is NOT the same as 0.0, a computed reading that classified holders and found none one-way. */
|
|
1311
|
-
directional_confidence?: number;
|
|
1312
|
-
/** Graded backed-side holders read as one-way-committed on this game. */
|
|
1313
|
-
one_way_holder_count?: number;
|
|
1314
|
-
/** Graded backed-side holders read as HEDGED across the game's markets. */
|
|
1315
|
-
hedged_holder_count?: number;
|
|
1316
|
-
/** The one-way holders' share of the backed-side graded dollars (the confidence's numerator). */
|
|
1317
|
-
one_way_graded_usd?: number;
|
|
1318
|
-
/** Backed-side graded dollars the confidence is measured against (its denominator). */
|
|
1319
|
-
total_graded_usd?: number;
|
|
1320
|
-
/** The qualifying category expert whose sport-specific record and real position earned this pick its top selection tier. The first-party/internal current policy admits S/A/B; public V1 exposes a compatible S/A expert and omits a current-policy B-grade expert: a candidate backed by one outranks every candidate without one. Present only on the full payload. Omitted when no wallet qualified on the backed side, on picks generated before the field existed, and on the first-party web teaser, which withholds all backed-side evidence. Frozen at SELECTION time — the wallet's position can move before the pick renders. */
|
|
1303
|
+
/** Optional recorded specialist facts. These describe the trader and do not disclose selection decisions. Present only on a full response when available. */
|
|
1321
1304
|
qualifying_expert?: {
|
|
1322
|
-
/**
|
|
1305
|
+
/** Trader wallet address. */
|
|
1323
1306
|
address: string;
|
|
1324
1307
|
/** Provider display name, or null for an unnamed wallet. */
|
|
1325
1308
|
name: string | null;
|
|
1326
|
-
/**
|
|
1309
|
+
/** Recorded trader grade. Public V1 preserves its S/A compatibility projection. */
|
|
1327
1310
|
grade: string | null;
|
|
1328
1311
|
/** The canonical sport bucket the win rate was measured over (for example Basketball). Can be BROADER than the pick's display_category, which names an exact league such as NBA — label the rate with this field, never with display_category. */
|
|
1329
1312
|
canonical_category: string;
|
|
1330
|
-
/** Share of
|
|
1313
|
+
/** Share of the trader’s resolved markets in canonical_category with positive realized P&L, as a 0..1 fraction. Null when not measured. This is a trader statistic, not the pick’s probability of winning. */
|
|
1331
1314
|
win_rate: number | null;
|
|
1332
|
-
/**
|
|
1315
|
+
/** Number of resolved markets behind win_rate; null when not measured. */
|
|
1333
1316
|
n_resolved: number | null;
|
|
1334
|
-
/**
|
|
1335
|
-
source?: "v1" | "v2";
|
|
1336
|
-
/** 95% lower bound of the wallet's mean calibration edge over the market price in canonical_category, in probability units (0.08 is 8 points). Positive by construction for a v2 expert; present on a v1 expert only when the wallet also holds a live v2 row. */
|
|
1337
|
-
edge_lower_95?: number;
|
|
1338
|
-
/** Point estimate behind edge_lower_95. */
|
|
1339
|
-
edge_mean?: number;
|
|
1340
|
-
/** Independent canonical events behind the edge. At least 10 by construction for a v2 expert. */
|
|
1341
|
-
independent_event_count?: number;
|
|
1342
|
-
/** Polymarket's own currentValue for this wallet on the backed outcome, in USD, as of selection. At least 1000 by construction through gate policy v7; the standard floor is 500 from v8. From gate policy v5 the floor is read on the net: position_usd minus opposite_position_usd is at least that floor, and the pick re-verifies that net against the live holder snapshot when it is released. */
|
|
1317
|
+
/** Recorded Polymarket position value on the backed outcome, in USD. It can change after this snapshot. */
|
|
1343
1318
|
position_usd: number;
|
|
1344
|
-
/**
|
|
1319
|
+
/** Recorded position value on the other outcome of this market, in USD. Omitted when not recorded; zero is a measured value. */
|
|
1345
1320
|
opposite_position_usd?: number;
|
|
1346
|
-
/**
|
|
1321
|
+
/** Timestamp of the recorded trader statistics. */
|
|
1347
1322
|
stats_computed_at: string;
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
/** Answered, spread-gated, index-scoped backed probability frozen only on a specialist exception. */
|
|
1351
|
-
lane_probability?: number;
|
|
1352
|
-
/** Canonical provider probability pair branch; absent on standard experts. */
|
|
1353
|
-
lane_probability_source?: "p";
|
|
1354
|
-
};
|
|
1355
|
-
trust?: PickTrust;
|
|
1356
|
-
/** Public V1 S/A compatibility count on the backed side (equals the adapted sharp_wallet_count). The first-party/internal current policy counts S/A/B. Historical rows retain their frozen policy's count. */
|
|
1323
|
+
};
|
|
1324
|
+
/** Public V1 S/A wallet count on the backed side, equal to sharp_wallet_count. */
|
|
1357
1325
|
traders?: number;
|
|
1358
|
-
/**
|
|
1326
|
+
/** Recorded backed-side sharp-money value in USD when available. */
|
|
1359
1327
|
backed_sharp_usd?: number;
|
|
1360
|
-
/** Bounded S/A
|
|
1328
|
+
/** Bounded S/A holder display projection. Historical rows retain their recorded display shape. */
|
|
1361
1329
|
holders?: PickHolder[];
|
|
1362
|
-
/**
|
|
1330
|
+
/** Optional complete holder display roster. Each entry carries ordinary trader and recorded position facts. */
|
|
1363
1331
|
display_holders?: PickHolder[];
|
|
1364
|
-
/**
|
|
1332
|
+
/** S/A holder count for the public V1 compatibility projection. display_holders can include additional grades. */
|
|
1365
1333
|
holder_count?: number;
|
|
1366
1334
|
/** Optional editorial note attached to the pick. */
|
|
1367
1335
|
editorial_note?: string;
|
|
@@ -1373,17 +1341,15 @@ export type PickOfTheDay = {
|
|
|
1373
1341
|
polymarket_url?: string;
|
|
1374
1342
|
/** The canonical /event game-page slug (one neutral page per game); omitted when the game has no neutral event page. */
|
|
1375
1343
|
event_slug?: string;
|
|
1376
|
-
/** Backend-resolved /event destination slug for
|
|
1377
|
-
event_link_slug?: string;
|
|
1344
|
+
/** Backend-resolved /event destination slug for the source market. Omitted outside full responses; null is an authoritative no-link decision. */
|
|
1345
|
+
event_link_slug?: string | null;
|
|
1378
1346
|
/** Provider-first sports context for the pick's market (team logos, league branding, live score). Full-state only; omitted when the pick is not a team-sports market. */
|
|
1379
1347
|
sports_context?: PickSportsContext;
|
|
1380
1348
|
/** Risk disclaimer shown with every pick. */
|
|
1381
1349
|
disclaimer?: string;
|
|
1382
1350
|
/** Published same-day picks whose holder proof is not readable yet, ordered by pick_rank. Additive and optional: present only while at least one such pick exists. While present, `picks` carries only the proof-readable picks and `pick_count` counts them. Schedule the next read from the earliest retry_at instead of polling. The route returns 503 read_model_warming only when no published pick has readable proof. */
|
|
1383
1351
|
proof_pending_picks?: ProofPendingPickSlot[];
|
|
1384
|
-
/**
|
|
1385
|
-
selection_lane?: "standard" | "longshot_specialist";
|
|
1386
|
-
/** Optional full-only authorization for newly issued policy-7 picks; omitted for legacy or unissued picks and teasers. It remains historical after expiry. */
|
|
1352
|
+
/** Optional full-response entry authorization. Missing or expired authorization cannot authorize an automated entry. */
|
|
1387
1353
|
entry_authorization?: PotdEntryAuthorization;
|
|
1388
1354
|
/** Stable pick row identity as decimal text. Never use a quality rank as identity. */
|
|
1389
1355
|
pick_id?: string;
|
|
@@ -1795,11 +1761,6 @@ export type PickSportsTeam = {
|
|
|
1795
1761
|
/** Completed sets won by this side. Present only when both sides expose the same set columns, so a partially parsed scoreline reports no tally rather than a misleading one. */
|
|
1796
1762
|
sets_won?: number;
|
|
1797
1763
|
};
|
|
1798
|
-
/** Field-level trust metadata for the full Pick of the Day payload. Present on the full shape only (omitted on the teaser and the no-pick state, because whether a specialist backs the pick is itself backed-side evidence). Unlike TraderTrust it is not gated behind expand=trust: it carries one member on an endpoint that returns a single object per day. */
|
|
1799
|
-
export type PickTrust = {
|
|
1800
|
-
/** Provenance of the frozen qualifying category expert. source.kind=database with reconciliation.status=db_mirror means the evidence deserialized, still satisfies every frozen selection gate, and is being served. On that arm freshness.status is always not_live and never fresh, because this evidence is frozen at selection and never refreshed, so on an archived pick the as_of (the expert's own stats_computed_at) can be days or months old by design. source.kind=computed with reconciliation.status=not_applicable means the selector evaluated the backed side and nobody qualified -- a real negative. source.kind=computed with freshness.status=unknown and completeness.status=not_computed means the selector never evaluated this field, as on a pre-feature pick. source.kind=unavailable means the payload is malformed, violates a selection gate, or conflicts with its persisted status, or the public V1 adapter intentionally omitted a current-policy B-grade expert; read the reason before treating it as a negative. Do not read an omitted qualifying_expert as 'no specialist' without checking this field. */
|
|
1801
|
-
qualifying_expert: TrustMetadata;
|
|
1802
|
-
};
|
|
1803
1764
|
export type PlatformCapabilities = {
|
|
1804
1765
|
grade: PlatformCapabilityStatus;
|
|
1805
1766
|
pnl: PlatformCapabilityStatus;
|
|
@@ -1909,7 +1870,7 @@ export type PositionTimelineEvent = {
|
|
|
1909
1870
|
/** Cumulative buy-weighted average of stored fills for this outcome, including older pages; not provider current-position avgPrice. Sells do not change this value. 0 when no stored buys have occurred yet. */
|
|
1910
1871
|
running_avg_price: number;
|
|
1911
1872
|
};
|
|
1912
|
-
/**
|
|
1873
|
+
/** Returned entry permission bound to the named market, token and outcome. Honor max_entry_price and expires_at, and check a current executable order book for the actual stake. This snapshot does not guarantee current liquidity, execution or positive expected value. */
|
|
1913
1874
|
export type PotdEntryAuthorization = {
|
|
1914
1875
|
version: 1;
|
|
1915
1876
|
authorization_id: string;
|
|
@@ -1921,13 +1882,13 @@ export type PotdEntryAuthorization = {
|
|
|
1921
1882
|
category: string;
|
|
1922
1883
|
/** Exact provider parent event ID, or provider event ID when no parent exists. */
|
|
1923
1884
|
canonical_event_id: string;
|
|
1924
|
-
/**
|
|
1885
|
+
/** Returned maximum entry price as an exact decimal string. Honor this bound; fees are excluded. This is not a fair probability. */
|
|
1925
1886
|
max_entry_price: string;
|
|
1926
1887
|
reference_best_ask: string;
|
|
1927
1888
|
reference_book_hash: string;
|
|
1928
1889
|
reference_book_at: string;
|
|
1929
1890
|
issued_at: string;
|
|
1930
|
-
/**
|
|
1891
|
+
/** Authorization expiry. An expired authorization cannot authorize a new automated entry. */
|
|
1931
1892
|
expires_at: string;
|
|
1932
1893
|
};
|
|
1933
1894
|
/** One ranked pre-game sports market where graded sharp money is piled on one side, with required-status shadow category evidence from partial forward-observed Polymarket fills. */
|
|
@@ -1936,7 +1897,7 @@ export type PreGameSide = {
|
|
|
1936
1897
|
side: string | null;
|
|
1937
1898
|
/** UTC time at which the snapshot that ranked this row was computed. Canonical spelling of signal_created_at (#16310), same value. */
|
|
1938
1899
|
ranked_at: string;
|
|
1939
|
-
/**
|
|
1900
|
+
/** Recorded side backing score; higher values indicate stronger backing. */
|
|
1940
1901
|
backing_score: number;
|
|
1941
1902
|
/** Signed share of graded money on the side, (yes_usd - no_usd)/(yes_usd + no_usd) in [-1, 1] (side-yes positive, side-no negative). Canonical spelling of smart_score (#16309, #16310), same value. */
|
|
1942
1903
|
side_share: number | null;
|
|
@@ -1979,7 +1940,7 @@ export type PreGameSide = {
|
|
|
1979
1940
|
/** Best grade present on the piled side; null when none. */
|
|
1980
1941
|
top_grade: "S" | "A" | "B" | null;
|
|
1981
1942
|
/**
|
|
1982
|
-
* Canonical sharp-money score (yes_usd - no_usd)/(yes_usd + no_usd) in [-1, 1] (piled-yes positive, piled-no negative)
|
|
1943
|
+
* Canonical sharp-money score (yes_usd - no_usd)/(yes_usd + no_usd) in [-1, 1] (piled-yes positive, piled-no negative). Deprecated (#16310): `side_share` is the canonical spelling and carries the same value; this key stays on the wire.
|
|
1983
1944
|
* @deprecated
|
|
1984
1945
|
*/
|
|
1985
1946
|
smart_score: number | null;
|
|
@@ -1988,7 +1949,7 @@ export type PreGameSide = {
|
|
|
1988
1949
|
/** Aggregate recent flow direction on the market; null when unavailable. */
|
|
1989
1950
|
net_side: "BUY" | "SELL" | null;
|
|
1990
1951
|
/**
|
|
1991
|
-
*
|
|
1952
|
+
* Recorded conviction score; higher values indicate stronger conviction.
|
|
1992
1953
|
* @deprecated
|
|
1993
1954
|
*/
|
|
1994
1955
|
conviction_score: number;
|
|
@@ -2000,7 +1961,7 @@ export type PreGameSide = {
|
|
|
2000
1961
|
one_way_graded_usd: number | null;
|
|
2001
1962
|
/** One-way fraction of the piled graded dollars, in [0, 1] -- the metric orthogonal to sharp_pct. Stale, unknown, hedged, and two-sided dollars dilute it toward zero (conservative). Null when the directional read was not computed or classified nobody. */
|
|
2002
1963
|
directional_confidence: number | null;
|
|
2003
|
-
/**
|
|
1964
|
+
/** Recorded side ordering score; higher values sort first. */
|
|
2004
1965
|
directional_rank_score: number;
|
|
2005
1966
|
category_skill: PreGameSideCategorySkill;
|
|
2006
1967
|
/** 1-based rank within the (min_grade-filtered) ranked result. */
|
|
@@ -2037,7 +1998,7 @@ export type PreGameSideFunnelReport = {
|
|
|
2037
1998
|
export type PreGameSideObservation = {
|
|
2038
1999
|
/** The side profitable wallets hold, as a provider-backed display label. Canonical spelling of piled_side (#16310), same value: when provider group context is unavailable it may remain a bare Yes/No/Over/Under, so do not use it alone as participant identity. */
|
|
2039
2000
|
side: string | null;
|
|
2040
|
-
/**
|
|
2001
|
+
/** Recorded side backing score; higher values indicate stronger backing. */
|
|
2041
2002
|
backing_score: number;
|
|
2042
2003
|
/** Signed share of graded money on the side, in [-1, 1]. Canonical spelling of smart_score (#16309, #16310), same value. */
|
|
2043
2004
|
side_share: number;
|
|
@@ -2091,7 +2052,7 @@ export type PreGameSideObservation = {
|
|
|
2091
2052
|
/** Strictly positive stored market volume in USD. Missing, zero, or non-finite volume terminates as invalid_market and is never emitted as an observation. */
|
|
2092
2053
|
volume: number;
|
|
2093
2054
|
/**
|
|
2094
|
-
*
|
|
2055
|
+
* Recorded conviction score; higher values indicate stronger conviction.
|
|
2095
2056
|
* @deprecated
|
|
2096
2057
|
*/
|
|
2097
2058
|
conviction_score: number;
|
|
@@ -2107,7 +2068,7 @@ export type PreGameSideObservation = {
|
|
|
2107
2068
|
hedged_holder_count: number | null;
|
|
2108
2069
|
one_way_graded_usd: number | null;
|
|
2109
2070
|
directional_confidence: number | null;
|
|
2110
|
-
/**
|
|
2071
|
+
/** Recorded side ordering score; higher values sort first. */
|
|
2111
2072
|
directional_rank_score: number;
|
|
2112
2073
|
/** 1-based rank within this observation cohort and snapshot. */
|
|
2113
2074
|
rank: number;
|
|
@@ -2424,9 +2385,9 @@ export type Trader = {
|
|
|
2424
2385
|
/** Hot-streak tier (trailing-7d cross-sectional percentile); a separate axis from the all-time grade. Omitted when there is no recent activity. */
|
|
2425
2386
|
streak_tier?: "hot" | "rising" | "neutral" | "cooling" | "cold";
|
|
2426
2387
|
score?: number;
|
|
2427
|
-
/**
|
|
2388
|
+
/** Optional forecast score on the documented display scale. Null when unavailable. */
|
|
2428
2389
|
forecast_score?: number;
|
|
2429
|
-
/**
|
|
2390
|
+
/** Optional measured forecast context. Missing values remain unavailable rather than being inferred. */
|
|
2430
2391
|
forecast_evidence?: number;
|
|
2431
2392
|
rank?: number;
|
|
2432
2393
|
pnl: {
|
|
@@ -2455,11 +2416,11 @@ export type Trader = {
|
|
|
2455
2416
|
description?: string;
|
|
2456
2417
|
confidence?: number;
|
|
2457
2418
|
};
|
|
2458
|
-
/** Per-category
|
|
2419
|
+
/** Per-category rank context when expand=categories is requested. Values include available rank, category totals, performance and record counts; scaled_total_pnl is a legacy alias of total_pnl. Its measurement basis and update timing differ from the plain record returned by GET /api/v1/trader/{address}/categories, so the two need not agree. Use this for rank context and that route for the plain record. The inner key-set is intentionally unconstrained and may contain additional compatibility fields. */
|
|
2459
2420
|
category_strengths?: Record<string, unknown>;
|
|
2460
2421
|
/** Curated advanced risk/performance metrics (expand=quant_metrics or expand[]=quant_metrics). Omitted unless expanded and backed by a computed row strictly under six hours old; a missing row, NULL computed_at, or age of exactly six hours or more is stale and omitted. Provider-input changes may intentionally lag inside the bounded six-hour window. When present, all listed fields are present (each is a number or null); null means insufficient trade history and must not be treated as 0. The fixed field shape is unchanged. */
|
|
2461
2422
|
quant_metrics?: {
|
|
2462
|
-
/**
|
|
2423
|
+
/** Trader smart score on a 0..100 display scale; higher is stronger. Null when unavailable. */
|
|
2463
2424
|
smart_score: number | null;
|
|
2464
2425
|
/** Copyability score, 0-100. Same base as smart_score minus penalties for traits that make a strategy hard to replicate: -20 if fewer than 50 markets traded, -15 if positions are highly concentrated, -15 if position sizing exceeds about 2x Kelly, -10 if the worst single-trade loss exceeds 30%, -10 if edge is inconsistent; result clamped to 0-100. Higher means easier to follow. null when insufficient history. */
|
|
2465
2426
|
copy_score: number | null;
|