Jump to content

We have moved to Discord. Please click here to join us in the Trading Terminal Discord server.



These forums are read-only.

PilotFish

Program that calculates equity growth based on win loss percentage and win/loss risk multipliers

Recommended Posts

PilotFish

After talking to another community member here in our newbie trader discord chat room,  we started discussing what our accounts would look like after x number of years performing with different win percentages and risk.

For instance, the code below shows an account size of 5000 dollars, risking 1%, with 50% win/lose days with win days making you 2R, and your losing days losing you -1R over a period of 1 year. Obviously you can get much more creative with the inputs to get more interesting results, but this was a fun little program to write to show the possibilities of future income over a period of time.

To run this program you just need to download Python at https://www.python.org/

Once you launch Python IDLE go to File - > New File and paste the code below. Save it and then go to Run -> Run Module

Have fun changing your account size, risk, year, etc..Let me know if you see anything wrong with the code too, I'm pretty tired and this could totally be wrong. LoL

And if you're really interested in running this program but are having trouble just message me and I'll help you out!

 

from decimal import Decimal
import math
from random import randint


account = 5000 #Set your account size
account_start = account

risk = Decimal('0.01') #Set your risk percentage of account
x=1
y=1
z=1
year=1 #Set how many years traded
days_traded = year * 250 #Set 250 to a different value if you want a different number of trading days per year
winning_days= math.floor(days_traded*Decimal('.5')) #Set decimal for the amount of win days per year (make sure winning days/losing days add up to 1)
losing_days = math.floor(days_traded*Decimal('.5')) #Set decimal for amount of losing days per year (make sure winning_days/losing_days decimals add up to 1)
risk_multiplier = Decimal('2.0') #Set the multiplier for your winning days. ie: 2.0 = profited: 2.0R for day
risk_demultiplier = Decimal('1.0') #Set the multiplier for your losing days. ie: 1.0 =  loss: -1.0R for day
win_day_bucket = winning_days
lose_day_bucket = losing_days

track_wins=0
track_loses=0


print("tabulating...")

while x <= days_traded:
    
    print("day traded : " + str(x))
    win_or_loss = randint(1,2)

    if win_or_loss==1:
        if win_day_bucket > 0:
            profit = round(risk_multiplier*(account * risk),2)
            account = round(account + profit,2)
            print("winning day: " + " profit = " + str(profit) + ", account = " + str(account))
            win_day_bucket = win_day_bucket - 1
            track_wins+=1
        elif lose_day_bucket > 0: #I have no more win days, make it a lose day!
                profit = round(risk_demultiplier*(account * risk),2)
                account = round(account - profit,2)
                print("losing day: " + " losses = " + str(profit) + ", account = " + str(account))
                lose_day_bucket = lose_day_bucket - 1
                track_loses+=1
  

    if win_or_loss==2:
        if lose_day_bucket > 0:
            profit = round(risk_demultiplier*(account * risk),2)
            account = round(account - profit,2)
            print("losing day: " + " losses = " + str(profit) + ", account = " + str(account))
            lose_day_bucket = lose_day_bucket - 1
            track_loses+=1
        elif win_day_bucket > 0: #I have no more lose days, make it a win day!
            profit = round(risk_multiplier*(account * risk),2)
            account = round(account + profit,2)
            print("winning day: " + " profit = " + str(profit) + ", account = " + str(account))
            win_day_bucket = win_day_bucket - 1
            track_wins+=1
            
    x+=1

print("*****************************************************")
print("You traded for " + str(year) + " year(s)" + "(" + str(x-1) + " days)")
print("Your account balance started at " + str(account_start) + " dollars")
print("You risked " + str(risk*100) + "% of your account daily")
print("You had " + str(track_wins) + "(" + str(track_wins/days_traded*100)+ "%" + ")" + " win days!")
print("You had " + str(track_loses) + "(" + str(track_loses/days_traded*100) + "%" + ")" + " lose days =[")
print("Your win days made you " + str(risk_multiplier) + "R " + "and your lose days lost you -" + str(risk_demultiplier) + "R")
print("Your account is now valued at a whopping " + str(account) + " dollars!")


    

 

 

After running Run -> Run Module you get this output:

 

