MarketWorld VN.PY 原生回测使用手册
本机运行策略,VN.PY 负责完整交易系统,MarketWorld 负责数据证明、评分、看板与提交。
统一核心:策略生命周期、行情、委托、成交、持仓、账户、逐日盈亏、回撤和夏普全部使用 VN.PY 4.3 PortfolioStrategy。
1. 安装与启动
python -m pip install -r requirements-vnpy-backend.txt
python scripts/offline_backtest_workbench.py --host 127.0.0.1 --port 8898浏览器打开 http://127.0.0.1:8898。策略和数据留在用户本机。
2. 编写策略
from vnpy.trader.object import BarData
from vnpy_portfoliostrategy import StrategyTemplate
class Strategy(StrategyTemplate):
author = "your_name"
def on_bars(self, bars: dict[str, BarData]) -> None:
for vt_symbol, bar in bars.items():
self.set_target(vt_symbol, 1 if bar.close_price > bar.open_price else 0)
self.rebalance_portfolio(bars)
STRATEGY_SETTING = {}入口必须导出名为 Strategy 的类,并继承官方 StrategyTemplate。旧版 generate_signals 和 MarketWorld 自研 StrategyBase 生命周期不再作为标准入口。
3. 运行方式
网页
选择官方数据包,点击策略入口右侧加号选择本机 .py 文件,再点击“运行回测”。
Python SDK
from marketworld_sdk import MarketWorldClient
result = MarketWorldClient().run_backtest(
dataset_id="mw_okx_spot_kraken_perp_btc_daily_v1",
strategy_entrypoint="D:/strategy.py",
strategy_id="my_strategy_v1",
author="my_name",
)
print(result["dashboard_url"])4. 输入与交易对象
| 对象 | 来源 | 用途 |
|---|---|---|
BarData | VN.PY | 当前 timestamp 的多标行情 |
OrderData | VN.PY | 委托状态 |
TradeData | VN.PY | 成交记录 |
PortfolioDailyResult | VN.PY | 组合逐日盈亏、手续费与持仓 |
多标数据只保留共同 timestamp。手续费写入 VN.PY rates。Level2 原始事件只供研究和特征分析。
5. 结果看板
运行结束后自动返回带 run_id 的看板地址,显示净收益、Profit Factor、Sharpe、最大回撤、权益曲线、回撤曲线、订单和成交。
| 文件 | 内容 |
|---|---|
orders.csv | VN.PY 委托 |
trades.csv | VN.PY 成交 |
equity_curve.csv | 逐日权益与持仓暴露 |
summary.json | VN.PY 原生统计与 MarketWorld 汇总 |
artifact_manifest.json | 结果文件 SHA256 |
6. 评分与提交
任何合法 VN.PY 策略都允许完成回测。评分不足只禁止提交,不禁止研究。评分和硬门槛通过、证据完整、且不是内置示例时,系统生成 strategy_package_ready_to_submit.json。