API 参考

所有对象通过 from doribt import ... 导入。下列签名在构建文档时直接读取已安装的包,中文说明补充单位和使用约束。返回记录及指标字段另见结果参考。

回测与配置

class doribt.Backtest(data, *, initial_cash=None, costs=None, execution=None, config=None)

传入验证后的行情与 config=RunConfig(...)。同一个实例可重复运行,每次新建账户。不要将 config 与独立的 initial_cash/costs/execution 混用。

Backtest.run(strategy, *, parameters=None, parameter_schema=None, backend=None)

strategy 是普通函数或预计算目标;参数以关键字传给策略。backend 可覆盖配置中选择的后端,实际值写入运行信息。

class doribt.RunConfig(*, initial_cash=100000, costs=<factory>, execution=<factory>, backend='python')
classmethod RunConfig.from_dict(values)
RunConfig.to_dict()
static RunConfig.schema()

运行配置的默认值和 JSON 字段见参数教程。

class doribt.Costs(*, commission='0.0003', minimum_commission='5.00', slippage_ticks=0)

佣金以小数比例输入,最低佣金以元输入,允许零。使用 RunConfig 时滑点放在 BarExecution,Costs.slippage_ticks 保持零。

class doribt.BarExecution(*, participation=0.05, slippage=<factory>, slippage_policy='strict')

slippage_policy="strict" 拒绝越界,"cap" 截到行情边界,"cost" 保留完整滑点成本;日线和分钟都适用。成交资格、用户限价及资金约束继续有效,完整语义见滑点契约。旧日线 Costs.slippage_ticks 路径不提供该选择;需要配置时使用 RunConfig(execution=BarExecution(...))。

class doribt.FixedTicks(ticks=0)
class doribt.FixedBps(bps=0)
class doribt.VolumeImpact(coefficient=0.1)

参与率取 (0, 1];ticks 为整数档位,bps 为基点,VolumeImpact 为参与率平方的冲击系数。规则与失败语义见执行模型。

行情与规则

classmethod MarketData.from_records(records, *, calendar, instruments, rules, source, actions=(), adjustments=())
classmethod MarketData.from_csv(path, *, calendar, instruments, rules, source, actions=(), adjustments=())
classmethod MarketData.from_minutes(records, *, calendar, instruments, rules, source, frequency='1min', actions=(), adjustments=())
MarketData.prices(field, *, adjustment='raw', as_of=None)

calendar 为严格递增的独立交易日历。sessions 是唯一交易日,timeline 是完整 bar 时间轴,symbols 保留声明顺序。prices 返回只读价格矩阵。字段和空值规则见数据契约。

class doribt.Instrument(*, symbol, kind)
doribt.china_rules(profiles, *, start, end)
class doribt.TradingRule(*, price_tick, buy_minimum, buy_step, sell_step, settlement_days, stamp_duty_sell, transfer_fee, allow_odd_lot_liquidation=True, sell_minimum=1, order_maximum=1000000000, instrument_kind=None)
class doribt.RulePeriod(*, symbol, start, end, rule, source, version)
class doribt.RuleBook(periods)
classmethod MinuteClock.build(sessions, frequency)

股票/ETF 分类、价位、数量、交收和适用日期见市场规则。MinuteClock 为已知交易日生成网格,不生成节假日日历。

class doribt.CorporateAction(*, action_id, symbol, kind, announced, record_date, ex_date, source, cash_per_share=0, bonus_per_share=0, pay_date=None, share_listing_date=None, share_credit_date=None, taxable_bonus_amount_per_share=None)
class doribt.PriceAdjustment(*, action_id, factor, known_on, source)

行动日期、应税金额及因子的可知时点见公司行动与研究价格。

策略上下文与目标

Context 由引擎传入,不由策略自行构造。ctx.account、orders、intents 提供当前视图,session、now、bar_index 定位当前已完成 bar。

Context.history(symbol, *, bars=None, field='close', adjustment='raw')
Context.order(symbol, quantity, *, valid_for='next_bar', limit_price=None, max_spend=None)
Context.cancel_order(order_id)
Context.target_positions(quantities)
Context.target_weights(weights, *, rebalance=False, sizing='close')
Context.cancel(intent_id)
Context.record(**values)

数量以股/份计;单笔数量有符号,目标数量非负。固定订单返回 order_id,持续目标返回 intent_id。撤销和有效期见执行契约。

order(max_spend=...) 仅用于买单,以元限制整笔订单含费用支出,不能与单股限价混为一谈。target_weights(sizing="close" | "execution") 选择收盘或下一 bar 开盘定量一次,默认 close;同权重与同模式不重复定量,rebalance=True 可显式重算。具体例子见策略教程。

class doribt.WeightTargets(*, sessions, weights, rebalance=False, sizing='close')
class doribt.PositionTargets(*, sessions, quantities)

目标完整对齐 data.timeline;不可将参数维当成证券维。详见预计算执行。

参数与研究扩展

class doribt.Parameter(*, type, default, label='', description='', unit='', minimum=None, maximum=None, step=None, choices=())
class doribt.ParameterSet(parameters)
ParameterSet.to_dict()
ParameterSet.resolve(values=None)

类型、默认值、范围、步长与选项在执行前校验,跨字段逻辑由策略检查。

class doribt.ResearchOutput(*, metrics=<factory>, series=<factory>, tables=<factory>, description='')
class doribt.Metric(value, unit='', description='')
class doribt.Series(*, sessions, values, unit='', description='')
class doribt.Table(*, columns, rows, description='')

指标带单位与说明;曲线对齐完整结果,表格为统一列的 JSON 标量行。详见扩展教程。

结果分析与导出

BacktestResult 由 run 返回,账户金额便利属性以元计,*_units 为万分之一元的整数;时间在行,证券在列。

class doribt.Benchmark(*, sessions, prices, name, source)
BacktestResult.stats(*, benchmark=None, periods_per_year=None, risk_free_rate=0.0)
BacktestResult.report(*, benchmark=None, periods_per_year=252, risk_free_rate=0.0)
BacktestResult.plot(*, benchmark=None)
BacktestResult.export(path, *, benchmark=None, periods_per_year=None, risk_free_rate=0.0, plot=False, daily=False)
BacktestResult.analyze(name, analyzer)
BacktestResult.with_outputs(name, output)
ResearchReport.to_dict()

stats 保留 bar 口径,report 默认日频;export(daily=True) 同步导出报告。自定义输出返回新对象,不覆盖现有命名空间。默认字段、指标定义与文件列表见结果参考。