AstralXCompetition technology brief
05 November 2026

排名数据接口对接说明

Ranking API Handoff

供 AstralX 技术与赛事运营团队确认的数据约定。当前为 20 个账户的排名演示;本文件不表示已经连接 AstralX 实时账户或交易系统。

A proposed data contract for AstralX engineering and competition operations. The current leaderboard demonstrates 20 accounts; it is not connected to AstralX live accounts or trading systems.

从演示排名到正式数据接入

1 当前已实现的范围

当前网站的 GET /api/rankings 提供 20 个示例账户的动态演示,每 5 秒按服务端共享时段生成确定性的收益与排名变化,并保持账户净值、总收益和品种贡献一致。sequence = Math.floor(serverNow / 5000),其中 serverNow 为 Unix 时间毫秒数,同一时段返回相同快照。响应始终为 mode: "demo"、asOf: null;序号表示模拟更新时段,不是 AstralX 交易数据时间。

排名页与独立的 /live-preview 首页预览中的动态排名面板每 5 秒获取一次演示快照,收益和排名变化配有名次超越动画。预览的动态面板每页展示 5 个账户,每 5 秒翻页,循环展示全部 20 个账户。/live-preview 明确标注为模拟预览,不代表真实交易或正式开赛。所有示例策略保持 pending,空头像使用人物剪影,不编造策略标签,也不制造来源时间戳。

预览页标题下方的“过去 24 小时”行情条使用另一份固定快照:GET /api/rankings/previous-24h 返回 { mode: "demo", periodStart, periodEnd, entries },其中 entries 为 20 条 { id, rank, alias, totalReturnPct } 公开投影。区间为今天 00:00 UTC 之前的完整 24 小时,起点包含、终点不含;模拟快照取截止前最后一个模拟时点,全天固定,不随当前收益的 5 秒更新变化。它是模拟历史演示,并非 AstralX 的真实历史或收盘数据。“昨日赛况”报道使用同一完整内部快照的前三名及各自最盈利品种,不增加公开历史接口字段。

该地址是我们的网站接口,不是 AstralX 已提供的接口。正式接入时,需要由网站服务端适配 AstralX 的只读数据源,再按本文件的数据结构向页面提供已清理的公开资料。

首页与排名页使用一致的固定顶部导航:HOME/RULES/SCHEDULE/RANKINGS/REGISTER。正式首页与模拟预览分开:正式首页排名跑马灯仅在已确认开赛时间到达、数据为 live 且快照仍新鲜时启用。开赛配置 competitionSchedule.startAt 当前待定,正式首页保持等待开赛状态,演示数据不会触发正式赛事的实时榜单。

2 AstralX 需要提供什么

此处的调用频率为接入建议,不是现有实时更新承诺。服务端调用与浏览器刷新应分开管理,避免每个访客直接触发 AstralX 上游请求。

报名与交易账号的核对:双方还需确认「本站报名编号/登记邮箱 → AstralX 用户 UID/比赛账户 → 公开交易员 ID」的私有映射和账号归属验证方式。目前社媒提交已与本站报名记录关联,但尚未与 AstralX 账号关联;仅填写邮箱不能证明平台账号归属。AstralX 可提供经授权的核对接口或经双方确认的批量对账机制。邮箱、UID 和交易账号仅在受限服务端处理,公开榜单只使用匿名 ID。

3 收益数字的准确含义

当前模拟账户初始资金为 100,000 美元,展示币种为 USD。演示假设没有追加或提取资金,账户净值包含浮动盈亏和费用影响。正式模式下,资金变动调整、排名指标、同分处理、取消资格和结算方式均须由 AstralX 确认。

contributionPct = 品种净盈亏 ÷ initialEquity × 100

contributionPct 表示该品种对整个账户收益率的百分点贡献,不是该品种按独立投入资金计算的投资回报率。各品种 pnl 的合计应与账户净盈亏核对一致,各品种 contributionPct 的合计应等于 totalReturnPct,仅允许双方约定的舍入误差。

