precio_accion
- это не list
или dict
, это число с плавающей запятой, поэтому вам не нужна строка precio_accion[0] = precio_accion
. Если вы хотите list
:
import math
import random
def funcion_gbm(pi = 100, media = 0.10, volatilidad = 0.05):
m = media
v = volatilidad
def funcion_anidada():
exponencial = math.exp((m - (1/2) * v**2) * (1/365) +
v * math.sqrt(1/365) * random.normalvariate(0, 1))
precio = pi * exponencial
return precio
return funcion_anidada
precio_accion = funcion_gbm()()
# Now precio_accion is a list and your iteration will work
precio_accion = [precio_accion]
Редактировать
Теперь давайте перейдем к вашей петле. Во-первых, ваш target_price
не меняется, так зачем продолжать его переопределять? Вы можете определить его один раз за пределами вашего цикла:
target_price = 125
for rueda in range(1,1000):
# Now you need to append to the list rather than trying to
# access other elements that aren't in the list yet
precio_accion.append(funcion_gbm(precio_accion[rueda - 1]))
# You're comparing the last item in the list every time, so
# you can just access it with -1
if precio_accion[-1] == target_price:
print("reached")
# No need for else since it's just continuing the loop