如何用Python循环实现累积求和及金融领域标准差计算?
用Python循环计算金融资产的收益率标准差
没问题,我来帮你用Python循环实现这个标准差计算!先确认你的手动计算完全正确,接下来咱们一步步用循环复现整个过程:
1. 定义输入数据
首先把题目里的概率和收益率数组用Python列表定义好:
probabilities = [0.3, 0.4, 0.3] returns = [0.10, 0.05, 0.30]
2. 循环计算期望收益率E(r)
期望收益率是每个收益率与对应概率的乘积之和,用循环累加每一项的贡献:
expected_return = 0.0 # 用zip把概率和收益率配对遍历 for p, r in zip(probabilities, returns): expected_return += p * r print(f"计算得到的期望收益率E(r): {expected_return}") # 输出应该是0.14,和你的手动结果一致
3. 循环计算方差Var
方差是每个(收益率-期望收益率)的平方,再乘以对应概率的总和,同样用循环实现:
variance = 0.0 for p, r in zip(probabilities, returns): # 计算单个项的方差贡献 variance_contribution = p * (r - expected_return) ** 2 variance += variance_contribution print(f"计算得到的方差Var: {variance}") # 输出应该是0.0114,和手动计算结果一致
4. 计算标准差
标准差是方差的平方根,我们可以用Python标准库math里的sqrt函数来计算,再按需四舍五入:
import math std_dev = math.sqrt(variance) # 四舍五入到5位小数 rounded_std_dev = round(std_dev, 5) print(f"原始标准差: {std_dev}") print(f"四舍五入后标准差: {rounded_std_dev}") # 输出分别是0.10677078252031311和0.10677
完整运行代码
把所有步骤整合到一起,直接运行就能得到结果:
import math probabilities = [0.3, 0.4, 0.3] returns = [0.10, 0.05, 0.30] # 计算期望收益率 expected_return = 0.0 for p, r in zip(probabilities, returns): expected_return += p * r # 计算方差 variance = 0.0 for p, r in zip(probabilities, returns): variance += p * (r - expected_return) ** 2 # 计算标准差 std_dev = math.sqrt(variance) rounded_std_dev = round(std_dev, 5) # 打印结果 print(f"期望收益率E(r): {expected_return}") print(f"方差Var: {variance}") print(f"标准差: {std_dev}") print(f"四舍五入后标准差: {rounded_std_dev}")
这样用循环就完整复现了你手动计算的所有步骤,而且结果完全一致~
内容的提问来源于stack exchange,提问作者César Chávez
相关产品推荐
相关产品推荐

