<aside> 💡

查看全集:Quantopia量化分析56讲

</aside>

引言

NumPy作为Python的核心科学计算库,在Quantopian量化平台上发挥着关键作用。它提供高效的多维数组支持及丰富的数学函数,特别适合处理投资组合优化等需要线性代数运算的场景。本文将带您掌握NumPy在金融分析中的核心应用技巧。

一、NumPy数组基础

1.1 创建数组

import numpy as np

stock_list = [3.5, 5, 2, 8, 4.2]
returns = np.array(stock_list)
print(returns)  # 输出: [3.5 5.  2.  8.  4.2]

# 创建二维数组
A = np.array([[1, 2], [3, 4]])
print(A.shape)  # 输出: (2, 2)

1.2 数组索引与切片

print(returns[1:3])    # 输出: [5. 2.]
print(A[0, :])         # 输出: [1 2]
print(A[:, 0])         # 输出: [1 3]

二、数组运算与统计

2.1 数学函数应用

print(np.log(returns))  # 对数运算
print(np.max(returns))  # 最大值: 8.0

2.2 统计计算

mean_return = np.mean(returns)
std_dev = np.std(returns)
print(f"均值: {mean_return:.2f}, 标准差: {std_dev:.2f}")

三、缺失值处理

v = np.array([1, 2, np.nan, 4, 5])

# 方法1:过滤NaN
clean_v = v[~np.isnan(v)]
print(np.mean(clean_v))  # 输出: 3.0

# 方法2:使用nan函数
print(np.nanmean(v))     # 输出: 3.0

四、投资组合分析

4.1 生成模拟资产

N = 10  # 10个资产
days = 100  # 100个交易日
returns = np.zeros((N, days))

# 生成基准资产
base_returns = np.random.normal(1.01, 0.03, days)
returns[0] = base_returns

# 生成相关资产
for i in range(1, N):
    returns[i] = base_returns + np.random.normal(0.001, 0.02, days)

4.2 计算投资组合收益

weights = np.random.uniform(0, 1, N)
weights /= weights.sum()  # 归一化权重

portfolio_return = np.dot(weights, [np.mean(r)*100 for r in returns])
print(f"预期组合收益率: {portfolio_return:.2f}%")