# Automated Stock Market Trading Simulation # FB - 20140515 import random initialMoneyOwned = 1000.0 initialStocksOwned = 0.1 initialStockPrice = 10000.0 tradingDays = 1000 tp = 5.0 # buy/sell percentage threshold of the investor maxVolatilityPercent = 5.0 # of the stock numTrials = 1000 initialInvestment = initialMoneyOwned + initialStocksOwned * initialStockPrice def SimulateTrading(moneyOwned, stocksOwned, stockPrice, days): stockBuySellPrice = stockPrice for day in range(days): volatility = random.random() * stockPrice * maxVolatilityPercent / 100.0 stockPrice += (random.random() * 2.0 - 1.0) * volatility # trading if stocksOwned > 0.0: if stockPrice >= stockBuySellPrice * (100.0 + tp) / 100.0: # sell moneyOwned += stocksOwned * stockPrice stocksOwned = 0.0 stockBuySellPrice = stockPrice if moneyOwned > 0.0: if stockPrice <= stockBuySellPrice * (100.0 - tp) / 100.0: # buy stocksOwned += moneyOwned / stockPrice moneyOwned = 0.0 stockBuySellPrice = stockPrice return (moneyOwned, stocksOwned, stockPrice) numWins = 0 numLosses = 0 totalWins = 0.0 totalLosses = 0.0 for i in range(numTrials): (moneyOwned, stocksOwned, stockPrice) = \ SimulateTrading(initialMoneyOwned, initialStocksOwned, initialStockPrice, tradingDays) finalReturn = moneyOwned + stocksOwned * stockPrice - initialInvestment if finalReturn > 0.0: numWins += 1 totalWins += finalReturn elif finalReturn < 0.0: numLosses += 1 totalLosses += finalReturn print "Initial Investment = " + str(initialInvestment) print "Trading Days = " + str(tradingDays) print "Number of Trials = " + str(numTrials) print "Number of Wins = " + str(numWins) print "Average Win Amt = " + str(totalWins / numWins) print "Number of Losses = " + str(numLosses) print "Average Loss Amt = " + str(abs(totalLosses / numLosses))