勝率とレシオの関係(±0に必要な勝率とレシオ)

1. リスクリワードレシオの基本

リスクリワードレシオ(以下、レシオ)とは 平均利益 ÷ 平均損失 で求められる数字です。例えば平均利益100pipsで平均損失100pipsのシステムであればレシオは1.0となります。

同様に平均利益200pipsで平均損失100pipsのシステムであればレシオは2.0となります。つまりレシオの数値が大きいと損小利大のシステム(手法)であり、レシオの数値が小さいと損大利小のシステム(手法)であるといえます。

2. ±0に必要な勝率を求める

±0に必要な勝率は以下の計算式で求めることが出来ます:

±0に必要な勝率 = 1 ÷ (1 + レシオ)

例えば、レシオが0.5の場合:

±0に必要な勝率 = 1 ÷ (1 + 0.5) ≒ 67%

以下に±0に必要な勝率の一覧を示します:

リスクリワードレシオ ±0に必要な勝率
2.0 33%
1.0 50%
0.5 67%

3. ±0に必要なレシオを求める

±0に必要なレシオは以下の計算式で求めることができます:

±0に必要なレシオ = (1 – 勝率) ÷ 勝率

例えば、勝率が60%の場合:

±0に必要なレシオ = (1 – 60%) ÷ 60% ≒ 0.7

以下に±0に必要なレシオの一覧を示します:

勝率 ±0に必要なリスクリワードレシオ
30% 2.3
40% 1.5
50% 1.0
60% 0.7
70% 0.4

4. レシオと勝率のどちらを軸にするべきか

システムの優位性あるいは、手法の優位性を検証する際にレシオと勝率のどちらを軸にするべきかという問題が発生します。

私は勝率を軸にして確認した方が良いと思います。理由は以下の2つです:

  • 勝率は取引回数が増えれば収束するから
  • 相場のボラティリティーは日々変化しているから

1つ目の理由は、勝率は取引回数が増えれば増えるほど収束していきますので基準にしやすいという点です。大ざっぱに確認する場合でも取引回数が1000回程度あれば勝率はあらかた収束したと想定する事ができます。

2つ目の理由は、相場のボラティリティーは日々変化している為、一律に損切りを100pips、利確を100pipsと固定しても結局は±0の理論確率を超えることはできないと思うからです。相場のボラティリティーに合わせて損切りや利確の値幅を変化させる必要があります。

以上の2点の理由から私は勝率を軸にして±0に必要となるレシオを確認した方が良いと判断しています。

5. まとめ

レシオと勝率どちらを軸にするにしても、利益を出すには『レシオに対する±0に必要な勝率』あるいは『勝率に対する±0に必要なレシオ』を超えなければいけません。

ランダムトレードでは期待値はスプレッド分のマイナスに収束しますので、利益を出すにはランダムトレードでは出来ない何かをする必要があります。それは待つ事です。

  • 統計的優位性のあるエントリーポイントまで待つ
  • 統計的優位性のあるクローズポイント(決済)まで待つ

結局のところ、この2つが利益を出す為の全てです。統計的優位性があるかどうかはシステムあるいは手法を検証する際、取引回数が1000回以上あり勝率に対する±0に必要なレシオを超えていれば優位性があると判断する事が出来るでしょう。

EA名 取引回数 勝率 レシオ ±0レシオ 差異
リバ取り君 1432回 67% 0.7 0.5 +0.2 (133%)
伸ばす君 2556回 28% 3.2 2.6 +0.7 (125%)

※Lot0.1で2005.2.1~2015.2.1をバックテストした結果
リバ取り君の勝率67%で±0に必要なレシオは0.5です。バックテストの結果0.7という数値を出していますので、エントリーとクローズポイントに優位性があると判断できます。
同様に伸ばす君の勝率28%で±0に必要なレシオは2.6です。バックテストの結果3.2という数値を出していますのでこちらも優位性があると判断できます。

evernote

bashデバック

