Skip to content

Fix pytrader data loading and Backtrader conversion - #120

Open
ai-yang wants to merge 2 commits into
UFund-Me:mainfrom
ai-yang:agent/fix-data-utils
Open

Fix pytrader data loading and Backtrader conversion#120
ai-yang wants to merge 2 commits into
UFund-Me:mainfrom
ai-yang:agent/fix-data-utils

Conversation

@ai-yang

@ai-yang ai-yang commented Jul 31, 2026

Copy link
Copy Markdown

Description

  • 修正 DataUtil.to_backtrader_dataframe(self, df) 的非法方法签名。
  • 在文件加载结果中保留 code 列。
  • 使用规范化日期作为排序索引,使日期区间过滤适用于多标的数据。
  • 避免默认 benchmarks 列表在不同 DataUtil 实例之间共享。
  • 添加离线临时 CSV/DataFrame 回归测试,覆盖字段映射、多标的过滤、收益率、默认实例隔离和 Backtrader 列结构。

Motivation and Context

当前 main 中的方法签名会导致 pytrader/data/data_utils.py 在 Python 3 下无法解析。仅修正签名后,数据列选择还会删除随后仍被访问的 code 列;恢复该列后,代码索引又与 load_data 的日期切片约定冲突。

这组问题会阻断策略数据加载,或者使多标的日期区间过滤得到错误结果。非法签名修复后,SonarCloud 还暴露了原有的可变默认参数问题:修改一个默认实例的 benchmarks 会污染后续实例。

Related issue: none. 上游当前限制此账号创建 Issue(GitHub API 返回 403),因此复现、根因和测试信息完整记录在本 PR 中。

How Has This Been Tested?

  • pytest -q tests/test_data_utils.py:4 passed
  • python -m unittest -q tests.test_data_utils:连续 3 次通过,每次 4 tests
  • python -m py_compile pytrader/data/data_utils.py tests/test_data_utils.py
  • flake8 --select=E9,F63,F7,F82 pytrader/data/data_utils.py tests/test_data_utils.py
  • git diff --check origin/main...HEAD

全仓 compileall 当前还会被独立的 pyfutures/futuresDemo.py Python 2 print 语法问题阻塞;该错误不由本 PR 引入,并已拆分为另一独立修复。

未运行模板中提到的裸全仓 pipeline 测试:当前仓库部分测试包含联网、真实邮件、交易入口或无限循环风险。本 PR 的回归测试全部离线执行。

Types of changes

  • Fix bugs
  • Add new feature
  • Update documentation

@sonarqubecloud

Copy link
Copy Markdown

@ai-yang
ai-yang marked this pull request as ready for review July 31, 2026 15:12
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