-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathmontecarlo16.py
More file actions
183 lines (144 loc) · 4.52 KB
/
montecarlo16.py
File metadata and controls
183 lines (144 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
import random
import matplotlib
import matplotlib.pyplot as plt
import time
#lower_bust = 19.00
#higher_profit = 69.00
# back to 1,000
sampleSize = 10000
startingFunds = 100000
wagerSize = 100
wagerCount = 1000
def rollDice():
roll = random.randint(1,100)
if roll <= 50:
return False
elif roll >= 51:
return True
def dAlembert(funds,initial_wager,wager_count):#,color):
global ROI
global da_busts
global da_profits
value = funds
wager = initial_wager
wX = []
vY = []
currentWager = 1
previousWager = 'win'
previousWagerAmount = initial_wager
while currentWager <= wager_count:
if previousWager == 'win':
if wager == initial_wager:
pass
else:
wager -= initial_wager
#print 'current wager:',wager,'value:',value
if rollDice():
value += wager
#print 'we won! Current Value:',value
wX.append(currentWager)
vY.append(value)
else:
value -= wager
previousWager = 'loss'
#print 'we lost, current value',value
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
da_busts += 1
break
elif previousWager == 'loss':
wager = previousWagerAmount + initial_wager
if (value - wager) <= 0:
wager = value
#print 'Lost the last wager, current wager:',wager,'value:',value
if rollDice():
value += wager
#print 'we won! Current Value:',value
previousWager = 'win'
wX.append(currentWager)
vY.append(value)
else:
value -= wager
previousWager = 'loss'
#print 'we lost, current value',value
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
da_busts += 1
break
currentWager += 1
#plt.plot(wX,vY)
if value > funds:
da_profits+=1
ROI += value
def multiple_bettor2(funds,initial_wager,wager_count,multiple):#,color):
global ROI
global multiple_busts
global multiple_profits
value = funds
wager = initial_wager
wX = []
vY = []
currentWager = 1
previousWager = 'win'
previousWagerAmount = initial_wager
while currentWager <= wager_count:
if previousWager == 'win':
if rollDice():
value += wager
wX.append(currentWager)
vY.append(value)
else:
value -= wager
previousWager = 'loss'
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
multiple_busts += 1
break
elif previousWager == 'loss':
if rollDice():
wager = previousWagerAmount * multiple
if (value - wager) <= 0:
wager = value
value += wager
wager = initial_wager
previousWager = 'win'
wX.append(currentWager)
vY.append(value)
else:
wager = previousWagerAmount * multiple
if (value - wager) <= 0:
wager = value
value -= wager
previousWager = 'loss'
previousWagerAmount = wager
wX.append(currentWager)
vY.append(value)
if value <= 0:
multiple_busts += 1
break
currentWager += 1
#print 'ending Value:',value
ROI += value
#plt.plot(wX,vY)
if value > funds:
multiple_profits+=1
daSampSize = 100000
da_busts = 0.0
da_profits = 0.0
ROI = 0
counter = 1
while counter <= daSampSize:
#multiple_bettor2(startingFunds,wagerSize,wagerCount,2)
dAlembert(startingFunds,wagerSize,wagerCount)
counter += 1
print 'Total Amount Invested:', daSampSize * startingFunds
print 'Total Return:',ROI
print 'Difference:',ROI-(daSampSize * startingFunds)
print 'Bust Rate:',(da_busts/daSampSize)*100.00
print 'Profit Rate:',(da_profits/daSampSize)*100.00