akshare改写公募基金轮动策略

25 篇文章 17 订阅
106 篇文章 53 订阅

群友说,行业指数不行,没办法跟买。这次我换成了etf进行动量策略,选择本周上涨最强的5个etf,平均持仓,一周后移仓。查看回测效果。

        不废话,上传代码,但还是有点毛糙。下次加上日期这些数据,做成df格式,然后用pyfolio进行查看。

导包:

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

换成周线(也可以换成月线,年线):

#日线换为周线数据
def transferToWeekLine(df,period='W'):
    data1=df
    stock_data = pd.DataFrame(data1)
    
    #设定转换周期period_type  转换为周是'W',月'M',季度线'Q',五分钟'5min',12天'12D'
    stock_data["date"] = pd.to_datetime(stock_data["date"])
    period_type = period

    stock_data.set_index('date',inplace=True)

    #进行转换,周线的每个变量都等于那一周中最后一个交易日的变量值

    period_stock_data = stock_data.resample(period_type).last()

    
    period_stock_data['chg_pct'] = stock_data['chg_pct'].resample(period_type).last()
    
    #计算周线turnover

    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

获取公募数据

#公募基本数据
fund_name_em_df = ak.fund_name_em()
print(fund_name_em_df)


#获取公募净值历史行情
#策略1,公募轮动现象的直观表征:相对强弱
ind = pd.DataFrame()

fund_name_em_df = fund_open_fund_daily_em_df
for i in range(len(fund_name_em_df[:])):
    print(fund_name_em_df.iloc[i,0])
    sw_index_daily_df = ak.fund_open_fund_info_em(fund=fund_name_em_df.iloc[i,0], indicator="累计收益率走势")
    sw_index_daily_df['code'] = fund_name_em_df.iloc[i,0]
    sw_index_daily_df.rename(columns={'净值日期':'date','累计收益率':'chg_pct'},inplace=True)
    sw_index_daily_df = pd.DataFrame(transferToWeekLine(fund_open_fund_info_em_df,'W'))
    sw_index_daily_df.rename(columns={0:'date',1:'chg_pct'},inplace=True)
    #print(sw_index_daily_df.head())
    
    
    
#     stock_data.rename(columns={0:'date',1:'code',2:'name',3:'close',4:'volume',5:'chg_pct'},inplace=True)
#     stock_data=stock_data.iloc[:,:6]
    sw_index_daily_df['ret'] = sw_index_daily_df['chg_pct'].shift(-1)
    ind = ind.append(sw_index_daily_df)

计算每周净值:

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()

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
detect.py是一个Python脚本,用于检测图像中物体的位置和类别。它使用的是基于深度学习的物体检测算法,如Faster R-CNN或SSD。如果要对detect.py进行改写,需要考虑以下几个方面。 首先,要改写的目的是什么?比如,是想要提升检测精度,加速检测速度,或者增加新的功能等等。根据不同的目的,我们需要选择不同的改写方法和技术。比如,如果是为了提升检测精度,可以考虑使用更先进的检测算法、增加训练数据、调整模型参数等等;如果是为了加速检测速度,可以使用轻量级的模型、减少图像预处理步骤、优化GPU使用等等。 其次,要改写detect.py需要理解其中的代码逻辑和功能实现。比如,如何读取图像文件、如何预处理图像、如何构建模型、如何进行推理等等。这些内容对于进行改写和调试都十分关键。在进行改写之前,需要阅读代码并理解每个函数和变量所代表的含义和作用,以便进行有效地改动。 第三,要改写detect.py需要进行充分的测试和调试。改写后的代码必须与原代码在功能上保持一致,同时还要保证改写后的代码能够正常运行,并且与其他代码兼容。为了达到这个目的,需要进行一系列的测试和验证,如单元测试、功能测试、性能测试等等。如果出现了问题,需要及时进行调试,并且记录下相关信息,以便后续排查和处理。 综上所述,如果要对detect.py进行改写,需要根据不同的目的,选择合适的技术和方法,理解其中的代码逻辑和功能实现,进行充分的测试和调试,确保改写后的代码能够满足需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神出鬼没,指的就是我!

必须花钱,数据超好

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值