股票几个指数周收益率和月收益率的计算

在金融数据挖掘分析中经常会遇到不同时间维度的分析。本案例主要目的是介绍如何通过交易日历表和日交易数据,转化为统计的周交易数据和月交易数据,并实现周收益率和月收益率的计算。在本案例中,我们介绍了利用交易日历表寻找每周最小交易日和最大交易日、每月最小交易日和最大交易日两个算法,希望对读者有所启示。
计算上证 A 股指数(代码: 000002 2017 年的周收益率和月收益率指标数据。其中周收益率和月收益率指标计算公式如下:
周收益率= (周最大交易日收盘指数 - 周最小交易日收盘指数) / 周最小交易日收盘指数。
月收益率= (月最大交易日收盘指数 - 月最小交易日收盘指数) / 月最小交易日收盘指数
    本案例使用的交易日历表(表名: TRD_Cale )和指数日交易数据表(表名: IDX_Idxtrd )数据均来源于 CSMAR 国泰安数据库,其表结构如下:
       由于我们获取的数据为日行情交易数据,无法直接计算周收益率,需要对交易日历数据进行处理,即找出每周的最大交易日和最小交易日。从交易日历表的星期( Daywk )字段可以看出,当前星期值比下一个星期值大,其对应的交易日即为本周的最大交易日,下一个星期值对应的交易日即为下周的最小交易日。因此,寻找周最大交易日和最小交易日的算法如下:
输入:交易日历数据表 date
输出:周最小交易日和最大交易日列表 list1 list2
Step1 :定义空的列表 list1 list2 ,将交易日历表中的首个交易日添加到 list1
Step2 :从第 2 个交易日开始至倒数第 2 个交易日,如果其星期值大于下一个交易日的星期值,则将其交易日添加到 list2 中,下一个交易日添加到 list1 中。
Step3 :将最后的交易日添加到 list2 中。
代码如下:
i mport pandas as pd
x= pd.read_excel ('TRD_Cale.xlsx')
list1=['2017-01-03']
list2=[]
for t in range(1,len(x)-1):
   p= x.iloc [t-1,[2]][0]
   q= x.iloc [t,[2]][0]
     if q
            list1.append( x.iloc [t,[1]][0])
            list2.append( x.iloc [t-1,[1]][0])
获得每周的最小交易日列表list1 和最大交易日列表 list2 后,就可以通过循环的方式,依次取最大交易日和最小交易日对应的收盘指数,利用前面介绍的公式计算即可获得周收益率指标数据。
data= pd.read_excel ('IDX_Idxtrd.xlsx')
import numpy as np
r= np.zeros ( len (list1))
for i in range( len (list1)):
    p1= data.loc [data['Idxtrd01'].values==list1[ i ],'Idxtrd05'].values
    p2= data.loc [data['Idxtrd01'].values==list2[ i ],'Idxtrd05'].values
       r[ i ]=(p2-p1)/p1

你可能感兴趣的:(数据挖掘与分析,数据挖掘)