在无资金流动的演示假设下:totalReturnPct = (equity − initialEquity) ÷ initialEquity × 100。例如净值 112,500 美元,账户收益率为 12.5%;BTC 净盈亏 8,000 美元贡献 8 个百分点,ETH 净盈亏 4,500 美元贡献 4.5 个百分点。不能把“8 个百分点贡献”描述为“BTC 独立收益率 8%”。

若正式数据中存在无法分摊到品种的费用、资金流动或其他调整项,应先确认分摊规则或扩展接口结构,再启用实时模式,不把差额悄悄计入某个品种。

4 公开资料与社媒展示

公开响应只包含展示所需的匿名 ID、昵称、授权头像、经复核的策略摘要及汇总数字。不得包含真实券商登录名、邮箱、电话、密钥、原始交易记录或私有订单明细。策略摘要仅作交易记录的事实性说明,不构成交易建议或资格认定。

avatar 包含 url 和 consented。仅可提供 AstralX 授权公开、通过来源核验的 HTTPS 头像地址;没有可公开头像时使用 url: null 并显示人物剪影。未授权时必须同时设置 consented: false 和 url: null。头像链接不得携带上游服务凭证,授权撤回后应移除公开地址。

strategy 包含 status、summary、basedOn 和 asOf。待生成状态为 status: "pending",其余三个字段均为 null。就绪状态为 status: "ready",须同时有双语摘要、basedOn: "trade_records" 及有效 UTC 时间。

后续可由 AstralX 直接提供已审核的双语摘要,或在获准接收真实交易记录后由服务端 AI 辅助归纳,再经人工复核和展示授权。当前未实现 AI 分析流程,也未取得任何交易记录或私有数据库访问权限。数据不足时保持 pending,不得从收益率臆测纪律、交易风格、意图或交易方法。

摘要只能描述记录可支持的事实。发布时应在摘要中交代观察时间窗口与数据来源;strategy.asOf 表示摘要所依据记录的截止时间,不得伪装成持续更新的分析。原始记录、分析过程及复核授权证据仅在受限服务端处理,不向公开接口输出。

社媒展示为自愿选择。AstralX 或约定的运营方须核验链接归属并留存本人展示授权;只有授权有效且链接通过核验时才输出可点击地址。撤回授权后应停止公开展示。该功能不会代替交易员发布、转发或自动分享任何内容。

socials 仅支持 x、telegram、youtube、instagram。没有可公开链接时使用空数组,或使用 url: null 且 consented: false;不能用虚构个人主页补位。链接须使用 HTTPS、符合平台域名白名单且不携带密钥。授权证据和核验记录留在受限服务端,不进入公开响应。

登记系统按规范化邮箱禁止重复报名:已存在的邮箱返回 409 already_registered,不跳转报名成功页、不增加报名人数,也不发放新的公开档案凭证。只有新接受的登记可取得 24 小时凭证;重复报名不能续期或恢复档案访问。

通过校验及限流后被识别为重复的请求会记入 duplicateAttempts 和 lastDuplicateAt,仅供后台及登记 CSV 查看。该统计表示未核验的邮箱重复尝试,不代表不同用户或真实身份。后台社媒记录另外展示对应登记编号、姓名、登记时间、展示授权及更新时间;这些资料不进入公开排名接口。

5 异常与过期数据

以下是正式接入的验收要求。当前未实现 AstralX 上游适配器、上游退避重试或上游错误日志;网页现阶段按固定 5 秒频率刷新演示接口,不能据此认定正式服务能力已完成。

6 需要确认的负责人和参数

