我正在尝试创建一个基本代码来模拟股票市场行为,作为我的编程课程中的练习。它基于加权随机性并通过pylab显示。 在大多数情况下它看起来不错,但无论我跑多少次试验,似乎都有点不随意。从每个随机更新的1-50开始,似乎有一个明确的向上趋势,不会反映在该系列的其他任何地方。代码中的任何其他地方的加权值都没有改变,所以这种趋势应该是一种失常,因为我确保给出的结果是许多试验的平均值。有谁知道我的代码导致这种情况发生了什么问题?谢谢!
class Simulation(object):
def __init__(self, netPos=300, downChance=.1, downTrend=.06, start = 1285.85, time = 0, recession = False):
self.netPos = netPos
self.downChance = downChance
self.downTrend = downTrend
self.value = start
self.time = time
self.recession = False
def getValue(self):
return self.value
def update(self):
if not self.recession:
if random.random() < self.downTrend:
self.recession = True
if random.random() > self.downChance:
self.value += random.random() * self.netPos
else:
self.value -= random.random() * self.netPos
else:
if random.random() < self.downTrend:
self.recession = False
if random.random() < self.downChance:
self.value += random.random() * self.netPos
else:
self.value -= random.random() * self.netPos
times = 5000
values = []
for i in range(1200):
values += [0]
for x in range(times):
runOnce = Simulation()
for y in range(1200):
values[y] += runOnce.getValue()
runOnce.update()
for i in range(1200):
values[i] = values[i] / times
def plottem(x,y):
pylab.plot(range(1200), values[x:y-1], label="Trend")
pylab.title("Simulated Trend")
pylab.xlabel("Time")
pylab.ylabel("Relative Value")
pylab.legend(loc = 1)
pylab.show()
def getChange(x,y):
print (values[x] - values[y-1])/(x-y-1)
plottem(0,1999)
结果:
答案 0 :(得分:1)
完全可以预料到这一点。你已经运行了一系列模拟,这些模拟都是以上升趋势开始并平均结果。由于它们都是从一个上升开始,平均值开始上升。之后,它们会不同步,平均值没有太大的趋势。