量化投资:以Python为工具,代码和数据第三部分


量化投资:以Python为工具,代码和数据第三部分
资源截图
代码片段和文件信息
‘‘‘
Please use the following example commands to specify the path containing code and data:
import os
os.chdir(‘E:\book_data\part 3\018‘)
‘‘‘
import pandas as pd
stock=pd.read_csv(‘stockszA.csv‘index_col=‘Trddt‘)
Vanke=stock[stock.Stkcd==2]

close=Vanke.Clsprc
close.head()

close.index=pd.to_datetime(close.index)
close.index.name=‘Date‘
close.head()

lagclose=close.shift(1)
lagclose.head()

Calclose=pd.Dataframe({‘close‘:close‘lagclose‘:lagclose})
Calclose.head()

simpleret=(close-lagclose)/lagclose
simpleret.name=‘simpleret‘
simpleret.head()
calret=pd.merge(Calclosepd.Dataframe(simpleret)left_index=True
right_index=True)
calret.head()

simpleret2=(close-close.shift(2))/close.shift(2)
simpleret2.name=‘simpleret2‘
calret[‘simpleret2‘]=simpleret2
calret.head()
calret.iloc[5:]

import ffn
ffnSimpleret=ffn.to_returns(close)
ffnSimpleret.name=‘ffnSimpleret‘
ffnSimpleret.head()

#假设一年有245个交易日
annualize=(1+simpleret).cumprod()[-1]**(245/311)-1
annualize

def annualize(returnsperiod):
    if period==‘day‘:
        return((1+returns).cumprod()[-1]**(245/len(returns))-1)
    elif period==‘month‘:
        return((1+returns).cumprod()[-1]**(12/len(returns))-1)
    elif period==‘quarter‘:
        return((1+returns).cumprod()[-1]**(4/len(returns))-1)
    elif period==‘year‘:
        return((1+returns).cumprod()[-1]**(1/len(returns))-1)
    else:
        raise Exception(“Wrong period“)

import numpy as np
comporet=np.log(close/lagclose)
comporet.name=‘comporet‘
comporet.head()
comporet[5]
ffnComporet=ffn.to_log_returns(close)
ffnComporet.head()
comporet2=np.log(close/close.shift(2))
comporet2.name=‘comporet2‘
comporet2.head()
comporet2[5]

comporet=comporet.dropna()
comporet.head()
sumcomporet=comporet+comporet.shift(1)
sumcomporet.head()

simpleret.plot()
((1+simpleret).cumprod()-1).plot()

#数据日期为2014年1月1日到2014年12月31日
#SAPower代表“航天动力”股票,股票代码为“600343”
#DalianRP代表“大橡塑”股票,股票代码为“600346”

SAPower=pd.read_csv(‘SAPower.csv‘index_col=‘Date‘)
SAPower.index=pd.to_datetime(SAPower.index)
DalianRP=pd.read_csv(‘DalianRP.csv‘index_col=‘Date‘)
DalianRP.index=pd.to_datetime(DalianRP.index)

returnS=ffn.to_returns(SAPower.Close).dropna()
returnD=ffn.to_returns(DalianRP.Close).dropna()

returnS.std()
returnD.std()

def cal_half_dev(returns):
    mu=returns.mean()
    temp=returns[returns    half_deviation=(sum((mu-temp)**2)/len(returns))**0.5
    return(half_deviation)

cal_half_dev(returnS)
cal_half_dev(returnD)

#历史模拟法
returnS.quantile(0.05)
returnD.quantile(0.05)

#协方差矩阵法
from scipy.stats import norm
norm.ppf(0.05returnS.mean()returnS.std())
norm.ppf(0.05returnD.mean()returnD.std())


returnS[returnS<=returnS.quantile(0.05)].mean()
returnD[returnD<=returnD.quantile(0.05)].mean()

import datetime
r=pd.Series([00.1-0.1-0.010.010.02]index=[datetime.date(20157x) for x in range(39)])
r
value=(1+r).cumprod()
value
D=value.cummax()-value
D
d=D/(D+value)
d
MDD=D.max()
MDD
mdd=d.max()
mdd
ffn.calc_max_drawdown(value)
ffn.calc_max_drawdown((1+returnS).cum

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-01-30 09:26  part 3
     目录           0  2017-01-30 09:26  part 318
     文件        3186  2017-01-19 01:04  part 31818.py
     文件       13256  2015-08-01 03:20  part 318DalianRP.csv
     文件       12716  2015-08-01 03:13  part 318SAPower.csv
     文件    43710144  2015-08-21 17:13  part 318stockszA.csv
     目录           0  2017-01-30 09:26  part 319
     文件        5093  2017-01-21 14:44  part 31919.py
     文件       71398  2014-07-10 17:07  part 319
et.csv
     文件    39124607  2015-07-05 22:26  part 319stock.txt
     目录           0  2017-02-13 08:23  part 320
     文件        1146  2017-01-21 14:43  part 32020.py
     文件      289951  2015-07-07 00:33  part 320TRD_Index_20.csv
     文件       12434  2015-08-01 03:33  part 320xin_an.csv
     目录           0  2017-01-30 09:26  part 321
     文件        1207  2017-01-21 14:42  part 32121.py
     文件    39124607  2015-07-05 22:26  part 321stock.txt
     文件      416706  2015-07-05 20:34  part 321ThreeFactors.txt

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)