事项待确认内容
数据服务与鉴权上游 URL、服务负责人、服务账号或鉴权方式、权限范围、凭证轮换、测试环境和正式环境。
赛事与计算口径正式赛事 ID、账号映射、完整排名范围、同分、取消资格、净值及费用定义、资金变动调整、金额精度;确认开赛配置 competitionSchedule.startAt,当前待定。
运行与支持正式 5 秒更新目标是否可行、延迟目标、限流、缓存;确认当前 20 秒过期阈值是否适合正式源,以及事故联系人、维护通知和版本变更流程。
公开资料管理授权头像来源及域名、社媒归属核验、授权留存及撤回处理负责人;撤回到页面移除的最长时限。
策略摘要流程AstralX 供应已审核摘要或授权服务端分析的方式、可用交易记录及观察窗口、数据充分性标准、人工复核及发布授权负责人;AI 接入与数据访问均未实施。

7 接入验收清单

  1. 20 个演示账户完整可读且无重复 ID;昵称、币种和双语品种标签展示正确。所有演示策略为 pending 且其余策略字段为 null;空头像使用剪影,不出现虚构策略标签。20 是当前演示规模,正式返回范围另行确认。
  2. 同一服务端 5 秒时段返回一致的演示快照;跨时段的收益与名次变化仍可对账,动态面板每 5 秒刷新并展示名次超越动画。模拟首页动态面板每页 5 人、5 秒翻页、20 人循环;标题下的历史行情条保持上一完整 UTC 日的固定结果,不混入当前收益。
  3. 演示、实时、过期与不可用状态可辨识;演示时间保持空值,实时数据使用有效 UTC 来源时间。
  4. 同一赛事快照序号单调递增,过时或乱序快照不倒退页面;账号 ID 在刷新前后稳定。并列名次按正式规则验收,不能自行重新排序。
  5. 正负收益、浮动盈亏、费用与品种贡献可对账;NaN、无限值和误用百分数单位被拒绝。舍入容差待定。
  6. 鉴权失败、超时、429 限流和数据校验失败不会清零榜单;首次无数据与已有旧数据两种情形均有测试。
  7. 浏览器和公开响应无上游凭证、邮箱、真实交易账号、原始交易记录或订单明细;未授权、撤回授权及异常来源的头像和社媒链接不会公开。
  8. 策略 ready 状态必须具备双语事实摘要、trade_records 来源标识、有效截止时间、摘要中的观察窗口及来源说明,并已人工复核且获展示授权;记录不足保持 pending。
  9. 统一顺序的固定顶部导航可用;/live-preview 始终有模拟标识。正式首页在开赛时间待定、未到开赛时间、demo、过期或不可用时均不启用实时榜单,只有确认开赛且 live 数据新鲜时才展示。
  10. 登记后自愿提交的社媒资料仅进入后台独立的未核验、待审核记录;填写或审核队列本身不会将链接发布到公开排名 API。
  11. 重复邮箱返回 409,不产生成功跳转、新登记或新凭证,公开人数不变;后台的重复尝试次数与时间可追溯,但不作为身份核验依据。
  12. AstralX 确认数据定义、正式排名和负责人员后,才将数据适配器切换到正式源并启用 mode: "live"。

From demo rankings to a production feed

1 Current scope

The website’s GET /api/rankings provides a dynamic demonstration of 20 sample accounts. A shared server tick generates deterministic return and ranking changes every 5 seconds while keeping equity, total returns and instrument contributions consistent. sequence = Math.floor(serverNow / 5000), where serverNow is Unix time in milliseconds; the same tick returns the same snapshot. The response remains mode: "demo" with asOf: null. The sequence identifies a simulated update interval, not an AstralX trading-data timestamp.

The ranking page and dynamic ranking panel on the separate /live-preview homepage preview poll every 5 seconds and animate ranking overtakes as simulated returns change. The preview’s dynamic panel shows 5 accounts per page, advances every 5 seconds and cycles through all 20 accounts. /live-preview is explicitly simulated; it does not represent actual trading or an official start. All demo strategies remain pending, missing avatars use silhouettes, and no strategy labels or source timestamps are fabricated.

