news 2026/7/10 1:48:48

开源的ETF数据源python包value300

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开源的ETF数据源python包value300

参数扫描结果:lookback=5, top_n=1 最优,收益 94.01%

核心逻辑:每周一买入过去 5 天涨幅最大的 1 只 ETF,全仓持有,次周一轮动。

代码部分

# -*- coding: utf-8 -*- """动量策略:每周一买入过去 5 天涨幅最大的 1 只 ETF,次周轮动""" from value300 import Value300 client = Value300() def backtest(etfs, lookback=5, top_n=1, capital=100000): all_data = {e: client.get_history(e, days=365, fields="minimal") for e in etfs} dates = [d["trade_date"] for d in list(all_data.values())[0]] import datetime mondays = [d for d in dates if datetime.datetime.strptime(d, "%Y-%m-%d").weekday() == 0] positions = {} trades = [] for date in mondays: # 动量排名 ranks = [] for code, data in all_data.items(): try: idx = next(i for i, d in enumerate(data) if d["trade_date"] == date) except StopIteration: continue if idx < lookback: continue mom = (data[idx]["close"] / data[idx - lookback]["close"] - 1) * 100 ranks.append({"code": code, "mom": mom, "price": data[idx]["close"]}) ranks.sort(key=lambda x: x["mom"], reverse=True) selected = ranks[:top_n] # 卖出 for code, shares in list(positions.items()): data = all_data[code] try: idx = next(i for i, d in enumerate(data) if d["trade_date"] == date) capital += shares * data[idx]["close"] except (StopIteration, IndexError): pass positions = {} # 买入 if selected and capital > 0: per = capital / len(selected) for s in selected: shares = int(per / s["price"]) if shares: positions[s["code"]] = shares capital -= shares * s["price"] value = capital + sum( shares * next(d["close"] for d in all_data[code] if d["trade_date"] == date) for code, shares in positions.items() ) trades.append({"date": date, "value": value}) ret = (trades[-1]["value"] / 100000 - 1) * 100 print(f"初始: 100,000 → 终值: {trades[-1]['value']:,.0f} 收益: {ret:.2f}%") return trades if __name__ == "__main__": trades = backtest(["510300", "510500", "159915", "588000", "510880"]) for t in trades: print(f"{t['date']} {t['value']:>10,.0f}")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 1:48:35

LAMMPS分子动力学模拟:从新手到专家的完整指南

LAMMPS分子动力学模拟&#xff1a;从新手到专家的完整指南 【免费下载链接】lammps Public development project of the LAMMPS MD software package 项目地址: https://gitcode.com/gh_mirrors/la/lammps 想要探索原子世界的奥秘吗&#xff1f;LAMMPS&#xff08;大规…

作者头像 李华
网站建设 2026/7/10 1:47:42

【Springboot毕设全套源码+文档】基于SpringBoot的广西旅游景点数据分析系统与设计(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/10 1:47:37

H.264/AVC 帧间预测实战:3种运动估计算法对比与 OpenCV 实现

H.264/AVC 帧间预测实战&#xff1a;3种运动估计算法对比与 OpenCV 实现1. 运动估计&#xff1a;视频压缩的时间冗余消除核心当台球从画面右上角滚向左下角时&#xff0c;连续视频帧中90%的像素几乎完全相同——这就是H.264利用时间冗余压缩的关键场景。作为帧间预测的核心技术…

作者头像 李华
网站建设 2026/7/10 1:47:01

Android系统能正确加载GT911驱动,不能检测到触摸

使用了一块A733主板驱动一块6.0寸液晶触屏。由于触屏设置的IO电平是1.8V&#xff0c;主板的触屏接口IO电压是3.3V&#xff0c;所以做了一个电平转换电路&#xff1a;主板侧接口电路&#xff1a;相关信号全部用NMOS做了电平转换。现象&#xff1a;能成功加载驱动&#xff1a;触屏…

作者头像 李华
网站建设 2026/7/10 1:46:56

近期AI量化开发,按概念代码回测模拟顺序推进

对已有量化经验的人来说&#xff0c;AI 的确能让开发变快&#xff0c;但变快不等于可以跳过流程。量化工作一旦顺序混乱&#xff0c;后面的问题往往不是代码写得慢&#xff0c;而是前一步没有被充分说明&#xff0c;导致下一步很难判断。让 AI 先帮你把问题问清楚概念阶段要先把…

作者头像 李华