导入包:

import akshare as ak
import pandas as pd
import numpy as np
import matplotlib

日线换周线:

#日线换为周线数据
def transferToWeekLine(df,period='W'):data1=dfstock_data = pd.DataFrame(data1)#设定转换周期period_type  转换为周是'W',月'M',季度线'Q',五分钟'5min',12天'12D'stock_data["date"] = pd.to_datetime(stock_data["date"])period_type = periodstock_data.set_index('date',inplace=True)#进行转换,周线的每个变量都等于那一周中最后一个交易日的变量值period_stock_data = stock_data.resample(period_type).last()#周线的volume和money等于那一周中volume和money各自的和period_stock_data['chg_pct'] = stock_data['chg_pct'].resample(period_type).last()#股票在有些周一天都没有交易,将这些周去除period_stock_data = period_stock_data[period_stock_data['chg_pct'].notnull()]period_stock_data.reset_index(inplace=True)data = np.array(period_stock_data) #先将数据框转换为数组data_list = data.tolist()  #其次转换为列表for i in data_list:i[0]=str(i[0]).split(" ")[0]return data_list

获得etf列表

#etf基本数据
fund_etf_fund_daily_em_df = ak.fund_etf_fund_daily_em()
print(fund_etf_fund_daily_em_df)

获取etf历史行情

#获取etf行情
#策略1,etf轮动现象的直观表征:相对强弱
ind = pd.DataFrame()fund_etf_fund_daily_em_df = ak.fund_etf_fund_daily_em()
for i in range(len(fund_etf_fund_daily_em_df[:])):print(fund_etf_fund_daily_em_df.iloc[i,0])fund_etf_fund_info_em_df = ak.fund_etf_fund_info_em(fund=fund_etf_fund_daily_em_df.iloc[i,0], start_date="20000101", end_date="20500101")fund_etf_fund_info_em_df['code'] = fund_etf_fund_daily_em_df.iloc[i,0]fund_etf_fund_info_em_df.rename(columns={'净值日期':'date','日增长率':'chg_pct'},inplace=True)fund_etf_fund_info_em_df = pd.DataFrame(transferToWeekLine(fund_etf_fund_info_em_df,'W'))fund_etf_fund_info_em_df.rename(columns={0:'date',3:'chg_pct',6:'code'},inplace=True)fund_etf_fund_info_em_df = fund_etf_fund_info_em_df[['date','chg_pct','code']]fund_etf_fund_info_em_df['ret'] = fund_etf_fund_info_em_df['chg_pct'].shift(-1)ind = ind.append(fund_etf_fund_info_em_df)

绘图:

ind = ind.sort_values(by='date')
last = pd.DataFrame()
l = []
#获取每个交易周的行业指数,并买入排名前五,(均值买入),并计算持仓一个礼拜的收益。
for i in ind['date'].unique():d = ind.loc[ind['date']==i].sort_values('chg_pct',ascending=True).head(20)l = (l+[d.ret.mean()/100])
pd.DataFrame(l).cumsum().plot()

