python - 总结蒙特卡洛的场景

标签 python

我正在尝试对 Callpayoffs 中的值进行求和,因为它们代表基于先前路径 Assets 价格循环中生成的最后价格的 yield 。如果我运行 10 次模拟,则根据每个模拟路径(有 252 个价格点)的最后价格,应该有 10 个 Callpayoffs。不幸的是,我无法将 Callpayoffs 列表中的值相加。非常感谢任何帮助 - 下面是 print(sum(Callpayoffs)

的示例
4.620174500863143
22.762337253759725
0
51.97221078945353

基于我的代码

import numpy as np
import pandas as pd
from math import *
import matplotlib.pyplot as plt
from matplotlib import *


def Generate_asset_price(S,v,r,dt):
    return (1 + r * dt + v * sqrt(dt) * np.random.normal(0,1))


# initial values
S = 100
v = 0.2
r = 0.05
T = 1
N = 252 # number of steps 
dt = 0.00396825
simulations = 4


for x in range(simulations):
    stream = [100]
    Callpayoffs = []
    t = 0
    for n in range(N):
        s = stream[t] * Generate_asset_price(S,v,r,dt)
        stream.append(s)
        t += 1
    Callpayoffs.append(max(stream[-1] - S,0))   
    print(sum(Callpayoffs))

    plt.plot(stream)

最佳答案

您需要在 for 循环之外初始化 Cardpayoffs,并在迭代列表后调用 sum。以下应该可以解决问题:

Callpayoffs = []
for x in range(simulations):
    stream = [100]
    t = 0
    for n in range(N):
        s = stream[t] * Generate_asset_price(S,v,r,dt)
        stream.append(s)
        t += 1
    Callpayoffs.append(max(stream[-1] - S,0))   

print(sum(Callpayoffs))
plt.plot(stream)

关于python - 总结蒙特卡洛的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55987590/

相关文章:

Python:如何从内存中的zip文件读取图像?

python - 类别权重使我的 keras 分类模型恶化

python - python中将字符串与numpy数组中的格式化数字转换的最快方法是什么

python - 无法使用 pickle 和多个模块加载文件

python - 如何在groupby之后创建变量

python - 调用异步函数时如何防止上下文切换?

python - 将大型位置数据帧的东距和北距快速转换为纬度和经度

python - 无限嵌套的 defaultdict 是否有标准类?

python - 捕捉到 wxpython 中的像素

python - Matplotlib 中的散点图等高线