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. 输入与交易对象

对象来源用途
BarDataVN.PY当前 timestamp 的多标行情
OrderDataVN.PY委托状态
TradeDataVN.PY成交记录
PortfolioDailyResultVN.PY组合逐日盈亏、手续费与持仓

多标数据只保留共同 timestamp。手续费写入 VN.PY rates。Level2 原始事件只供研究和特征分析。

5. 结果看板

运行结束后自动返回带 run_id 的看板地址,显示净收益、Profit Factor、Sharpe、最大回撤、权益曲线、回撤曲线、订单和成交。

文件内容
orders.csvVN.PY 委托
trades.csvVN.PY 成交
equity_curve.csv逐日权益与持仓暴露
summary.jsonVN.PY 原生统计与 MarketWorld 汇总
artifact_manifest.json结果文件 SHA256

6. 评分与提交

任何合法 VN.PY 策略都允许完成回测。评分不足只禁止提交,不禁止研究。评分和硬门槛通过、证据完整、且不是内置示例时,系统生成 strategy_package_ready_to_submit.json