参照:http://shellscript.sunone.me/debug.html

JSP*タグリファレンス

http://tag.main.jp/index.html

システムモニタリングコマンド一覧

Linux
常識的なものからマイナーなものまで、Linuxでマシンの状態を調べるコマンドの一覧。
sar 一定間隔でCPU、コンテキストスイッチ、割り込み、ページング、デバイス、メモリ、スワップ、ネットワークなどあらゆる情報を表示
vmstat 一定間隔でプロセス、メモリ、スワップ、ディスクI/O、システム(割り込み、コンテキストスイッチ)、CPUの情報を表示
mpstat 一定間隔でCPUの詳細情報を表示
iostat 一定間隔で各種デバイス・ディスクの詳細なI/Oを表示
uptime 稼働時間、ユーザ数、ロードアベレージの表示
free メモリの使用状況表示
procinfo メモリ、CPU時間、ページ、スワップ、ディスク、割りこみ数などの統計を表示
/proc/* 任意のタイミングや間隔で任意の情報を取得したい場合は、無理にコマンドを組み合わせるより直接/proc以下の情報を取得するスクリプトを書く方が楽。
/proc/stat CPU時間の合計値など
/proc/loadavg ロードアベレージ
/proc/meminfo メモリの状態
/proc/diskstats ディスクI/Oの合計値
/proc/net/dev ネットワーク送受信の合計値
top 稼働時間、ユーザ数、ロードアベレージ、CPU、メモリの情報とプロセス毎の情報を継続的に表示
iotop システム全体のディスクI/Oとプロセス毎の詳細なディスクI/Oを継続的に表示
nethogs プロセス毎のネットワークI/Oの統計を継続的に表示
lsof 個々のプロセスが掴んでいるファイル・デバイス・ポートを表示
pmap プロセスが掴んでいるファイルとその詳細なメモリマップを表示
fuser ファイルやポート、ファイルシステムを利用しているプロセスやユーザの表示
ps aux プロセスを一覧表示
pstree プロセスをツリー表示

ディスク/ファイル

df 各ファイルシステムの容量やiノードの使用状況を表示
du ファイル・ディレクトリの使用状況を表示
stat ファイルの各種情報を任意のフォーマットで表示

ネットワーク

netstat ネットワークコネクションの情報を表示
nmap 開いているポートの調査
ifstat 一定間隔でデバイス毎のネットワークI/Oを表示
iftop 接続先毎のネットワークI/Oを継続的に表示

アプリケーション依存

smbstatus Sambaの利用状況表示
showmount NFSのマウント状況の表示
ftpwho FTPにアクセスしているユーザの表示
ftpcount FTPにアクセスしているユーザ数の表示
hostname カーネルの情報
uname -a カーネルの情報
lsmod ロードされているモジュールの情報
ifconfig 各ネットワークインターフェースのIPアドレス・MACアドレス・MTU等の表示
who 接続しているユーザの表示
id ユーザのUID,GID,グループなどの表示
ac ユーザの接続時間を表示する
   ネットワーク設定(vi /etc/sysconfig/network-scripts/ifcfg-eth0)

ハードウェア

lspci PCIデバイスの一覧を表示
lsusb USBデバイスの一覧を表示
lsscsi SCSIデバイスの一覧を表示
lshw 全ハードウェアの一覧を表示
ethtool ネットワークインターフェースのデバイス情報を表示
fdisk/sfdisk/cfdisk -l パーティション情報の表示
sensors (lm_sensors) 温度・ファン回転数等
cardctl PCカードの情報

X Window System

xev 入力デバイスからの入力情報の表示
xload 簡単なロードアベレージのGUI表示
glxinfo GLX拡張や、OpenGLレンダラの確認
xdpyinfo ディスプレイの情報表示
fc-list 利用可能なフォントの一覧
xfd フォントの確認
$ xfd -fa ‘VL ゴシック’
rc-update (Gentoo) ランレベル毎のデーモンの設定・確認
update-rc.d (Debian) ランレベル毎のデーモンの設定・確認
chkconfig (RedHat) ランレベル毎のデーモンの設定・確認
ldd 依存しているライブラリの表示
printenv 環境変数の表示
help シェルの組み込みコマンド
ブラウザショートカット
全画面表示 F11
ホームページに移動 Alt+Home
次のページに移動 Alt+→  Shift+Backspace
前のページに移動 Alt+←  Backspace
右のタブに移動 Ctrl+Tab   Ctrl+PageDown
左のタブに移動 Ctrl+Shift+Tab  Ctrl+PageUp
ページの先頭に移動する Home  Ctrl+Home
ページの末尾に移動する End  Ctrl+End
Webページの更新 F5  Ctrl+R
スーパーリロード Ctrl+F5  Ctrl+Shift+R Shift+F5
ページのダウンロードを中止 Esc
プライベート(シークレット)モード Ctrl+Shift+P Ctrl+Shift+N
履歴の消去 Ctrl+Shift+Delete
アドレスバーの文字列選択 Alt+D  Ctrl+L
直前に閉じたタブを開く Ctrl+Shift+T
現在のタブを閉じる Ctrl+W Ctrl+F4
お気に入りを開く Ctrl+I  Ctrl+Shift+B Alt+C
お気に入りの整理 Ctrl+B  Ctrl+Shift+O
履歴を開く Ctrl+H
ダウンロード履歴を開く Ctrl+J
新規ウィンドウ Ctrl+N
新しいタブを開く Ctrl+T
特定のタブを開く Ctrl+数字キー(1~8)
(アドレスバー選択時)新しいタブでウェブアドレスを開く Alt+Enter
タブ複製 Ctrl+K  Alt+D+Enter
一番右のタブに切り替える Ctrl+9
拡大する Ctrl+正符号(+)キー
縮小する Ctrl+負符号(-)キー
元の大きさにする Ctrl+0
検索窓にフォーカス Ctrl+E
検索後、F3で次へ Ctrl+K
お気に入りに追加 Ctrl+D
開発者ツールを開く F12(FireFoxはFirebugを入れてる場合)
Ctrl+Shift+I
ページのコード表示 Ctrl+U
カーソルブラウズ F7
タブとウィンドウのショートカット
新しいウィンドウを開く Ctrl+n
新しいウィンドウをシークレットモードで開く Ctrl+Shift+n
新しいタブを開いてそのタブに移動する Ctrl+t
最後に閉じたタブを開いてそのタブに移動する Ctrl+Shift+t
開いている次のタブに移動する Ctrl+Tab
開いている前のタブに移動する Ctrl+Shift+Tab  Ctrl+PgUp
特定のタブに移動する Ctrl+1~Ctrl+8
最後のタブに移動する Ctrl+9
ホームページを現在のタブで開く Alt+Home
現在のタブの閲覧履歴の中で前にあるページを開く Alt+左矢印
現在のタブの閲覧履歴の中で次にあるページを開く Alt+右矢印
現在のタブを閉じる Ctrl+w  Ctrl+F4
開いているすべてのタブとブラウザを閉じる Ctrl+Shift+w
現在のウィンドウを最小化する Alt+スペース+n
現在のウィンドウを最大化する Alt+スペース+x
GoogleChromeを終了する Ctrl+Shift+q  Alt+F4

便利ツール A5:SQL Mk-2の便利なショートカットをまとめてみた – 思考停止するな

最近SQL・データベースを扱うことが多いのですが、その際に手放すことができないレベルの超便利ツールのSQL実行ツールであるA5:SQL Mk-2というのがあります。 そのA5:SQL Mk-2の便利なショートカットをまとめてみました。 Ctrl + q SQL整形 Ctrl + g 条件を指定してテーブルを開く Ctr…

情報源: 便利ツール A5:SQL Mk-2の便利なショートカットをまとめてみた – 思考停止するな

ダミーデータ作成

https://a5m2.mmatsubara.com/help/TableEditor/dummy.html

Apache JMeter

・基本情報
http://www.techscore.com/tech/Java/ApacheJakarta/JMeter/index/

・統計レポートの見方
https://e-algorithm.xyz/jmeter/#jump4

・apache-jmeter-3.3\bin\jmeter-server.bat
に以下の設定を入れる

:port
call jmeter -Dserver_port=%SERVER_PORT% -s -j jmeter-server.log %JMETER_CMD_LINE_ARGS% 【-Dsun.net.inetaddr.ttl=0 -Dsun.net.inetaddr.negative.ttl=0】

詳細は
https://qiita.com/arai-wa/items/492d91d85a7473007e37

・実行bat sample
set time2=%time: =0%
set PREFIX=%date:~-10,4%%date:~-5,2%%date:~-2,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
cmd /k jmeter.bat -n -t .\FINAL\LJ53.jmx -j .\FINAL\result\%PREFIX%_jmeter.log -l .\FINAL\result\%PREFIX%_result.jtl

詳細は
https://qiita.com/tatesuke/items/827e6190753964e46814

windowsパフォーマンスモニター
http://www.atmarkit.co.jp/ait/articles/0910/30/news114.html

最大連敗数を求める方法

1. N回連続して負ける確率

勝率x%のシステムがN回連続して負ける確率は以下の様に求めることが出来ます。

N回連続して負ける確率 = ( 1 – 勝率x )^N回

例えば、勝率50%のシステムが5回連続して負ける確率を求めると、以下の通りです:

■5連敗する確率 = ( 1 – 50% )^5回 = 3.1%

■10回連敗する確率 = ( 1 – 50% )^10回 = 0.1%

2. 起こりうる最大連敗数

冒頭の計算式を展開して、1%の確率で起こりうる連敗数Nを以下のように求めます。

連敗数N = LOG( 1% , 1 – 勝率x )

例えば、勝率50%のシステムにおいて、1%の確率で起こりうる最大連敗数は以下の通りです:

■連敗数N = LOG( 1% , 1 – 50% ) = 6.6回

この式を用いることで、危険率αの場合に起こりうる連敗数Nを求めることができます。

3. エクセルのLOG関数について

エクセルのLOG関数は、”=LOG(真数, 底)”と入力するとその対数を返します。

  • 例1: LOG₂4 = LOG(4, 2) = 2 (2を2乗すると4になる)
  • 例2: LOG₂256 = LOG(256, 2) = 8 (2を8乗すると256になる)

4. 勝率別に起こりうる最大連敗数一覧

以下の表は、勝率別に起こりうる最大連敗数を危険率1%と0.0001%の2パターンで示しています。

システム勝率 最大連敗数 (α=1%) 最大連敗数 (α=0.0001%)
20% 21 62
25% 16 48
30% 13 39
35% 11 32
40% 9 27
45% 8 23
50% 7 20
55% 6 17
60% 5 15
65% 4 13
70% 4 11
75% 3 10
80% 3 9
85% 2 7
90% 2 6

5. 注意点(勝率の収束)

取引回数が200回未満の場合、勝率はシステム本来の値に収束していない可能性があります。勝率の収束については、“確率の収束と大数の法則”を参照してください。

6. 連敗数を予想してトレードにどう生かすか?

勝率が80%のシステムでも絶望的に運が悪ければ9連敗する可能性があります。この知識を持つことで、連敗が起きても冷静にトレードを継続できます。

待機児童

保育園落ちた、日本死ね → 死ぬべきは既得権益のみなさんだったよ | More Access! More Fun!.

上記のリンクを読み、調べた限り東京23区の保育士の給与が高いというのは見つからなかった。
東京都の調査でも給与が安いのが不満と出ていた。

つまり、雇われてる保育士の給与は安くて、経営している保育士の給与は高いということなのだろうか。
だとしたら、問題の本質は経営者の待遇改善であるが。