金融数据的分析与挖掘

K线图的绘制

  • 股票的每日价格走势图
  • 每日价格的形态

    这里写图片描述

  • 绘制K线图

    • matplotlib.finance.candlestic_ochl(axes, data, width=0.5, colorup="r", colordown=‘g’)
    • data必须是一个包含ochl和0-n索引值的数组

K线图的转换

  • pandas重采样数据

    • DateFrame.resample(rule, how=None, axis=0, file_method=None, closed=None, kind=None)
    • 频率转换和时间序列重采样,对象必须具有类似日期时间的索引
    rule:表示重采样的频率,例如周‘W’,月‘M’,季度,‘Q’,5分钟‘5min’,12'12D'
    
    how:用于产生聚合值的函数名或数值函数,例如“mean‘,’ohlc‘,np.max等,默认是'mean',其他常用的值,有:’first‘,'last','median','max','min'
    
    axis=0:默认是纵轴,横轴设置为axis=1
    
    closed='right':在重采样时,各时间段的哪一段是闭合的,’right‘或 ’left‘,默认是’right‘
    
    fill_method=None:重采样时,如何插入值,比如:’ffill‘,'bfill'
    
    kind=None:聚合到时期('period')或时间戳('timestamp'),默认聚合到时间序列的索引类型
    

时间序列

  • 按照时间发生先后顺序进行排序的数据点序列

    • 通常一组时间序列的时间
  • datetime模块

    import pandas as pd
    from datetime import datetime
    
    date = [datetime(2017,1,2)]
    
    a = pd.series(10.0, index=date)
    
    
  • pandas时间类型

// 定义数据的时间类型
格式:pd.to_datetime(arg, unit=)
其中:arg:时间参数
     unit:转换的最小单位
如:
pd.to_datetime(date)

pd.DatetimeIndex(date)

  • 定义pandas中的时间序列结构
date = [datetime(2018,1,1), datetime(2018,1,3),datetime(2018,1,4)]

series = pd.Series(3.0, index=date)

series

out:2018-01-01 3.0
     2018-01-03 3.0
     2018-01-04 3.0
     dtype:float64
  • DatetimeIndex的属性

    • year,month, weekdat,day,hour…
    time = pd.DatetimeIndex(time_value)
    time.year
    ...
    • 频率和时间的偏移
    d = pd.to_datetime(["2018-01-01","2018-03-01"])
    d.shift(-1, freq='D') 

pandas的时间序列生成

  • pandas.date_range(star=None, end=None, periods, freg='D', tz=None, normalize=False, name=None, closed=None, **kwargs)

股票时间序列分析

  • 移动窗口

    • 用一个窗口将一段时间套住,计算这一段时间内的某个值,如,平均值
  • 移动平均线

    • 某一段时间的收盘价之和除以该周期
  • 加权移动平均线

    • 将过去的某特定时间内的价格取其平均值,它的比重以平均线的长度设定,越近期的收市价,对市况的影响越大
    1.末日加权移动平均线
    MA(N) = (C1+C2+...+Cn*2)/n+1
    
    2.线性加权移动平均线
    MA = (C1*1 + C2*2 + ...+ Cn*n)/(1+2+3...+n)
    
    
  • 指数平滑移动平均线

    算法:若 Y = EMA(X,N),则 Y=[2*x + (N-1)*Y']/(N+1)
    其中:X是变量,每天的X都不同,从远到近的标记,它们分别记为X1,X2,X3...Xn
    
    如果 N=1,
    则 EMA(X,1) = [2*X1 + (1-1)*Y']/(1+1) = X1
    
    如果 N =2,
    则 EMA(X,2) = [2 *X2 + (2-1)*Y']/(2+1) = (2/3)*X2 +(1/3)*X1
    
    如果 N=3,
    则 EMA(X,3) = [2* X3 + (3-1)*Y']/(3+1) = [2*X3 + 2*((2/3)*X2+ 2*(1/3)*X1)]/4 = (1/2)*X3 + (1/3)*X2 +(1/6)*X1 
    
    • pd.ewma(com=None, one)
  • 移动窗口的方差和标准差

    • 反应某一时期的序列的稳定性
    • pandas.rolling_std()

猜你喜欢

转载自blog.csdn.net/Michael_Cool/article/details/80369155