49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""
 | 
						||
This code is supported by the website: https://www.guanjihuan.com
 | 
						||
The newest version of this code is on the web page: https://www.guanjihuan.com/archives/43508
 | 
						||
"""
 | 
						||
 | 
						||
import numpy as np
 | 
						||
import matplotlib.pyplot as plt
 | 
						||
 | 
						||
investment_ratio_array = np.arange(0.1, 1.1, 0.1)
 | 
						||
investment_times = 1000
 | 
						||
test_times = 100
 | 
						||
 | 
						||
# 几个例子:https://www.guanjihuan.com/archives/43412
 | 
						||
 | 
						||
# 例子(2)的参数
 | 
						||
p = 0.6 # 胜率
 | 
						||
b = 1 # 收益
 | 
						||
a = 1 # 损失
 | 
						||
 | 
						||
# # 例子(3)的参数
 | 
						||
# p = 0.5
 | 
						||
# b = 1
 | 
						||
# a = 0.5
 | 
						||
 | 
						||
win_array = [] # 胜出的仓位
 | 
						||
for i0 in range(test_times):
 | 
						||
    # print(i0)
 | 
						||
    capital_array = []
 | 
						||
    for f in investment_ratio_array:
 | 
						||
        capital = 1
 | 
						||
        for _ in range(investment_times):
 | 
						||
            investment = capital*f
 | 
						||
            if investment>0:
 | 
						||
                random_value = np.random.uniform(0, 1)
 | 
						||
                if random_value<p:
 | 
						||
                    capital = capital+investment*b
 | 
						||
                else:
 | 
						||
                    capital = capital-investment*a
 | 
						||
        capital_array.append(capital)
 | 
						||
    max_capital_index = capital_array.index(max(capital_array))
 | 
						||
    win_array.append(investment_ratio_array[max_capital_index])
 | 
						||
 | 
						||
def kelly_formula(p, b, a):
 | 
						||
    f=(p/a)-((1-p)/b)
 | 
						||
    return f
 | 
						||
 | 
						||
print(kelly_formula(p=p, b=b, a=a))
 | 
						||
plt.hist(win_array, bins=100, color='skyblue')
 | 
						||
plt.show() |