20170207143916_588.png

一、序言

此系列文章内容、数据,均来自《金融时间序列分析》(第三版 Ruey S. Tsay著)。原著中使用的数据处理语言是R,但本人对R不熟悉,故准备改用python做为学习此书的数据分析语言。文章中所使用的数据/源代码,都会陆续发布在 strengthening/AFTS 中,如有错误或者问题,可以直接在git中开issue。

二、环境准备

Python 2.7

iPython :一种基于python的交互式计算和开发环境,它鼓励一种“执行-探索”的工作模式,而不是许多其他编程语言那种“编辑-编辑-运行”的传统工作模式。此外,它跟操作系统shell和文件系统之间也有着非常紧密的集成。由于大部分的数据分析代码都含有探索式操作,因此IPython将有助于提高你的工作效率。

Pandas :它是一款强大的python数据分析工具包。对数据进行分析时,既不会像传统关系型数据库那样把大量时间耗费在数据的读写上,也不是像spark,hadoop那样的重量级数据处理工具。所以使用起来方便、快捷。

Matplotlib :绘图是数据分析工作中重要的任务之一,是探索过程的一部分。Matplotlib是一个用户创建出版质量图表的桌面绘图包,其目的是为Python构建一个MATLAB式的绘图接口,致力于将IPython和Matplotlib结合起来以提供一种功能丰富且高效的科学计算环境。

三、基本统计量

以IBM日简单收益率数据做为研究对象,进行几个基本统计量的计算

#-*- coding:utf-8 -*-

from __future__ import division

import pandas as pd

import math

import moment

df = pd.read_table("./chapter1/text/d-ibm3dx7008.txt")

df.columns = df.columns.map(lambda x :x.strip()) # 去掉字段名存在的空格

df['Date'] = df['Date'].apply( lambda x : moment.date( str(x) ,'YYYYMMDD').date)

df = df.set_index(df['Date'])

print df

df.shape #数据集行数 列数

df.head(1) # 数据集的第一行

df.tail(1) # 数据集的最后一行

ibm = df['rtn']

sibm = ibm * 100

sibm.mean() #均值

sibm.median() #中位数

sibm.sum() #和

sibm.var() #方差

sibm.std() #标准差

sibm.skew() # 偏度

sibm.kurtosis() # 超额峰度

四、时间序列的线性图表展示及重采样

在金融时间序列中,往往需要对不同时间频率的数据进行展示,下面的代码使用

ipython --pylab

命令进入ipython的pylab模式(此模式默认集成了matplotlib画图包)

In [1]: import pandas as pd

In [2]: import moment

In [3]: df = pd.read_table("./chapter1/text/d-ibm3dx7008.txt")

In [4]: df.columns = df.columns.map(lambda x :x.strip()) # 去掉字段名存在的空格

In [5]: df['Date'] = df['Date'].apply( lambda x : moment.date( str(x) ,'YYYYMMDD').date) # 将字符串Date列转化成时间序列

In [6]: df = df.set_index(df['Date']) #将时间序列Date设置为数据集的索引

In [7]: df['rtn'].plot() #IBM股票日收益率折线图

Out[7]:

20170207143917_337.png

In [9]: df['rtn'].resample('M').sum().plot() #IBM股票月收益率折线图

Out[9]:

20170207143917_419.png

In [10]: df['rtn'].cumsum().plot() #IBM股票日累计收益率折线图

Out[10]:

20170207143917_69.png

In [11]: df['rtn'].resample('M').sum().cumsum().plot() #IBM股票月累计收益率折线图

Out[11]:

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