2.1初步函数统计
price_weight = np.average(close,weights=amount)
price_mean = np.mean(close)
price_max = np.max(amount)
price_min = np.min(amount)
price_ptp = np.ptp(amount)
price_mediam = np.median(close)
sorted_price=np.msort(close)
var_price=np.var(close)
2.2 计算股票收益率、年波动率及月波动率
returns=np.diff(close) / close[:-1] #计算收盘价的简单收益率
# np.diff() 后一天与前一天的差值(最后一天的不计算)
# arr[:-1] 除去最后一天的数组
returns_index=np.where(returns > 0) #获取收益率为正值的元素的索引组成的元组
result=np.take(close,returns_index) #根据索引值,获取相应的数组元素
std_price=np.std(close) #计算收盘价的标准差
logreturns=np.diff(np.log(close)) #对数收益率
计算年波动率:
#年波动率等于对数收益率的标准差除以其均值,再除以交易日倒数的平方根,通常交易日取252天。
annual_volatility = (np.std(logreturns) / np.mean(logreturns)) / np.sqrt(1/252)
月波动率
#月波动率等于对数收益率的标准差除以其均值,再除以交易月倒数的平方根,交易月为12月。
mon_volatility=annual_volatility * np.sqrt(1/12)
2.3 日期处理函数
import numpyas np
from datetime import datetime
datestr="2018-05-28"
newDate=datetime.strptime(datestr,"%Y-%m-%d")
print(newDate)
weekday=newDate.date().weekday()
print("{}是星期{}".format(datestr,weekday+1))
2.3 综合统计
需求:文件中的数据为给定时间范围内某股票的数据,分别对应的平均收盘价及哪天的平均收盘价最高,
哪天的平均收盘价最低。
importnumpy as np
from datetime import datetime
def datestr2num(s):
return datetime.strptime(s.decode("utf8"), "%d-%m-%Y").date().weekday()
date,close=np.loadtxt("./data.csv",delimiter=",",usecols=(1,6),converters={1:datestr2num},unpack=True)
average=[]
for i in range(5):
mask= date==i
close_w=close.compress(mask)
average.append(np.mean(close_w))
maxIndex=np.argmax(average)
minIndex=np.argmin(average)
print("星期{}的收盘价的平均收盘价最高!".format(maxIndex+1))
print("星期{}的收盘价的平均收盘价最低!".format(minIndex+1))