Python 从蒙特卡罗求和情景
我试图对Python 从蒙特卡罗求和情景,python,Python,我试图对Callpayoffs中的值求和,因为它们表示基于上一路径资产价格循环中生成的最后一个价格的支付。如果我运行10个模拟,那么基于每个模拟路径的最后一个价格(有252个价格点),应该有10个callpayoff。不幸的是,我无法将Callpayoffs列表中的值相加。非常感谢您的帮助-以下是print(sum(callpayoffes) 基于我的代码 import numpy as np import pandas as pd from math import * import matpl
Callpayoffs
中的值求和,因为它们表示基于上一路径资产价格循环中生成的最后一个价格的支付。如果我运行10个模拟,那么基于每个模拟路径的最后一个价格(有252个价格点),应该有10个callpayoff
。不幸的是,我无法将Callpayoffs
列表中的值相加。非常感谢您的帮助-以下是print(sum(callpayoffes)
基于我的代码
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)
您需要初始化
Cardpayoffs
outsidefor
循环,并在遍历列表后调用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)
您需要初始化
Cardpayoffs
outsidefor
循环,并在遍历列表后调用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)
恐怕这不起作用,print(sum)(Callpayoffs)只是取最后一个值,而不是将所有值相加。@nearyorpythoncharmer代码的输出是列表的总和,在本例中包含4个元素。如果您打印(Callpayoffs)在与Callpayoffs.append相同的缩进中,您将看到sum payoffs只给出最后一个值。恐怕这不起作用,打印(sum(Callpayoffs)只是取最后一个值,而不是将所有值相加。@Nearropythoncharmer代码的输出是列表的总和,在本例中包含4个元素。如果您打印(Callpayoffs)与Callpayoffs的缩进相同。追加您将看到payoffs之和只给出最后一个值