The preview’s “previous 24 hours” ticker below the title uses a separate fixed snapshot. GET /api/rankings/previous-24h returns { mode: "demo", periodStart, periodEnd, entries }, with 20 public entries shaped as { id, rank, alias, totalReturnPct }. The period is the completed 24 hours ending at today’s 00:00 UTC, inclusive of its start and exclusive of its end. The demo uses the last simulated tick before the cutoff and stays fixed for the day; current 5-second returns do not overwrite it. This is simulated history, not AstralX historical or closing data. The “previous day” report derives the top three and each trader’s most profitable instrument from the same full internal snapshot without expanding the public historical projection.

This is our website endpoint, not an endpoint already supplied by AstralX. Production integration requires a server-side adapter that reads AstralX’s read-only feed and returns only sanitised public information in the contract below.

The homepage and ranking page use consistent sticky navigation: HOME / RULES / SCHEDULE / RANKINGS / REGISTER. The formal homepage is separate from the simulated preview: its ranking ticker requires the confirmed start time to have been reached, a live feed and a fresh snapshot. The competitionSchedule.startAt configuration is currently TBD, so the formal homepage remains in its awaiting-start state. Demo data cannot activate its official live leaderboard.

2 What AstralX needs to supply

The cadence is a proposal, not an existing live update commitment. Manage upstream fetching separately from browser refreshes so each visitor does not trigger an AstralX request.

Registration and trading-account reconciliation: agree a private mapping from website registration ID/email to AstralX UID/competition account, then to the public trader ID, together with an account-ownership verification method. Optional social submissions are linked to website registrations, but no AstralX account link exists yet. Entering an email does not prove platform-account ownership. AstralX may supply an authorised matching API or an agreed batch reconciliation process. Emails, UIDs and trading accounts remain restricted server-side; public rankings use only pseudonymous IDs.

3 What the return figures mean

The simulated starting balance is US$100,000, and the display currency is USD. The demo assumes no deposits or withdrawals; net equity includes floating P&L and fees. Cash-flow adjustments, ranking metrics, ties, disqualifications and final settlement rules require AstralX confirmation before production.

contributionPct = net instrument P&L / initialEquity × 100

contributionPct is the instrument’s percentage-point contribution to the account return. It is not a standalone instrument ROI based on capital invested in that instrument. Instrument pnl values must reconcile to net account P&L, and instrument contributionPct values must sum to totalReturnPct, within an agreed rounding tolerance.

Under the demo’s no-cash-flow assumption: totalReturnPct = (equity − initialEquity) / initialEquity × 100. Equity of US$112,500 means a 12.5% account return. BTC net P&L of US$8,000 contributes 8 percentage points, and ETH net P&L of US$4,500 contributes 4.5 percentage points. An 8-point contribution must not be labelled “8% standalone BTC ROI”.

If production data includes unallocated costs, cash flows or other adjustments, agree an allocation method or extend the schema before enabling live mode. Do not silently assign the difference to an instrument.

4 Public profiles and social exposure

The public feed contains only display-safe IDs, aliases, authorised avatars, reviewed strategy summaries and aggregate figures. It must exclude real broker logins, email addresses, phone numbers, secrets, raw trade records and private order details. Strategy summaries provide factual observations from records, not trading advice or an assessment of eligibility.

avatar contains url and consented. Only an HTTPS avatar URL from a verified source and authorised by AstralX for public display may be supplied. Use url: null and a silhouette when no public avatar is available. Without consent, both consented: false and url: null are required. Avatar URLs must not carry upstream service credentials; remove the public URL when permission is withdrawn.

strategy contains status, summary, basedOn and asOf. With status: "pending", all three other fields are null. With status: "ready", a bilingual summary, basedOn: "trade_records" and a valid UTC timestamp are all required.

AstralX may later supply a reviewed bilingual summary directly, or an authorised server-side AI process may summarise actual trade records, followed by human review and display permission. No AI analysis pipeline or access to trade records or private databases has been implemented. Insufficient data must remain pending. Do not infer discipline, trading style, intention or methods from returns alone.

