Skip to content

fix: make ledger posting precision context-independent - #21

Merged
PureSaber merged 1 commit into
mainfrom
codex/qexec-precision-20261004
Oct 4, 2026
Merged

PureSaber merged 1 commit into
mainfrom
codex/qexec-precision-20261004

Conversation

@PureSaber

Copy link
Copy Markdown
Owner

问题与结果

QExec账本在当前Decimal上下文精度较低或启用Inexact/Rounded陷阱时,100 + 0.01等合法过账可能被舍入或失败;本地fixed()还重复实现了受上下文影响的缩放转换,并通过缓存让首次调用上下文污染后续结果。

本变更将QDK固定到已合并的精确转换提交fd788b2956a10490aa00c399b717ec796ae371b1,由QExec直接复用该实现;移除转换缓存;并在ExactAccountLedger._post的普通与可回滚路径中采用基于Decimal元组和Python整数的精确累加。默认ROUND_HALF_EVEN行为保持不变。

验证

  • 250 passed:全量QExec测试,原有244项加新增6项参数化用例
  • 新增覆盖:100 + 0.01、缓存调用顺序、严格精确拒绝、正负混合scale、持仓数量、不同精度与陷阱、成功过账后的注入失败回滚
  • ruff check src tests通过
  • ruff format --check src tests通过
  • 4个既有golden文件SHA-256保持不变
  • 基线bb0da30与当前提交的normal过账现金、transaction bytes和journal SHA-256逐行完全一致
  • 实际导入的QDK来自本地quant-data-kit,HEAD与依赖固定均为fd788b2

范围

该变更只保证FixedPoint转换和ExactAccountLedger._post累加不依赖当前Decimal上下文,不宣称NAV、风险或其他任意Decimal公式均已上下文独立。

@PureSaber
PureSaber marked this pull request as ready for review October 4, 2026 06:43
@PureSaber
PureSaber merged commit 177778f into main Oct 4, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant