一、裁剪、压缩、累乘
1、裁剪
- 概念:指的是削掉波峰或波谷这类型的,将调用数组中小于min的元素设置为min,大于max的元素设置为max
- 用法:ndarray.clip(min=最小值, max=最大值)
2、压缩
- 概念:返回调用数组中满足给定条件的元素
- 用法:ndarray.compress(条件)
3、累乘
- 结果累乘:返回调用数组中各元素的乘积,是累乘结果
ndarray.prod() - 过程累乘:返回调用数组中个元素计算累乘的过程数组,是累乘过程
ndarray.cumprod()
4、练习代码
import numpy as np
a = np.arange(1, 10).reshape(3, 3)
print(a)
b = a.clip(min=3, max=7)
print('-------------\n', b)
c = a.compress(a.ravel() > 3).reshape(-1, 3)
print('-------------\n', c)
d = a.compress((3 < a.ravel()) & (a.ravel() < 7))
print('-------------\n', d)
e = a.prod()
print('-------------\n', e)
f = a.cumprod()
print('-------------\n', f)
二、样本相关性曲线
1、样本相关性系数与相关性矩阵
-
样本:
a = [a1, a2, …, an]
b = [b1, b2, …, bn]
-
均值:
ave(a) = (a1 + a2 + … + an)/n
ave(b) = (b1 + b2 +… + bn)/n
-
离差:
dev(a) = [a1, a2, …, an] - ave(a)
dev(b) = [b1, b2, …, bn] - ave(b)
-
方差:
var(a) = ave(dev(a)dev(a))
var(b) = ave(dev(b)dev(b))
-
标准差:
std(a) = sqrt(var(a))
std(b) = sqrt(var(b))
-
协方差:反映协同效应
cov(a,b) = ave(dev(a)dev(b))
cov(b,a) = ave(dev(b)dev(a))
-
样本相关性系数:
反映相关性程度,[-1, 1]之间的一个数,正负表示了相关性的方向,绝对值表示相关性的强弱,0表示不相关。
-
样本相关性矩阵
cov(a,b)/std(a)std(b))
cov(b,a)/std(b)std(a))
2、用numpy计算相关性矩阵
- numpy.corrcoef(a, b)
a,b参数分别对应两条曲线的当天的日收益(收益理想差分-每天的收盘价)
3、样本相关性案例
import datetime as dt
import numpy as np
import matplotlib.pylab as mp
import matplotlib.dates as md
def dmy2ymd(dmy):
dmy = str(dmy, encoding='utf-8')
date = dt.datetime.strptime(dmy, '%d-%m-%Y').date()
ymd = date.strftime('%Y-%m-%d')
return ymd
dates, beer_closing_prices = np.loadtxt(
'0=数据源/beer_price2.csv', delimiter=',',
usecols=(0, 4), unpack=True,
dtype=np.dtype('M8[D], f8'),
converters={0: dmy2ymd}
)
__, apple_closing_prices = np.loadtxt(
'0=数据源/apple_price.csv', delimiter=',',
usecols=(0, 4), unpack=True,
dtype=np.dtype('M8[D], f8'),
converters={0: dmy2ymd}
)
beer_returns = np.diff(beer_closing_prices)/beer_closing_prices[:-1]
apple_returns = np.diff(apple_closing_prices)/apple_closing_prices[:-1]
ave_a = np.mean(beer_returns)
dev_a = beer_returns - ave_a
var_a = np.mean(dev_a * dev_a)
std_a = np.sqrt(var_a)
ave_b = np.mean(apple_returns)
dev_b = apple_returns - ave_b
var_b = np.mean(dev_b * dev_b)
std_b = np.sqrt(var_b)
cov_ab = np.mean(dev_a * dev_b)
cov_ba = np.mean(dev_b * dev_a)
covs = np.array([
[var_a, cov_ab],
[cov_ba, var_b]
])
stds = np.array([
[std_a * std_a, std_a * std_b],
[std_b * std_a, std_b * std_b]
])
corr = covs / stds
print(corr, end='\n--------------------\n')
corr2 = np.corrcoef(beer_returns, apple_returns)
print(corr2)
mp.figure('Correlation of returns', facecolor='lightgray')
mp.title('Correlation of returns', fontsize=20)
mp.xlabel('Date', fontsize=14)
mp.ylabel('Returns', fontsize=14)
ax = mp.gca()
ax.xaxis.set_major_locator(
md.WeekdayLocator(byweekday=md.MO)
)
ax.xaxis.set_minor_locator(
md.DayLocator()
)
ax.xaxis.set_major_formatter(
md.DateFormatter('%d %b %Y')
)
mp.tick_params(labelsize=10)
mp.grid(linestyle=':')
dates = dates.astype(md.datetime.datetime)
mp.plot(dates[:-1], beer_returns, c='dodgerblue', label='Beer')
mp.plot(dates[:-1], apple_returns, c='limegreen', label='Apple')
mp.legend()
mp.gcf().autofmt_xdate()
mp.show()
4、案例效果
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)