プロフィットファクターと勝率


プロフィットファクターと勝率

プロフィットファクターと勝率の関係を考えてみる。


環境


  • Jupyter Notebook 5.7.4


プロフィットファクターを勝率に変換

プロフィットファクターは便利な指標だと思う。勝率はペイオフレシオの影響を受けるので「勝率が高い=パフォーマンスが高い」とは一概に言えない。その点、プロフィットファクターはペイオフレシオを1.0で固定した場合の勝率に変換できる(よね?)。

例えば、プロフィットファクターが2.0の場合、利益が2に対して損失が1であるから、ペイオフレシオが1.0であるとすると、勝率は2勝1敗で66.67%に変換できる。

def convert_pf2wp(pf):

wp = pf / (pf+1.0) * 100.0
return wp

pf = 2.0
wp = convert_pf2wp(pf)
print('pf = '+str(pf))
print('wp = '+str(round(wp, 2))+'%')

pf = 2.0

wp = 66.67%

プロフィットファクターと勝率の関係を表にするとこんな感じ。

import numpy as np

import pandas as pd

def convert_pf2wp(pf):
wp = pf / (pf+1.0) * 100.0
return wp

n = 30
pf_and_wp = pd.DataFrame(np.zeros([n, 2]), columns=['PF', 'WP'])

for i in range(30):
pf = 0.1 + i * 0.1
wp = convert_pf2wp(pf)
pf_and_wp.iloc[i, 0] = pf
pf_and_wp.iloc[i, 1] = np.round(wp, 2)
print(pf_and_wp)

     PF     WP

0 0.1 9.09
1 0.2 16.67
2 0.3 23.08
3 0.4 28.57
4 0.5 33.33
5 0.6 37.50
6 0.7 41.18
7 0.8 44.44
8 0.9 47.37
9 1.0 50.00
10 1.1 52.38
11 1.2 54.55
12 1.3 56.52
13 1.4 58.33
14 1.5 60.00
15 1.6 61.54
16 1.7 62.96
17 1.8 64.29
18 1.9 65.52
19 2.0 66.67
20 2.1 67.74
21 2.2 68.75
22 2.3 69.70
23 2.4 70.59
24 2.5 71.43
25 2.6 72.22
26 2.7 72.97
27 2.8 73.68
28 2.9 74.36
29 3.0 75.00