首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >聊一聊通达信评测系统回测技术思路

聊一聊通达信评测系统回测技术思路

作者头像
子晓聊技术
发布2026-04-23 20:19:56
发布2026-04-23 20:19:56
1860
举报
文章被收录于专栏:子晓AI量化子晓AI量化

最近遇到几个同学问我 关于通达信数据评测的事情, 其中一个同学宣称自己的通达信指标好NB,收益年化感觉可以买下地球。

我抽空看了下。 通达信系统有个程序员评测系统, 可以通过编写公式 进行评测,最终导出excel格式的数据。

对于一些同学来说,希望通过导出excel里的买入卖出时间,成交金额, 获取 公式策略的 回测数据,比如总资产曲线,以及 收益率曲线。

趁着周末,用AI试着写了款工具。 这里讲一讲技术思路。

这款工具流程,上传文件 → 预处理交易数据 → 获取行情数据 → 逐日计算资产 → 统计指标 → 可视化展示。

为了实现这一流程,我利用 Streamlit 的交互式组件来接收用户输入和展示结果;同时借助 Tushare 获取股票的历史前复权价格;最后用 Matplotlib 绘制资产曲线和累计收益率图。

关键实现思路解析

1. 数据预处理:从杂乱到规整

通达信导出的 Excel 表格通常包含多个字段,如品种代码、时间、信号、成交额、手续费等。为了后续计算,我做了以下处理:

  • 日期标准化:将“时间”列转换为 Pandas 的 datetime 类型,方便按日对齐。
  • 买卖方向映射:原始信号可能是“买开”、“卖平”、“平盘”等,我将其统一为 +1(买入)和 -1(卖出)。代码中定义了一个字典 direction_map,覆盖常见表述,若出现未知值则报错。
  • 现金流计算:这是回测的基础。买入时,现金流出 = 成交额 + 手续费;卖出时,现金流入 = 成交额 - 手续费。

2. 初始资金的确定:

最初我让AI写了下,写完运行发现累计收益率真的蛮高的。 我把导出的excel数据按照日期排序看了下, 这个初始资金貌似不对。

这样理解,策略中前几天连续有买入操作,但都没有卖出操作。 显示的初始资金就1万块,既然前几天只有买入操作, 那么初始资金这个设置有点不合理。

后来我想了下,要不我换个思路。 我反推最小初始资金值, 保证每次操作后得到的现金流不能为负。 虽然很多时候现金空置没利用上, 但比较符合实际情况。

3. 行情获取:用 Tushare 解决数据源

为了计算持仓市值,我需要每只股票在交易日当天的收盘价(前复权)。这里选择 前复权 价格,因为它能真实反映从买入到卖出期间的实际收益(考虑了分红送股)。

4. 逐日资产计算

  • 现金序列:初始现金 + 每日现金流累计。
  • 市值序列:对每只股票,先计算每日持仓变化(买入+股数,卖出-股数),再乘以当日收盘价(非交易日用前值填充),最后求和。
  • 总资产 = 现金 + 市值
  • 日收益率 = 总资产.pct_change()
  • 累计收益率 = (1+日收益率).cumprod() - 1

5. 现金余额检查与警告

如果现金出现负值(即透支),且用户未勾选“允许现金为负”,程序会报错并停止,提醒数据可能不自洽。这能防止因数据错误导致回测结果虚高。

6. 与原始“可用资金”列对比

如果Excel中有“可用资金(元)”列,程序会自动将我们计算的现金余额与原始值对比,并输出差异最大的日期。这可以帮助判断数据是否隐含了外部入金。

改完初始资金的方式后,发现累计收益率下降了不少。 我是不是想错了,其实大家平时都是满仓干的。 但第一天满仓干在没卖出的情况下 第二天怎么继续满仓干呢? 再继续转入资金继续满仓干? 如果是这样,我这种回测思路是错误的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子晓聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关键实现思路解析
    • 1. 数据预处理:从杂乱到规整
    • 2. 初始资金的确定:
    • 3. 行情获取:用 Tushare 解决数据源
    • 4. 逐日资产计算
    • 5. 现金余额检查与警告
    • 6. 与原始“可用资金”列对比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档