akshare写etf动量滚动策略相关推荐

  1. ETF动量轮动+RSRS择时,RSRS修正标准分,回撤降至16%

    原创文章第113篇,专注"个人成长与财富自由.世界运作的逻辑, AI量化投资". 昨天的策略我是比较满意的,沿着进化的方向在迭代我们的策略.ETF轮动+RSRS择时,加上卡曼滤波: ...

  2. 什么是动量效应和动量交易策略?

    有效市场假说是金融学领域中最基础的理论之一,该假说认为资产价格包含了与其相关的所有信息,未来资产价格变动无法根据资产过去的价格信息进行预测. 然而,自上世纪八十年代以来,大量实证研究表明市场中存在很多 ...

  3. Python编写动量交易策略

    目录 1. 概念介绍 2.计算动量 2.1 作差法求动量 2.2 作除法求动量 3.定义求动量与作图函数 4. 绘制K线图与动量图 5. 动量交易策略的制定 1. 概念介绍 动量交易策略,即Momen ...

  4. Java多线程之线程池的手写改造和拒绝策略

    Java多线程之线程池的手写改造和拒绝策略 目录 自定义线程池的使用 四种拒绝策略代码体现 1. 自定义线程池的使用 自定义线程池(拒绝策略默认AbortPolicy) public class My ...

  5. Flink的滚动策略

    滚动策略是用于checkpoint的 RollingPolicy用于决定数据如何滚动保存,比如文件(保存checkpoint的文件)到达多大或者经过多久就关闭当前文件,开启下一个新文件保存后续内容.[ ...

  6. 怎样用原生js配合css的transition写个无缝滚动

    之所以想要写原生js配合css转换的无缝滚动,是因为之前在简书上看到一哥们写的一篇文章,说是在网上找了一堆js配合css transition属性写的轮播插件,可惜没有无缝的效果,结果他用原生js重写 ...

  7. 用Python写一个量化交易策略

    好的,这是一个关于如何用 Python 写一个量化交易策略的简单示例. 首先,需要准备好所需的数据.这可以通过使用量化交易软件或者第三方数据源来获取.接下来,你可以使用 Python 的 pandas ...

  8. python:chatGPT 写一个趋势跟踪策略 量化交易程序

    chatGPT:趋势跟踪策略的量化交易程序可能会因语言和框架而异,下面是一个简单的Python代码示例,用于演示如何通过量化编程来实现趋势跟踪策略. 这段代码是一个简单的策略实现,它读取股票数据并计算 ...

  9. Log4j2日志滚动策略TimeBasedTriggeringPolicy的魔鬼槽点

    TimeBasedTriggeringPolicy参数说明: 参数名称 类型 描述 interval integer 根据日期格式中最具体的时间单位来决定应该多久发生一次rollover.例如,在日期 ...

最新文章

  1. 对于SAP的月结相关流程介绍
  2. java实用教程——组件及事件处理——ActionEvent事件
  3. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)
  4. strcmp可以比较数组么_C语言数组越界了,后果很严重,如何避免?
  5. [zz]母牛生牛问题解析
  6. Java并发程序设计(二)Java并行程序基础
  7. python中面向对象的ui_怎样理解Python中的面向对象?
  8. 认识一下Android 事件分发机制
  9. 在串口输入input keyevent发送按键值给机器
  10. 如何将Mac“桌面”和“文稿”文件添加到 iCloud 云盘中?
  11. 重庆市计算机一级考试2015,2015年计算机一级考试试题及答案
  12. 文件打包下载 (ZipArchive)
  13. 计算机无法查看图片,Win7系统提示windows照片查看器无法打开此图片的解决方法...
  14. Linux驱动开发(十三)---USB驱动HID开发学习(鼠标)
  15. java 图片渐变消失_透明背景图像与渐变
  16. 【php毕业设计】基于php+mysql的社区交流网站设计与实现(毕业论文+程序源码)——社区交流网站
  17. 985大学和二本计算机,985大学名单排名(二本)
  18. 【历史上的今天】3 月 7 日:首条海底光缆开通;VeriSign 收购 Network Solutions;计算机图形学先驱诞生
  19. 网站js劫持了怎么处理和预防、js劫持了怎么办
  20. Calibre物理验证技术点滴 (中)

热门文章

  1. STL源码剖析 multiset 和 multimap
  2. 设置clion执行前的cmake命令,和CMAKELIST.txt不冲突
  3. 通过Github创建Android库供其他项目依赖引用
  4. 基础数学落后与高端人才流失
  5. 赌还是不赌 你应该辞职去创业吗?
  6. 内聚的极限: 软件开发的不确定性原理
  7. 记录A component required a bean named ‘studentService‘ that could not be found.
  8. vim编辑器常用命令总结
  9. servlet中中文正常显示,mysql数据库手动插入中文正常显示,servlet向mysql中插入中文显示乱码...
  10. Python爬虫入门之Urllib库的基本使用