2015-12-13 54 views
0

我試圖創建一個基本的代碼來模擬股市行爲作爲我的編程課的練習。它基於加權隨機性,並通過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) 

結果:

the surprising results

+0

歡迎卡羅。對於您需要放置4個領先空間的代碼。欲瞭解更多信息,請看這裏:http://stackoverflow.com/help/formatting – AdrieanKhisbe

+1

「從每個隨機更新的1-50,似乎有一個明確的向上的趨勢,不反映在系列的其他任何地方」 - 它是不完全清楚你想說什麼,但是你的代碼沒有明確地設定一個初始的向上趨勢?有'self.recession'標誌開始False並且只有0.06次翻轉每個更新的機會。 – user2357112

+0

@ user2357112 https://gyazo.com/f0e0e41e96​​05b4e5a4c64c9e66292416我希望它看起來更多,儘管 –

回答

1

這是完全預料。您已經運行了一系列模擬,所有模擬都以上升趨勢開始,並取平均值。由於他們都是從上漲開始,所以平均起步是上漲的。在那之後,它們失去了平衡,平均水平並沒有太大的變化。

+1

好的,這很有道理,謝謝! –

相關問題