tabulating...
day traded : 1
losing day:  losses = 50.00, account = 4950.00
day traded : 2
winning day:  profit = 99.00, account = 5049.00
day traded : 3
winning day:  profit = 100.98, account = 5149.98
day traded : 4
winning day:  profit = 103.00, account = 5252.98
day traded : 5
losing day:  losses = 52.53, account = 5200.45
day traded : 6
winning day:  profit = 104.01, account = 5304.46
day traded : 7
losing day:  losses = 53.04, account = 5251.42
day traded : 8
losing day:  losses = 52.51, account = 5198.91
day traded : 9
losing day:  losses = 51.99, account = 5146.92
day traded : 10
winning day:  profit = 102.94, account = 5249.86
day traded : 11
losing day:  losses = 52.50, account = 5197.36
day traded : 12
winning day:  profit = 103.95, account = 5301.31
day traded : 13
losing day:  losses = 53.01, account = 5248.30
day traded : 14
losing day:  losses = 52.48, account = 5195.82
day traded : 15
winning day:  profit = 103.92, account = 5299.74
day traded : 16
winning day:  profit = 105.99, account = 5405.73
day traded : 17
winning day:  profit = 108.11, account = 5513.84
day traded : 18
winning day:  profit = 110.28, account = 5624.12
day traded : 19
losing day:  losses = 56.24, account = 5567.88
day traded : 20
winning day:  profit = 111.36, account = 5679.24
day traded : 21
winning day:  profit = 113.58, account = 5792.82
day traded : 22
winning day:  profit = 115.86, account = 5908.68
day traded : 23
winning day:  profit = 118.17, account = 6026.85
day traded : 24
winning day:  profit = 120.54, account = 6147.39
day traded : 25
winning day:  profit = 122.95, account = 6270.34
day traded : 26
winning day:  profit = 125.41, account = 6395.75
day traded : 27
losing day:  losses = 63.96, account = 6331.79
day traded : 28
losing day:  losses = 63.32, account = 6268.47
day traded : 29
losing day:  losses = 62.68, account = 6205.79
day traded : 30
winning day:  profit = 124.12, account = 6329.91
day traded : 31
losing day:  losses = 63.30, account = 6266.61
day traded : 32
losing day:  losses = 62.67, account = 6203.94
day traded : 33
winning day:  profit = 124.08, account = 6328.02
day traded : 34
losing day:  losses = 63.28, account = 6264.74
day traded : 35
losing day:  losses = 62.65, account = 6202.09
day traded : 36
winning day:  profit = 124.04, account = 6326.13
day traded : 37
losing day:  losses = 63.26, account = 6262.87
day traded : 38
losing day:  losses = 62.63, account = 6200.24
day traded : 39
losing day:  losses = 62.00, account = 6138.24
day traded : 40
losing day:  losses = 61.38, account = 6076.86
day traded : 41
losing day:  losses = 60.77, account = 6016.09
day traded : 42
losing day:  losses = 60.16, account = 5955.93
day traded : 43
losing day:  losses = 59.56, account = 5896.37
day traded : 44
losing day:  losses = 58.96, account = 5837.41
day traded : 45
winning day:  profit = 116.75, account = 5954.16
day traded : 46
losing day:  losses = 59.54, account = 5894.62
day traded : 47
losing day:  losses = 58.95, account = 5835.67
day traded : 48
losing day:  losses = 58.36, account = 5777.31
day traded : 49
winning day:  profit = 115.55, account = 5892.86
day traded : 50
winning day:  profit = 117.86, account = 6010.72
day traded : 51
winning day:  profit = 120.21, account = 6130.93
day traded : 52
losing day:  losses = 61.31, account = 6069.62
day traded : 53
losing day:  losses = 60.70, account = 6008.92
day traded : 54
losing day:  losses = 60.09, account = 5948.83
day traded : 55
winning day:  profit = 118.98, account = 6067.81
day traded : 56
losing day:  losses = 60.68, account = 6007.13
day traded : 57
losing day:  losses = 60.07, account = 5947.06
day traded : 58
winning day:  profit = 118.94, account = 6066.00
day traded : 59
winning day:  profit = 121.32, account = 6187.32
day traded : 60
losing day:  losses = 61.87, account = 6125.45
day traded : 61
losing day:  losses = 61.25, account = 6064.20
day traded : 62
winning day:  profit = 121.28, account = 6185.48
day traded : 63
losing day:  losses = 61.85, account = 6123.63
day traded : 64
winning day:  profit = 122.47, account = 6246.10
day traded : 65
winning day:  profit = 124.92, account = 6371.02
day traded : 66
losing day:  losses = 63.71, account = 6307.31
day traded : 67
winning day:  profit = 126.15, account = 6433.46
day traded : 68
winning day:  profit = 128.67, account = 6562.13
day traded : 69
winning day:  profit = 131.24, account = 6693.37
day traded : 70
losing day:  losses = 66.93, account = 6626.44
day traded : 71
losing day:  losses = 66.26, account = 6560.18
day traded : 72
losing day:  losses = 65.60, account = 6494.58
day traded : 73
winning day:  profit = 129.89, account = 6624.47
day traded : 74
winning day:  profit = 132.49, account = 6756.96
day traded : 75
winning day:  profit = 135.14, account = 6892.10
day traded : 76
winning day:  profit = 137.84, account = 7029.94
day traded : 77
winning day:  profit = 140.60, account = 7170.54
day traded : 78
winning day:  profit = 143.41, account = 7313.95
day traded : 79
losing day:  losses = 73.14, account = 7240.81
day traded : 80
winning day:  profit = 144.82, account = 7385.63
day traded : 81
losing day:  losses = 73.86, account = 7311.77
day traded : 82
winning day:  profit = 146.24, account = 7458.01
day traded : 83
winning day:  profit = 149.16, account = 7607.17
day traded : 84
losing day:  losses = 76.07, account = 7531.10
day traded : 85
losing day:  losses = 75.31, account = 7455.79
day traded : 86
losing day:  losses = 74.56, account = 7381.23
day traded : 87
losing day:  losses = 73.81, account = 7307.42
day traded : 88
winning day:  profit = 146.15, account = 7453.57
day traded : 89
winning day:  profit = 149.07, account = 7602.64
day traded : 90
winning day:  profit = 152.05, account = 7754.69
day traded : 91
winning day:  profit = 155.09, account = 7909.78
day traded : 92
winning day:  profit = 158.20, account = 8067.98
day traded : 93
losing day:  losses = 80.68, account = 7987.30
day traded : 94
losing day:  losses = 79.87, account = 7907.43
day traded : 95
winning day:  profit = 158.15, account = 8065.58
day traded : 96
winning day:  profit = 161.31, account = 8226.89
day traded : 97
losing day:  losses = 82.27, account = 8144.62
day traded : 98
losing day:  losses = 81.45, account = 8063.17
day traded : 99
losing day:  losses = 80.63, account = 7982.54
day traded : 100
losing day:  losses = 79.83, account = 7902.71
day traded : 101
losing day:  losses = 79.03, account = 7823.68
day traded : 102
losing day:  losses = 78.24, account = 7745.44
day traded : 103
losing day:  losses = 77.45, account = 7667.99
day traded : 104
losing day:  losses = 76.68, account = 7591.31
day traded : 105
winning day:  profit = 151.83, account = 7743.14
day traded : 106
losing day:  losses = 77.43, account = 7665.71
day traded : 107
winning day:  profit = 153.31, account = 7819.02
day traded : 108
losing day:  losses = 78.19, account = 7740.83
day traded : 109
losing day:  losses = 77.41, account = 7663.42
day traded : 110
losing day:  losses = 76.63, account = 7586.79
day traded : 111
winning day:  profit = 151.74, account = 7738.53
day traded : 112
winning day:  profit = 154.77, account = 7893.30
day traded : 113
losing day:  losses = 78.93, account = 7814.37
day traded : 114
winning day:  profit = 156.29, account = 7970.66
day traded : 115
winning day:  profit = 159.41, account = 8130.07
day traded : 116
winning day:  profit = 162.60, account = 8292.67
day traded : 117
losing day:  losses = 82.93, account = 8209.74
day traded : 118
winning day:  profit = 164.19, account = 8373.93
day traded : 119
losing day:  losses = 83.74, account = 8290.19
day traded : 120
losing day:  losses = 82.90, account = 8207.29
day traded : 121
losing day:  losses = 82.07, account = 8125.22
day traded : 122
winning day:  profit = 162.50, account = 8287.72
day traded : 123
losing day:  losses = 82.88, account = 8204.84
day traded : 124
winning day:  profit = 164.10, account = 8368.94
day traded : 125
losing day:  losses = 83.69, account = 8285.25
day traded : 126
winning day:  profit = 165.70, account = 8450.95
day traded : 127
winning day:  profit = 169.02, account = 8619.97
day traded : 128
winning day:  profit = 172.40, account = 8792.37
day traded : 129
winning day:  profit = 175.85, account = 8968.22
day traded : 130
winning day:  profit = 179.36, account = 9147.58
day traded : 131
winning day:  profit = 182.95, account = 9330.53
day traded : 132
winning day:  profit = 186.61, account = 9517.14
day traded : 133
winning day:  profit = 190.34, account = 9707.48
day traded : 134
winning day:  profit = 194.15, account = 9901.63
day traded : 135
losing day:  losses = 99.02, account = 9802.61
day traded : 136
losing day:  losses = 98.03, account = 9704.58
day traded : 137
losing day:  losses = 97.05, account = 9607.53
day traded : 138
winning day:  profit = 192.15, account = 9799.68
day traded : 139
losing day:  losses = 98.00, account = 9701.68
day traded : 140
losing day:  losses = 97.02, account = 9604.66
day traded : 141
winning day:  profit = 192.09, account = 9796.75
day traded : 142
losing day:  losses = 97.97, account = 9698.78
day traded : 143
losing day:  losses = 96.99, account = 9601.79
day traded : 144
winning day:  profit = 192.04, account = 9793.83
day traded : 145
losing day:  losses = 97.94, account = 9695.89
day traded : 146
losing day:  losses = 96.96, account = 9598.93
day traded : 147
losing day:  losses = 95.99, account = 9502.94
day traded : 148
winning day:  profit = 190.06, account = 9693.00
day traded : 149
winning day:  profit = 193.86, account = 9886.86
day traded : 150
losing day:  losses = 98.87, account = 9787.99
day traded : 151
losing day:  losses = 97.88, account = 9690.11
day traded : 152
losing day:  losses = 96.90, account = 9593.21
day traded : 153
winning day:  profit = 191.86, account = 9785.07
day traded : 154
losing day:  losses = 97.85, account = 9687.22
day traded : 155
winning day:  profit = 193.74, account = 9880.96
day traded : 156
losing day:  losses = 98.81, account = 9782.15
day traded : 157
losing day:  losses = 97.82, account = 9684.33
day traded : 158
losing day:  losses = 96.84, account = 9587.49
day traded : 159
losing day:  losses = 95.87, account = 9491.62
day traded : 160
losing day:  losses = 94.92, account = 9396.70
day traded : 161
losing day:  losses = 93.97, account = 9302.73
day traded : 162
winning day:  profit = 186.05, account = 9488.78
day traded : 163
losing day:  losses = 94.89, account = 9393.89
day traded : 164
winning day:  profit = 187.88, account = 9581.77
day traded : 165
winning day:  profit = 191.64, account = 9773.41
day traded : 166
losing day:  losses = 97.73, account = 9675.68
day traded : 167
losing day:  losses = 96.76, account = 9578.92
day traded : 168
losing day:  losses = 95.79, account = 9483.13
day traded : 169
winning day:  profit = 189.66, account = 9672.79
day traded : 170
losing day:  losses = 96.73, account = 9576.06
day traded : 171
losing day:  losses = 95.76, account = 9480.30
day traded : 172
winning day:  profit = 189.61, account = 9669.91
day traded : 173
losing day:  losses = 96.70, account = 9573.21
day traded : 174
winning day:  profit = 191.46, account = 9764.67
day traded : 175
losing day:  losses = 97.65, account = 9667.02
day traded : 176
winning day:  profit = 193.34, account = 9860.36
day traded : 177
losing day:  losses = 98.60, account = 9761.76
day traded : 178
winning day:  profit = 195.24, account = 9957.00
day traded : 179
losing day:  losses = 99.57, account = 9857.43
day traded : 180
losing day:  losses = 98.57, account = 9758.86
day traded : 181
losing day:  losses = 97.59, account = 9661.27
day traded : 182
winning day:  profit = 193.23, account = 9854.50
day traded : 183
losing day:  losses = 98.54, account = 9755.96
day traded : 184
winning day:  profit = 195.12, account = 9951.08
day traded : 185
losing day:  losses = 99.51, account = 9851.57
day traded : 186
winning day:  profit = 197.03, account = 10048.60
day traded : 187
losing day:  losses = 100.49, account = 9948.11
day traded : 188
winning day:  profit = 198.96, account = 10147.07
day traded : 189
losing day:  losses = 101.47, account = 10045.60
day traded : 190
losing day:  losses = 100.46, account = 9945.14
day traded : 191
losing day:  losses = 99.45, account = 9845.69
day traded : 192
losing day:  losses = 98.46, account = 9747.23
day traded : 193
losing day:  losses = 97.47, account = 9649.76
day traded : 194
winning day:  profit = 193.00, account = 9842.76
day traded : 195
winning day:  profit = 196.86, account = 10039.62
day traded : 196
losing day:  losses = 100.40, account = 9939.22
day traded : 197
losing day:  losses = 99.39, account = 9839.83
day traded : 198
winning day:  profit = 196.80, account = 10036.63
day traded : 199
winning day:  profit = 200.73, account = 10237.36
day traded : 200
losing day:  losses = 102.37, account = 10134.99
day traded : 201
losing day:  losses = 101.35, account = 10033.64
day traded : 202
winning day:  profit = 200.67, account = 10234.31
day traded : 203
winning day:  profit = 204.69, account = 10439.00
day traded : 204
losing day:  losses = 104.39, account = 10334.61
day traded : 205
losing day:  losses = 103.35, account = 10231.26
day traded : 206
winning day:  profit = 204.63, account = 10435.89
day traded : 207
losing day:  losses = 104.36, account = 10331.53
day traded : 208
winning day:  profit = 206.63, account = 10538.16
day traded : 209
losing day:  losses = 105.38, account = 10432.78
day traded : 210
losing day:  losses = 104.33, account = 10328.45
day traded : 211
losing day:  losses = 103.28, account = 10225.17
day traded : 212
losing day:  losses = 102.25, account = 10122.92
day traded : 213
winning day:  profit = 202.46, account = 10325.38
day traded : 214
losing day:  losses = 103.25, account = 10222.13
day traded : 215
losing day:  losses = 102.22, account = 10119.91
day traded : 216
losing day:  losses = 101.20, account = 10018.71
day traded : 217
winning day:  profit = 200.37, account = 10219.08
day traded : 218
winning day:  profit = 204.38, account = 10423.46
day traded : 219
winning day:  profit = 208.47, account = 10631.93
day traded : 220
winning day:  profit = 212.64, account = 10844.57
day traded : 221
losing day:  losses = 108.45, account = 10736.12
day traded : 222
losing day:  losses = 107.36, account = 10628.76
day traded : 223
winning day:  profit = 212.58, account = 10841.34
day traded : 224
winning day:  profit = 216.83, account = 11058.17
day traded : 225
winning day:  profit = 221.16, account = 11279.33
day traded : 226
losing day:  losses = 112.79, account = 11166.54
day traded : 227
losing day:  losses = 111.67, account = 11054.87
day traded : 228
winning day:  profit = 221.10, account = 11275.97
day traded : 229
losing day:  losses = 112.76, account = 11163.21
day traded : 230
winning day:  profit = 223.26, account = 11386.47
day traded : 231
winning day:  profit = 227.73, account = 11614.20
day traded : 232
winning day:  profit = 232.28, account = 11846.48
day traded : 233
winning day:  profit = 236.93, account = 12083.41
day traded : 234
winning day:  profit = 241.67, account = 12325.08
day traded : 235
winning day:  profit = 246.50, account = 12571.58
day traded : 236
winning day:  profit = 251.43, account = 12823.01
day traded : 237
winning day:  profit = 256.46, account = 13079.47
day traded : 238
winning day:  profit = 261.59, account = 13341.06
day traded : 239
winning day:  profit = 266.82, account = 13607.88
day traded : 240
winning day:  profit = 272.16, account = 13880.04
day traded : 241
winning day:  profit = 277.60, account = 14157.64
day traded : 242
winning day:  profit = 283.15, account = 14440.79
day traded : 243
winning day:  profit = 288.82, account = 14729.61
day traded : 244
winning day:  profit = 294.59, account = 15024.20
day traded : 245
winning day:  profit = 300.48, account = 15324.68
day traded : 246
winning day:  profit = 306.49, account = 15631.17
day traded : 247
winning day:  profit = 312.62, account = 15943.79
day traded : 248
winning day:  profit = 318.88, account = 16262.67
day traded : 249
winning day:  profit = 325.25, account = 16587.92
day traded : 250
winning day:  profit = 331.76, account = 16919.68
*****************************************************
You traded for 1 years(250 days)
Your account balance started at 5000 dollars
You risked 1.00% of your account daily
You had 125(50.0%) win days!
You had 125(50.0%) lose days =[
Your win days made you 2R and your lose days lost you -1R
Your account is now valued at a whopping 16919.68 dollars!

 

Edited by PilotFish

Share this post


Link to post
Share on other sites

[[Template core/front/global/mobileNavigation is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.