numpy 加速 矩阵相加_Intro to Python(二): NumPy

40bf33a09f666482053604bfa9a614f9.png

Intro to NumPy

1

在上一篇推文中我们讲过,NumPy是Python中的一个科学计算库,也可以说是一个功能强大的软件包。主要是因为NumPy可以对各种数学函数进行计算,比如它可以轻松执行线性代数的计算等。(以下我们用“np”表示NumPy)

b198039460b95b276016dff89000b30c.gif

最简单来说,我们可以使用NumPy去计算我们投资组合(portfolio)中的平均回报(mean return)。那么假设我们有个list,其中包含了几只股票的历史收益:“stock_list = [1, 2, 3, 4, 5]”。然后使“returns = np.array(stock_list)”,这代表这个list的数据将由returns表示,当接下来我们需要对这组数据进行任何计算的时候,就不需要再重复输入1,2,3,4,5。如果我们想求平均数也好,最大值也罢,无论portfolio中有多少个资产,都可以用”np.mean/max(return)”轻易得出。

deb534f19b10cc2fdb6e6d79861cf329.png b43d44f8ea939c1a89813dd4042976db.png

2

接下来,我们可以用NumPy去计算预期收益(expected return)。众所周知,在投资组合中,每一项具体的资产所占的比重可能都不同。假设我们有N个随机权重(weights)的资产在我们的portfolio中:“weights = np.random.uniform(0, 1, N)”和“weights = weights/np.sum(weights)”. 这里可以体现NumPy中有个random module的作用,它可以从许多不同的概率分布中,进行随机抽样。另外,当我们计算portfolio的预期收益时,手写公式=w1*r1+w2*r2+…+wn*rn,当资产数量多的时候,这样分别列出来难免有些过于繁琐。那么,NumPy中有个函数叫“dot”,它可以提取每组数组中的每个数据,并将其分别相乘,换句话说,dot可以将每个元素相乘并且将所有乘积相加。

f21d4ad6edd4bf8360e4d33c3b57bb3d.png

3

此外,线性代数在金融领域中是一个不可或缺的存在,比如说,在现代投资组合理论(modern portfolio theory)中,最优权重(optimal weights)的计算就是靠线性代数完成的。从入门开始,我们可以使用NumPy去进行矩阵乘法的运算。矩阵乘法是线性代数中的一个基础工具,其可以表示为y=A*x,其中A=m*n的矩阵,y=m*1的向量,x是n*1的向量(直白点来说,m是行数,n是列数)。那当两个矩阵相乘时,新矩阵=(m*n)*(p*q)=(m*q)或者(p*q)*(m*n)=(p*n)(矩阵所处的左右位置都会导致结果不同)。比如说:我们随便假设两个矩阵,其中A=3*5,B=4*3,当我们把B矩阵放在右侧,A矩阵放在左侧,可得(4*3)*(3*5)=(4*5)。NumPy中的dot函数可以直接帮我们计算出任何有效矩阵:

0efc8a0ae3c4140f66e3148ebf31fed2.png 2e8ce534fd7b9ff857e3cd95f2d2bf99.png 71b872ba5aae74914999ee795d09c807.png 7eb0d804e3f3c0bbdbac09658cac4790.png

作者:研报部:程颢颐

编辑:线上部:Tim

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值