Summaries may describe only observations supported by the records. Published summaries must state the observation window and data source; strategy.asOf is the cutoff time of the underlying records, not an implied continuously updating analysis. Raw records, analysis and review or consent evidence remain restricted server-side and are excluded from the public endpoint.

Social exposure is optional. AstralX or the agreed operator verifies link ownership and retains the trader’s display permission; clickable URLs are released only when verification and consent are valid. Withdrawn permission must remove public display. This feature does not publish, repost or automatically share anything on a trader’s behalf.

socials supports only x, telegram, youtube and instagram. Use an empty array when no link is approved, or url: null with consented: false; do not invent personal profiles. URLs must use HTTPS, match the platform domain allowlist and contain no secrets. Consent evidence and verification records remain in restricted server-side records, outside the public response.

Registration rejects duplicate normalised email addresses with 409 already_registered. A duplicate does not redirect to registration success, increase the registration count or issue another public-profile receipt. Only a newly accepted registration receives a 24-hour receipt; duplicate registration cannot renew or restore profile access.

Requests that pass validation and rate limits but are identified as duplicates update duplicateAttempts and lastDuplicateAt, visible only in administration and the registration CSV. These count unverified attempts against an email, not distinct people or verified identities. The administrator’s social records also show the linked registration ID, name, registration time, display-consent state and update time. These details are excluded from the public ranking feed.

5 Failure and stale data handling

The following are production acceptance requirements. The AstralX upstream adapter, upstream backoff retries and upstream error logging are not implemented. The current page refreshes its demo endpoint every 5 seconds; this does not establish production service readiness.

6 Owners and parameters to confirm

AreaConfirmation required
Feed and authenticationUpstream URL, service owner, service identity or authentication method, access scope, credential rotation, test and production environments.
Competition and calculationsOfficial competition ID, account mapping, complete ranking scope, ties, disqualifications, equity and fee definitions, cash-flow adjustments and numeric precision; confirm competitionSchedule.startAt, currently TBD.
Operations and supportFeasibility of the production 5-second target, latency, rate limits and cache; suitability of the current 20-second stale threshold for the official feed; incident contact, maintenance notices and version change process.
Public profile managementAuthorised avatar sources and domains; owners for social ownership verification, consent records and withdrawal handling; maximum removal delay after withdrawal.
Strategy summary processWhether AstralX supplies reviewed summaries or authorises server-side analysis; available trade records and observation windows; data sufficiency criteria; human review and publication approval owners. AI integration and data access are not implemented.

7 Acceptance checklist

  1. All 20 demo accounts display correctly with unique IDs, aliases, currency and bilingual instrument labels. Every demo strategy is pending with all other strategy fields null; missing avatars use silhouettes and no fictional strategy labels appear. Twenty is the demo size; the production response scope is TBD.
  2. The same shared 5-second server tick returns an identical demo snapshot. Return and rank changes across ticks remain reconciled; the dynamic panel refreshes every 5 seconds and animates overtakes. The simulated homepage’s dynamic panel shows 5 accounts per page, advances every 5 seconds and cycles through all 20 accounts; the historical ticker below the title keeps the previous complete UTC day’s fixed results separate from current returns.
  3. Demo, live, stale and unavailable states are distinguishable. Demo timestamps remain null; live data uses valid UTC source timestamps.
  4. Snapshot sequences increase monotonically within a competition; stale or out-of-order snapshots cannot roll the page back. Account IDs remain stable. Test tied ranks against official rules rather than independently re-ranking them.
  5. Positive and negative returns, floating P&L, fees and instrument contributions reconcile. Reject NaN, infinite numbers and incorrect percentage units. Rounding tolerance is TBD.
  6. Authentication errors, timeouts, HTTP 429 and validation failures do not zero the leaderboard. Test both an initial absence of data and an existing last-known snapshot.
  7. No upstream credentials, emails, real trading account numbers, raw trade records or private orders reach the browser or public feed. Unconsented, withdrawn or invalid-source avatars and social links are not exposed.
  8. A ready strategy requires a bilingual factual summary, the trade_records source marker, a valid cutoff timestamp, the observation window and source within the summary, human review and display permission. Insufficient records remain pending.
  9. Consistent sticky navigation works, and /live-preview always identifies itself as simulated. An unconfirmed or future start time, demo mode, stale data or unavailable data cannot activate the formal homepage live leaderboard. It appears only after the confirmed start with a fresh live feed.
  10. Optional social profiles submitted after registration enter separate, unverified pending records in the administrator panel. Submission or inclusion in that review queue does not publish links to the public ranking API.
  11. A duplicate email receives HTTP 409, with no success redirect, new registration or new receipt, and no change to the public count. Administrators can trace duplicate-attempt counts and timestamps, but these do not verify identity.
  12. Enable the production adapter and mode: "live" only after AstralX confirms the data definitions, official ranking rules and responsible owners.

