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() |