<aside> 💡
查看全集:Quantopia量化分析56讲
</aside>
NumPy作为Python的核心科学计算库,在Quantopian量化平台上发挥着关键作用。它提供高效的多维数组支持及丰富的数学函数,特别适合处理投资组合优化等需要线性代数运算的场景。本文将带您掌握NumPy在金融分析中的核心应用技巧。
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)
print(returns[1:3]) # 输出: [5. 2.]
print(A[0, :]) # 输出: [1 2]
print(A[:, 0]) # 输出: [1 3]
print(np.log(returns)) # 对数运算
print(np.max(returns)) # 最大值: 8.0
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
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)
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}%")