更新日志

2.0.1

  • returns 指标和 returnv 添加 use_log,用于计算对数收益率。

  • typing_extensions 添加到安装依赖中。它此前已被 pybroker.strategy 导入,但从未声明为依赖项,因此安装时依赖于其他依赖项间接引入它。

  • 要求 optuna>=3.4。更早的版本将采样器的随机数生成器存放在不同的位置,optimize 无法对其重新播种,导致传入 seed 并不能使搜索结果可复现。

  • 修复 parse_timeframe,使其拒绝格式错误的时间周期,而不是从中悄悄读出一个有效的片段;此前 "1.5h" 会被解析为 5 小时,"-1h" 会被解析为 1 小时。

  • 修复 “Finished training model” 日志消息,此前它会抛出 TypeError,而不是报告训练耗时。

2.0.0

重大变更

  • 移除 PosSizeContextset_pos_size_handlerExecSignal;改用 Strategy.enable_rotation / RotationContext

  • 弃用 ExecContext.scoreStrategyConfig.max_*_positions;改用 long_score / short_score 以及 set_max_long_positions / set_max_short_positions

  • 统一 slippage API;移除 RandomSlippageModel

  • 移除 bootstrap_sample_size;BCa 自助法与回撤自助法现在对完整的回测序列进行重新抽样,而不再使用固定大小的样本,修复了此前可能导致置信区间错误或退化为单次抽样的问题。

  • backtest / walkforward 中移除 disable_parallel;并行化的指标和模型计算改为通过 parallel_indicators / parallel_models 按需启用。

  • result.positions 通过 StrategyConfig.record_position_bars 按需启用;完整的 Portfolio.bars 快照通过 record_portfolio_bars 按需启用。

  • 从安装依赖中移除 akshare;如需使用 AKShare,请单独安装。

  • 卡玛比率(Calmar Ratio) 修正为标准定义:复合年增长率(CAGR)除以最大回撤百分比;此前是按算术方式年化,并基于逐 K 线收益率的累计和衡量回撤。

  • 溃疡指数(Ulcer Index) 修正为基于整条权益曲线、相对其滚动最高点衡量回撤,并将 溃疡表现指数(Ulcer Performance Index) 修正为在设置 bars_per_year 时按复合年增长率(CAGR)计算收益;向这两个函数传入 period 可保留此前的滚动窗口行为。

  • 修复 EvalMetrics 中的 unrealized_pnl:此前它会被已支付的总手续费低估(逐笔交易盈亏未扣除手续费,而市值则已扣除手续费)。

  • annual_total_return_percent 现在在年化时将 n 个 K 线数值视为 n - 1 个收益区间。

1.2.14

  • 要求 Python 3.10 及以上版本。

  • 修复 vect 中的指标计算错误(Aroon、Laguerre RSI、ADX、价格变化振荡器、反应性、趋势及相关内核)。

  • 修复 AKShare TX 回退路径中重复的 volume 列。

1.2.13

  • Order 添加信号来源字段:

    • created - 订单信号的创建日期。

    • order_type - 订单的来源方式(marketlimitstop_barstop_lossstop_profitstop_trailing)。

    • intent - 仓位意图(buy_to_openbuy_to_closesell_to_opensell_to_close)。

  • 添加 OrderTypePositionIntent 枚举。

  • PendingOrderScope.orders() 添加 order_id 参数。

  • 添加 智能体技能

  • 全面提升了行情捕获、作用域取值和仓位查找的性能。

  • 改进了 Alpaca 加密货币和 AKShare 的可靠性。

1.2.12

  • 支持 Pandas 3。

1.2.11

  • 修复 Pandas 2.3 返回的只读 NumPy 数组问题。

  • 添加 clear_params 用于清除全局参数。

  • Strategy.add_execution*args**kwargs 转发给执行函数。

  • backtest / walkforward 添加 seed,以获得可复现的自助法结果。

  • 移除多余的 subtract_fees 配置选项。

1.2.10

  • 夏普比率、索提诺比率和卡玛比率改为使用逐柱收益率,而非绝对逐柱差值。

1.2.9

  • 升级至 NumPy 2,同时仍支持 NumPy 1。

  • 添加 LONG_ONLYSHORT_ONLY 仓位模式

  • EvalMetrics 添加 max_drawdown_date

  • 修复 yfinance 依赖版本问题。

1.2.8

  • 修复 NumPy 类型检查错误。

1.2.7

  • 修复当索引不唯一时 df.loc[index] 返回 DataFrame 类型的问题。

1.2.6

  • 修复 YFinance 缺失 Adj Close 列的问题;新增 auto_adjust 参数。

  • 当未持有仓位时调用 sell_all_sharescover_all_shares 将引发错误。

1.2.5

1.2.4

  • 保证 EvalMetrics 中的 largest_loss_pct 始终为负、largest_win_pct 始终为正。

1.2.3

1.1.0

1.0.0

  • 首次发布!