字段约定与示例 / Fields and example

以下为当前页面约定;正式上游的命名可以不同,由服务端适配器统一。所有字段均须出现,允许空值的字段已注明。数字使用 JSON number,不带货币符号或百分号。

This is the current page contract. An adapter may map differently named upstream fields into it. All fields are required; nullable values are stated explicitly. Numbers are JSON numbers without currency or percent symbols.

当前实现边界 / Current implementation limits

RankingSnapshot

字段 / Field类型 / Type含义 / Meaning
mode"demo" | "live"数据模式,决定来源标签。Source mode, used for the data-source label.
asOfstring | null数据源快照时间;正式模式为 ISO 8601 UTC 字符串,演示为 null。Source snapshot time: an ISO 8601 UTC string in live mode; null for the demo.
sequencenumber正整数快照序号;当前动态演示为 Math.floor(serverNow / 5000),serverNow 是 Unix 毫秒数;正式模式由上游提供同赛事递增序号。Positive integer snapshot sequence. The dynamic demo uses Math.floor(serverNow / 5000), with serverNow in Unix milliseconds; the production feed supplies an increasing sequence within the competition.
competitionIdstring稳定赛事标识;正式值由 AstralX 确认。Stable competition identifier; AstralX confirms the production value.
currency"USD"所有金额的显示及计算币种。Currency for all monetary values.
initialEquitynumber账户初始净值,当前为 100000,须为大于零的有限数值。Starting equity, currently 100000; must be finite and greater than zero.
entriesRankingEntry[]完整展示快照,当前演示含 20 个账户。Complete display snapshot, containing 20 accounts in the current demo.

RankingEntry

字段 / Field类型 / Type含义 / Meaning
idstring唯一、稳定且可公开的匿名 ID,非真实交易账号。Unique, stable public pseudonymous ID; not a real trading login.
ranknumber正整数排名,正式模式以 AstralX 为准。Positive integer rank, authoritative from AstralX in live mode.
aliasstring可公开昵称。Approved public display alias.
avatar{ url: string | null, consented: boolean }来自 AstralX 授权公开来源的头像;空地址显示剪影,未授权时地址必须为空。Avatar from an AstralX-authorised public source; null renders a silhouette, and no consent requires a null URL.
strategyStrategy依据真实交易记录的审核摘要,或待生成状态;详细结构见下表。Reviewed summary based on actual trade records, or a pending state; see the structure below.
totalReturnPctnumber账户总收益百分数;12.5 表示 12.5%,不是 0.125。Total account return as a percentage: 12.5 means 12.5%, not 0.125.
equitynumberUSD 账户净值,含浮动盈亏和费用;具体计算待确认。Net account equity in USD, including floating P&L and fees; exact calculation to be confirmed.
instrumentsInstrument[]按品种汇总的净盈亏和贡献。Net P&L and contribution aggregated by instrument.
socialsSocial[]仅展示授权且已核验的社媒地址;可为空数组。Only consented and verified social URLs may be shown; the array may be empty.

Strategy

