zoukankan      html  css  js  c++  java
  • day29-金融量化

    day30 金融量化分析 

    金融知识:股票的组成
    余额宝收益下跌:货币政策宽松了。
    MA5:从它开始及5天前的收盘价的平均值
    金叉买入,死叉卖出

    量化投资与python:python语言
    量化投资第三方相关模块:
    NumPy:数组批量计算
    pandas:表计算与数据分析
    Matplotlib:图表绘制

    三个模块的学习:

    anaconda下载,安装anaconda3 5.3.1(64-bit)
    下一步安装即可,安装后有anaconda prompt、anaconda navigator
    activate base进入环境
    anaconda自带python,安装时可以不勾选path,否则打开的就是python中的anaconda
    安装后使用:Jupiter notebook,在help---keyboard shortcuts中可查看快捷键

    一、numpy
    import numpy as np
    random.uniform(100,200) 100-200之间的随机小数
    例子1:
    1.将数组中的数都*r,一行代码实现
    [r*a for a in li]
    list(map(lambda x: x*r,li))
    np实现:
    arr = np.array(li)
    arr*r
    例子2:
    p = [random.uniform(10,20) for _ in range(1000)]
    n = [random.randint(1,10) for _ in range(1000)]

    s = 0
    for a,b in zip(p,n):
    s += a*b
    s
    np实现:
    arr_p = np.array(p)
    arr_n = np.array(n)
    (arr_p * arr_n).sum()

    np优点:速度快,省内存
    shape属性常用--数组的维度大小
    数据类型常用整型和浮点型:
    0看作是整数,4个字节,表示(-2 ** 31, 2**31-1),共2**32个数
    int32大概是21亿左右;;溢出会变为0
    astype可以转类型:arr.astype('float') 知道小数和整数互相转换即可

    arange()步长可以是小数
    np.zeros((2,3),dtype='int') 创建一个2行3列的数组,数值是int类型的全0,默认dtype是小数
    np.empty()
    数组的转换:np.arange(15).reshape(3,5)
    np.arange(15)[:-1].reshape(2,7)
    np.arange(60).reshape(-1,5,4) -1位置随意

    8:50-
    布尔型索引
    arr[1,2] 第一行,第二列,下标从0开始
    arr[:,2] 行都要,取第二列
    "# 二维数组的行索引和列索引可以互相搭配 ",
    "# 例外:都是花式索引或者布尔型索引不行 ",
    可以这样:"arr[[0,2],:][:,[1,3,4]]"
    ceil向上, floor向下, rint四舍五入, trunc向零取整

    方差 每一数与平均数的差取平方再求和
    std= aqrt(var) 标准差=方差开根号
    np.random.randint(3,10,3) 随机生成3个3-10的随机整数
    np.random.randint(3,10,(3,5)) 随机生成3行5列的3-10的随机整数

    重点:四个取整和两个特殊值nan 、 inf
    高数、线性代数、离散数学



    二、pandas--最重要
    具备对其功能的数据结构DataFrame、Series
    Series是一种类似于一位数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。
    支持数组的特性(语法、函数及方法)
    import pandas as pd
    sr = pd.Series([1,2,3,4,5],index=['a','b','c','d','e'])
    sr[2:3] # c 3
    # sr['b':'c'] 前后都包
    标签是整数,取标签对应的数
    loc属性 以标签解释
    iloc属性 以下标解释

    数据对齐:按照标签来相加,不存在的相加显示nan(不存在默认为缺失值)
    nan的类型为float,series数据类型一致,所以整数和也是float
    将缺失值设为0 :sr1.add(sr2, fill_value=0)

    处理缺失数据:
    过滤缺失数据:sr.dropna() 或 sr[data.notnull()]
    填充缺失数据:fillna(0)

    DataFrame:二维的数据结构
    自己创建pd.DataFrame({'one':[1,2,3,4],'two':[4,3,2,1]}) 了解即可
    主要是从文件中读取,例如:一般是 csv
    文件打不开,可以改为zip,就可以打开了,数据在worksheets文件夹中的sheet1.xml中

    csv文件读取与写入:
    df = pd.read_csv('601318.csv')
    df.read_csv('filename.csv') 读
    df.to_csv('new.csv') 写
    第一行默认解释成列索引,默认生成从0开始的行索引!
    array的dtype=object,因为每一列的值不一致。
    df.index

    切片和索引:第一个表示行
    方法1:两个中括号,先取列再取行。 df['A'][0]
    方法2(推荐):使用loc/iloc属性,一个中括号,逗号隔开,先取行再取列。
    loc属性:解释为标签
    iloc属性:解释为下标
    先去列再取行或者df.loc[1,'open] df.iloc[1,1]
    赋值df.iloc[1,1]=12

    大于20的数都变为0 注意不取字符串类型的值,否则会报错
    df2 = df.loc[:,'open':'low'].copy()
    df2[df2>20] = 0
    df2

    DataFrame数据对齐
    设置fill_value=0,行列都存在则进行相加

    缺失数据:填充fillna(0) 扔掉dropna
    dropna(how='all')行列有数据就留下,默认为any,有缺失值就整行或列丢掉
    axis=1,换轴,原本是删一行,变为删一列
    skipna=False跳过缺失值
    ascending=False 降序

    时间对象
    timedelta时间差值
    to_pydatetime()转换成python中datetime中的格式
    做日期报表:# pd.DataFrame(np.nan, index=pd.date_range('2019-1-1', '2019-12-31'), columns=['张三','李四','王五']).to_csv('date.csv')
    产生时间对象数组:date_range
    pd.date_range('2019-1-1', '2019-12-31',freq='MS') 每个月初生成一条,freq='M'每个月末生成一条
    3D:3天一条 SM:半个月 W-FRI :每周五 B:周一到周五

    时间序列:DatetimeIndex对象类型,可以进行快速的切片
    补充:df.resample('3D').mean() 每3天取平均
    每月第一天 df.resample('M').first()
    统计学会有专门分支讲解,我们学习了解目前的就好。

    文件处理:
    1.pd.read_csv('601318.csv'),默认把第一行解释为表头
    pd.read_csv('601318.csv',header=None) 指定文件无列名
    行索引自己生成,index_col 指定某列作为索引,就是普通的index
    parse_dates=True 指定某些列是否被解析为日期,布尔值或列表,此时日期就是datetimeindex类型

    sep='s+'指定分隔符为空格,这样可忽略数据之间的空格
    有时可能遇到一个字段(eg:None)没有解析整个列数据类型都改变的情况,需要指定缺失值。
    na_values 指定某些字符串表示缺失值 ,na_values=['None','<empty>'],这样会把None,<empty>解析为NaN

    float_format='%.3f' 保留小数点后3位
    index=False 不输出行索引一列
    columns=['open','low'] 只导出指定的两列
    na_rep='NaN'


    Tushare是一个免费、开源的python财经数据接口包。(国内的)
    需要安装:deactivate
    activate base
    pip install tushare

    安装后可以import使用 import tushare as ts
    "ts.get_k_data('601318',start='1980-1-1',end='2018-12-1')"获取股票数据

    小练习:
    1手:100股
    定投:几年之后很可能赚钱!


    day29 ok!
    下周;画图及策略----视频??
  • 相关阅读:
    2016.5.11_经典试题-回文算法【ABAP】
    shell基础知识
    python笔记2
    python笔记1
    vmware rdm
    网页中图片显示方向与实际图片方向不一致
    vue 弹性布局 实现长图垂直居上,短图垂直居中
    IE10 解决input file 同一文件不触发onchange事件
    04. pt-deadlock-logger
    03. pt-config-diff
  • 原文地址:https://www.cnblogs.com/lijie123/p/10239870.html
Copyright © 2011-2022 走看看