【期货量化】通过日结算率计算日/月收益率以及利用resample进行时间序列处理

今天才发现这个功能啊……太高级了,之前都一直用groupby但是感觉对于处理时间不是很方便

import matplotlib.pyplot as plt
import pandas as pd
from jqdata import * 
import talib
from datetime import date, timedelta

daily_revenue = {}
start_time = '2020-01-01'
end_time = '2022-04-30'
# 以下代码在聚宽api下实现
# 获取期货交易的日收益率之后要获取月收益率
for i in  ['J','RB','I','SS','SF','SM','CU','AL','NI','AG','SC','RU','FU','MA',
            'BU','PF','EG','TA','SA','EB','SP','UR','CF','P','LH','Y','AP','JD','C']:
    index = get_future_code(i) # 按照指数计算
    # 结算价
    sett_price_i = get_extras('futures_sett_price',
                                index,start_date = start_time ,end_date = end_time)
    current_price = sett_price_i[index]
    yesterday_price = sett_price_i[index].shift(1)
    
    # 日度收益率
    sett_price_i['daily_revenue_rate'] = current_price/yesterday_price - 1
    #print(sett_price_i)
    daily_revenue[i] = sett_price_i['daily_revenue_rate']
    
    #print(f'指数{index}的统计指标')
    revenue_stat = pd.DataFrame()
    revenue_stat = sett_price_i['daily_revenue_rate'].describe()
    #print(revenue_stat)
    
    # 月度收益率
    monthly_revenue = pd.DataFrame()
    monthly_revenue[f'{index} monthly_revenue'] =                         
                     sett_price_i['daily_revenue_rate'].resample('M').sum()
    # print(monthly_revenue)

注意,当我们得到结算价和日度收益率组成的dataframe(sett_price_i)以后,它是一个以日期('YYYY-MM-DD')为index的dataframe

我们只需要对日度收益率那一列进行resample.sum()就可以得到每月度收益率(每一交易日累加,还不确定要不要加权重,待确认~)

resample中参数可以换为'T'(minute),'S'(second),'W'(week)等,前面均可以加数字。

还可以加一列:该日期对应是星期几

sett_price_i['weekday'] = sett_price_i.index.weekday

参考资料

Python量化交易实战之使用Resample函数转换“日K”数据_python_脚本之家 (jb51.net)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值