字段 / Field类型 / Type含义 / Meaning
strategy.status"pending" | "ready"当前演示全部 pending;只有充分记录、人工复核及授权完成才可 ready。All current demos are pending; ready requires sufficient records, human review and permission.
strategy.summary{ zh: string, en: string } | nullpending 为 null;ready 为双语事实摘要,注明观察窗口和来源。作为文本渲染,不执行 HTML。Null when pending; a bilingual factual summary stating the observation window and source when ready. Render as text, not executable HTML.
strategy.basedOn"trade_records" | nullpending 为 null;ready 只能是 trade_records,不以收益率推断策略。Null when pending; only trade_records when ready. Returns alone do not establish a strategy.
strategy.asOfstring | nullpending 为 null;ready 为分析所依据记录的截止时间,ISO 8601 UTC。Null when pending; an ISO 8601 UTC cutoff timestamp for the records underlying a ready summary.

Instrument and Social

字段 / Field类型 / Type含义 / Meaning
instruments[].symbolstring稳定品种代码,如 BTC、ETH;同一账户内不重复。Stable instrument symbol, such as BTC or ETH; unique within an account.
instruments[].label{ zh: string, en: string }双语品种名称。Bilingual instrument name.
instruments[].pnlnumberUSD 净盈亏,按确认口径包含浮动盈亏和分摊费用。Net USD P&L, including floating P&L and allocated fees under the agreed methodology.
instruments[].contributionPctnumber对账户收益的百分点贡献:pnl / initialEquity * 100。Percentage-point contribution to account return: pnl / initialEquity * 100.
socials[].platform"x" | "telegram" | "youtube" | "instagram"允许的平台标识。Allowed platform identifier.
socials[].urlstring | null已核验且获准展示的 HTTPS 地址,否则为 null。Verified, approved HTTPS URL; otherwise null.
socials[].consentedboolean本人展示授权是否有效。false 时 URL 必须为 null。Whether display consent is valid. If false, URL must be null.

可复制 JSON 示例 / Copyable JSON example

以下是一个完整结构的单账户示例,仅用于说明字段和计算;sequence: 1 为示意正整数,不是当前动态接口的固定值。实际接口每 5 秒返回 20 个模拟账户的共享快照,asOf 仍为 null。正式模式必须替换数据模式、来源时间、序号、赛事标识及全部账户数据。

This one-account example demonstrates the full structure and arithmetic. sequence: 1 is an illustrative positive integer, not the dynamic endpoint’s fixed value. The actual endpoint returns a shared snapshot of 20 simulated accounts every 5 seconds, with asOf still null. Production must replace the mode, source time, sequence, competition identifier and all account data.

{
  "mode": "demo",
  "asOf": null,
  "sequence": 1,
  "competitionId": "competition-demo",
  "currency": "USD",
  "initialEquity": 100000,
  "entries": [
    {
      "id": "demo-001",
      "rank": 1,
      "alias": "SampleTrader01",
      "avatar": { "url": null, "consented": false },
      "strategy": {
        "status": "pending",
        "summary": null,
        "basedOn": null,
        "asOf": null
      },
      "totalReturnPct": 12.5,
      "equity": 112500,
      "instruments": [
        {
          "symbol": "BTC",
          "label": { "zh": "比特币", "en": "Bitcoin" },
          "pnl": 8000,
          "contributionPct": 8
        },
        {
          "symbol": "ETH",
          "label": { "zh": "以太坊", "en": "Ethereum" },
          "pnl": 4500,
          "contributionPct": 4.5
        }
      ],
      "socials": [
        { "platform": "x", "url": null, "consented": false }
      ]
    }
  ]
}

此 JSON 中的账户与表现仅为演示内容,不代表任何真实客户或已实现交易结果。头像为空,策略待生成,没有捏造策略摘要。The account and performance in this JSON are illustrative and do not represent a real client or achieved trading results. The avatar is null and the strategy is pending; no strategy summary is fabricated.