gpt4 book ai didi

python - Python while 循环中的上一个值

转载 作者:行者123 更新时间:2023-12-01 04:13:12 25 4
gpt4 key购买 nike

我尝试对股票投资进行简单的蒙特卡罗模拟,您从一些投资值(value)、投资期限(以年为单位)以及股票共同基金的平均值和标准开始。我还想实现一种简单的方法来应对股市崩盘 - 我这样做是为了每当新的计算值比之前的值高 40% 时,新值就会下跌 90% - 就像某种崩盘一样。我设法让它工作,这是代码,但我认为它工作不正常。问题可能隐藏在我称之为先前值的地方。你能尝试让它工作吗?

import matplotlib
import matplotlib.pyplot as plt
import random
import numpy as np

mean = 7.0 #mean for stock mutual fund
std = 19.0 #std for stock mutual fund

def investment_return(): #random normal distribution of returns
investment_return = (np.random.normal(mean,std))/100
return investment_return

def investor(A, B):
investment_value = A
investment_period = B

wX = []
vY = []

x = 1

while x <= investment_period:
value = A + A*investment_return()
if value > value * 1.4: #if new value is 1.4x bigger than previous
A = value * 0.1 #than make -90 percent adjustment
else:
A = value #else use new value
wX.append(x)
vY.append(value)
x += 1
#print(value)

plt.plot(wX,vY)

i = 0
while i < 10: #number of investors
investor(100,20) #starting value and investment period
i += 1

plt.ylabel('Investment_value')
plt.xlabel('Investment_period')
plt.show()

最佳答案

好吧,我尽力解释你所追求的。它为您提供了坚实的合作基础,这对您很有帮助:)。

好吧,我们开始吧:显然,Kevin 所说的 value > value * 1.4 永远不会计算为 True 是可靠的。我确实重命名了一些变量(例如,通常我们将股票作为指数进行比较,所以我将A重命名为index)。时间通常被称为t,而不是xwhile 循环有点奇怪,所以我去掉了它们。

import matplotlib.pyplot as plt
import numpy as np


mean = 7.0
std = 19.0


def investment_return():
return (np.random.normal(mean, std)) / 100


def investor(index, period):
wT = []
vY = []

for t in range(1, period + 1):
new_index = index + index * investment_return()
if new_index > index * 1.4:
index = new_index * 0.1
else:
index = new_index
wT.append(t)
vY.append(index)
return wT, vY


for i in range(0, 10):
wT, vY = investor(100, 20)

# do something with your data

plt.plot(wT, vY)

plt.ylabel('Investment_value')
plt.xlabel('Investment_period')
plt.show()

这偶尔会导致股票崩盘,正如可以清楚地看到的那样(请记住,这需要您从 N(7,19) 中采样 >40 > 分布:在所有情况下,95% 不应该发生这种情况)。

关于python - Python while 循环中的上一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34642753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com