Create kelly_formula.py
This commit is contained in:
parent
67d4c9e5a4
commit
d2b76e2cd7
49
2024.11.21_kelly_formula/kelly_formula.py
Normal file
49
2024.11.21_kelly_formula/kelly_formula.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
"""
|
||||||
|
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()
|
Loading…
x
Reference in New Issue
Block a user