预测值驱动搜参
上传标准预测值文件,指定品种与时间范围,创建参数搜索和回测方案。策略生成逻辑可以保留在本地。
使用 API key 查询可用数据与算力,按预算提交研究任务并取回符合大小限制的私有结果。
Account API keys can access that account’s sessions; sessions separate research projects, not account permissions. Available API routes do not guarantee execution access. Read current capabilities before submitting.
Use the public SDK and tutorials for runnable training and private-export workflows. HTTP 401 requires valid credentials; 403 indicates denied access; 409 requires checking current state; 413 requires a smaller supported input; 422 requires correcting fields; 429 requires respecting Retry-After. Do not print raw error bodies containing private data.
登录账户后提交错误报告,或使用 API key 调用以下接口。不要附带密钥、签名链接、私有代码或数据。每账户每小时最多 5 次,收到 429 后按 Retry-After 等待。received 表示已收件,不代表已修复。
Sign in to report a problem, or use your API key. Never include credentials, signed URLs, private code or data. Five reports per account per hour; honor Retry-After on 429. Received does not mean resolved.
ログインまたは API key で報告できます。認証情報、署名付きURL、非公開コード・データは送信しないでください。1アカウント毎時5件まで。429では Retry-After に従います。received は受付済みを意味します。
로그인하거나 API key로 문제를 신고하세요. 인증 정보, 서명 URL, 비공개 코드나 데이터를 포함하지 마세요. 계정당 시간당 5건이며 429 시 Retry-After를 따르세요. received는 접수 상태입니다.
POST /v1/reports
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{"title":"Result retrieval failed","description":"Expected a downloadable result; received a timeout when querying my completed task.","category":"compute"}
GET /v1/reports?limit=20
X-API-Key: YOUR_API_KEYtitle: 3–160 characters; description: 10–8000; category: account / data / compute / billing / other. GET lists only your own reports. No attachments. After a POST timeout, check your report list before retrying; duplicate prevention is not automatic.
美股 · 港股 · 期权 · 期货 · 外汇 · A股 · 加密
加密市场已有核验样例;美股、港股、期权、期货、外汇与 A 股正在接入。具体品种、字段和可申请日期以数据目录为准。
目录更新为跨市场代表性样例。日期表示该行实际核验的样例分区,不代表所有品种完整连续覆盖。可申请范围以实时 API 目录为准。
| 市场 | 行情类型 | 格式 / 样例数 | 核验样例日期 | 品种示例 | Demo |
|---|
选择一个已盘点数据集,查看实际文件头与少量样例行。表格按原文件顺序展示;未确认语义的字段明确标记,不推断单位。空值不等于 0;ID 与微秒/纳秒时间在 JavaScript 中建议保留字符串或 BigInt。
from datetime import datetime, timezone value_ns = 1754611351173000000 # lcTsNs, preserve as Python int seconds, nanoseconds = divmod(value_ns, 1_000_000_000) dt = datetime.fromtimestamp(seconds, timezone.utc).replace(microsecond=nanoseconds // 1000) # datetime keeps microseconds; preserve value_ns for full nanosecond precision. # Prices and quantities: use decimal.Decimal when exact decimal arithmetic matters.
Tardis 字段口径参考 官方 CSV schema。非 Tardis 文件以各数据集的采样与来源定义为准。
This read-only example checks authentication and capability access. Set DATAPANEL_API_KEY securely. Use the public SDK for persistent job state and bounded private exports.
import os
import httpx
# Install httpx; load the key from the environment, never from committed source.
with httpx.Client(base_url="https://datapanel.dev", timeout=30, follow_redirects=False) as client:
headers = {"X-API-Key": os.environ["DATAPANEL_API_KEY"]}
for path in ("/v1/me", "/v1/compute/profiles"):
response = client.get(path, headers=headers)
# Redirects and error bodies must not be used to disclose credentials.
if response.status_code != 200:
raise RuntimeError(f"Request failed: HTTP {response.status_code}")
print(path, "available")
# Continue with the public SDK for quotes, persisted submissions and private exports.
# Set DATAPANEL_API_KEY through your secret manager or shell environment. # Read current account and capabilities. Never add --location to authenticated requests. curl --fail --silent --show-error -H "X-API-Key: $DATAPANEL_API_KEY" https://datapanel.dev/v1/me curl --fail --silent --show-error -H "X-API-Key: $DATAPANEL_API_KEY" https://datapanel.dev/v1/compute/profiles # Browse available partitions; historical market-file downloads are unavailable. curl --fail --silent --show-error -H "X-API-Key: $DATAPANEL_API_KEY" 'https://datapanel.dev/v1/catalog?limit=20' # Use the SDK to freeze inputs, quote within a budget and persist submission state.
Never follow redirects while sending an API key. Only download ready, owned results through the documented authenticated API path. Verify bytes and checksum; do not load pickle or execute model files.
趋势、均值回归、突破、截面排序和波动率缩放示例。仅演示因果数据接口,未验证盈利能力;不自动提交执行。
"""Causal signal examples, not validated investment strategies.
Input CSV: symbol,timestamp_ms,available_at_ms,close.
`timestamp_ms` is the completed bar's timestamp. `available_at_ms` is when its
close actually became observable (UTC milliseconds). No future price is used.
Output: symbol,timestamp_ms,available_at_ms,prediction (target_fraction).
Execute signals no earlier than availability, normally next tradable bar.
"""
import argparse
import csv
import itertools
import math
from collections import defaultdict, deque
def signals(rows, strategy="trend", window=20):
if window < 2:
raise ValueError("window must be >=2")
histories = defaultdict(lambda: deque(maxlen=window))
previous = -1
for stamp, group in itertools.groupby(rows, key=lambda row: int(row["timestamp_ms"])):
if stamp <= previous:
raise ValueError("Rows must be grouped and strictly ordered by timestamp")
previous = stamp
batch = list(group)
seen = set()
values = []
for row in batch:
symbol = row["symbol"]
price = float(row["close"])
available = int(row["available_at_ms"])
if symbol in seen or available < stamp or not math.isfinite(price) or price <= 0:
raise ValueError("Duplicate symbol, invalid availability or invalid close")
seen.add(symbol)
history = histories[symbol]
score = 0.0
if len(history) == window:
if strategy in ("trend", "cross_sectional"):
score = price / history[0] - 1
elif strategy == "mean_reversion":
mean = sum(history) / len(history)
score = mean / price - 1
elif strategy == "breakout":
score = 1.0 if price > max(history) else -1.0 if price < min(history) else 0.0
elif strategy == "volatility_scaled":
returns = [history[i] / history[i - 1] - 1 for i in range(1, len(history))]
volatility = math.sqrt(sum(v * v for v in returns) / len(returns))
score = (price / history[0] - 1) / max(volatility * math.sqrt(window), 1e-6)
else:
raise ValueError("Unknown strategy")
history.append(price)
values.append([symbol, stamp, available, score])
if strategy == "cross_sectional":
# All selected cross-sectional inputs must be available before any decision.
ready = max(v[2] for v in values)
scores = sorted(set(v[3] for v in values))
for v in values:
v[2] = ready
v[3] = (
0.0
if len(scores) < 2
else (2 * scores.index(v[3]) / (len(scores) - 1) - 1) / len(values)
)
for symbol, stamp, available, score in values:
yield {
"symbol": symbol,
"timestamp_ms": stamp,
"available_at_ms": available,
"prediction": max(-1.0, min(1.0, score)),
}
if __name__ == "__main__":
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("input")
parser.add_argument("output")
parser.add_argument(
"--strategy",
choices=["trend", "mean_reversion", "breakout", "cross_sectional", "volatility_scaled"],
default="trend",
)
parser.add_argument("--window", type=int, default=20)
args = parser.parse_args()
with open(args.input, newline="") as source, open(args.output, "w", newline="") as target:
writer = csv.DictWriter(
target, fieldnames=["symbol", "timestamp_ms", "available_at_ms", "prediction"]
)
writer.writeheader()
writer.writerows(signals(csv.DictReader(source), args.strategy, args.window))
"""Save owned source, resolve data and request a quote. Does NOT execute code.
Set DATAPANEL_API_KEY. Choose a selection actually present in /v1/catalog.
The matching source must obey the compute runtime contract before execution is opened.
"""
from pathlib import Path
from datapanel_sdk import Datapanel
def plan(client: Datapanel, source_path, selection):
source = client.request(
"POST",
"/v1/compute/sources",
{"filename": Path(source_path).name, "content": Path(source_path).read_text()},
)
snapshot = client.request("POST", "/v1/compute/data-selections", selection)
quote = client.request(
"POST",
"/v1/compute/quotes",
{
"profile": "cpu-small",
"source_artifact_id": source["id"],
"dataset_snapshot_id": snapshot["id"],
"max_wall_seconds": 1800,
"max_credits": "2",
},
)
return {"source": source, "snapshot": snapshot, "quote": quote, "execution_enabled": False}
一个订阅,连接研究数据、CPU/GPU 计算与私有产物。算力积分每周五 16:00(UTC+8)重置。
| 档位 | 价格 · USDT / 月 | 研究环境 | 每周算力积分 |
|---|---|---|---|
| 新用户免费体验 | 0 | 授权数据就近计算 | 75 |
| 教育 | 59.94 | 授权数据就近计算 | 3,000 |
| 标准 | 99.9 | 授权数据就近计算 | 3,000 |
| 专业 | 299.9 | 授权数据就近计算 | 9,000 |
| 企业 | 999.9 | 授权数据就近计算 | 30,000 |
| 无限 | 9999.9 | 授权数据就近计算 | 无累计积分上限 |
1 积分 = 1 个分配 CPU 单位小时,包含每单位 2 GiB 内存;超额内存为 0.05 积分 / GiB·小时。GPU 按型号计价,提交前可查看报价。
积分按周发放,不结转;任务按实际分配资源与可信运行时长结算,排队不计费。具体规格、权限与预算以账户及报价为准。
体验一次性 30 天,首次使用绑定单一 IP;教育资格需审核。
无限套餐仍受单任务资源、时限、并发、公平排队和防滥用规则约束。集群总规模不代表单个账户独占资源。
每次私有代码或结果导出须小于 1 GB。请求权重按套餐为 30 / 120 / 120 / 300 / 600 / 1200 每分钟,响应头返回剩余权重和重置时间。GB/TB 均为十进制。
支付方式与账户权益以账户页面为准。
免费体验 / 查看账户推广期资源上限:体验 1 个任务 / 1 张 GPU;教育 4 / 1;标准 8 / 2;专业 16 / 3;企业及无限 16 / 4。任务数含 CPU 与 GPU,GPU 数是其中的资源上限,不能相加。实际执行受已授权规格、共享容量和 Slurm 排队约束。
从预测值、特征与模型,到可复现的验证结果,以统一 API 组织研究流程。
上传标准预测值文件,指定品种与时间范围,创建参数搜索和回测方案。策略生成逻辑可以保留在本地。
用脚本定义特征、标签和模型,绑定版本明确的数据快照、资源规格和预算,让每次实验都有可追踪的输入与结果。
代码、预测和封存结果归属于你的账户;通过 API key 获取私有资产,下载时重新验证权限。单次导出小于 1 GB。
提交前查询规格、权限和预算,预留积分后进入队列;通过 API 查询状态,完成后取回结果。额度、并发和时限共同约束资源使用。
底层 C++ 引擎具备 tick 事件回放和延迟撮合实现。双引擎回测对拍建设中,面向独立参考实现交叉核对成交假设与结果差异。
结合时序切分、样本外验证、预测可用时间检查与数据版本追踪,降低回测失真、过拟合和未来数据泄漏风险。双引擎结果一致不等于策略有效,也不保证实盘收益。
已完成分钟级合成数据的多输入回测接入与记账一致性验证;真实 tick 撮合精度与双引擎对拍须分别验收。
预测文件包含品种、UTC 毫秒时间、预测可用时间和预测值;必须明确预测语义,并与实际数据快照绑定。
symbol,timestamp_ms,available_at_ms,prediction
BTCUSDT,1767225600000,1767225600000,0.25样例采用 target_fraction:0.25 表示目标仓位比例 25%;return_bps 则表示预测收益基点,两种语义不能混用。回测验证不等于策略盈利或实盘资格。
账户所有权检查、源码加密保存、私有下载鉴权与管理审计保护研究资产;公开行情目录不包含用户代码、预测或模型。
让编程助手阅读 SDK 和接口说明,将 API key 保存在本机环境变量中。先查询数据与服务权限,再核对预算、提交请求并校验结果。
示例提示词:阅读 Datapanel SDK,从环境变量读取 API key。查询可用数据、服务权限和剩余额度,展示范围与预算,保存任务 ID,轮询状态并校验下载结果。不要输出密钥。
每次私有代码或结果导出须小于 1 GB。请求权重按套餐为 30 / 120 / 120 / 300 / 600 / 1200 每分钟,响应头返回剩余权重和重置时间。GB/TB 均为十进制。
查询、取消和删除权重为 1,普通写入为 5,申请下载为 10,提交算力任务为 20;429 时按 Retry-After 等待。请求权重与算力积分、每周下载额度分别计量。
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 119
X-RateLimit-Reset: 1790294460
X-RateLimit-Window: 60
X-RateLimit-Scope: key
X-Request-Weight: 1Reset: Unix timestamp (UTC seconds). Scope: key / account / downloads / compute. Retry-After: seconds until a rejected request may retry. Windows start on first request; this is separate from Friday 16:00 UTC+8 weekly quota resets.
点 Authorize 填入完整 API key。输入只保留在当前页面内存,刷新即清除。Try it out 会发出真实请求;提交任务可能消耗账户积分。
在线调试会使用你的账户权限并消耗对应额度。请先阅读接口说明,妥善保管 API key;刷新页面会清除输入的密钥。
登录后描述研究目标。AI 可读取官方文档、SDK、训练 Demo、当前账户的数据目录、算力规格和积分;也可搜索公开互联网并提供来源。对话和账户研究上下文由 Datapanel 私有 AI 处理,不自动转发给云端模型;公开搜索仅将检索词发送给独立搜索服务,请勿输入密钥或未经授权的策略。
先让 AI 阅读 Demo,检查特征、行情字段和训练验证边界;将完整 Python 代码填入任务编辑器,选择已有数据与可用规格,查看报价后确认提交。报价不会运行代码,提交后预留积分;使用任务 ID 查询状态,在成功后准备私有结果导出并校验 SHA256。浏览器下载上限为 128 MiB,更大结果请使用 SDK。