うーん

資金管理の実装をやっていて、日々の基準価格によって、保持しているポジションの評価損益を毎日出そうとしている。

あまりにも疎結合すぎて、シグナルを発生させるところで持っている個々の銘柄の基準価格が、資金管理でうまいこと流用できないことが発覚w うーん、資金管理に個々の銘柄のインスタンスへの参照を持たせるか・・・ なんとなく、イヤな感じするんだよな。一番手っ取り早いのは、資金管理で基準価格必要になったらクエリ一発発射することだけど、そうなるとDBアクセスが今と比べて超絶遅くなるような気がしてならない。今は発射するクエリの数をなるべく少なくして、一回クエリ発射したら結果セットがほとんどメモリに入るようにしている。この、キャッシュが細切れのクエリばしばし入れたら押し出されるんじゃないかと・・・ うーん、うーん;;

・・・結局銘柄毎のトレードを管理するインスタンスへの参照を持たせる事に。ま、しょうがない。

あと、「リスク対策費の範囲内でポジションを増やす」という構想で作ろうとして出来かかっていたんだけど、そもそもオプティマルfは、リスクをどこまでとるかを包含して「最大とれるポジションはこれだけ」という事を決めるシステムなので、最初のアイディアは、あんま意味ないということに(´・ω・`)

・・・やっぱりそれはそれで意味ありそうだw オプティマルfで求められる最大とれるポジションの大きさから、今持っているポジションの大きさを控除したものが、今後新規建てできる大きさで、そこで「コレは予算の範囲内で仕掛けられるか?」という判断ができる。うむ。

とりあえず、許容する最大損失額は固定比率で現金(拘束されている保証金を含む)資産に対して何パーセントか決めて、その時点で実際の金額はいくらなのか、評価額を考慮して算出。それを許容できる最大損失としてオプティマルfで除算すると、建玉可能額が求められる。

どんな仕掛のルールにしろ、資金管理では下の2点をチェックする必要がある。

  • 適用する損切りルール*1で求める損失額が、許容できる最大損失額の範囲内に収まるか? 
  • 最小単位が建玉可能額の範囲内か?

例えば基準価格から5%の下落で損切りのとき、最小単位の金額が100万なら5万だけど、20万なら1万だ。今の資産額が500万で、許容する損失を3%にするなら15万まで許容できる。このときf値が0.3だとしたら最大の建玉可能額は15/0.3=50万円になる。
100万のやつは建玉可能額にひっかかるので仕掛けられない。20万のやつならイケる。50万の範囲内なら2枚。これで、次に仕掛の判定をするときは、残余の最大損失額と残余の建玉可能額で買えるかどうかを判断する。残余の最大損失額は15−(1×2)=13万*2、残余の建玉可能額は50−40=10万になる。

うし、わかってきた! 
・・・ま、入門レベルの人が「わかった!」って言う時は、大概大事な概念の表層しか捉えてない事が多いですが(´・ω・`)

ん、あれ? f値が高すぎるととるリスクが高くなりすぎるって説明があったけど、上の感じだとf値が高くなるほど、とれるポジションの大きさが小さくなるから、リスクが小さくなるじゃないか。どっかで考え方が間違っている模様www bkwwwwww
orz

・・・本を読み直した結果、最大損失/f値で求まるのは「1単位のポジションを取るのに必要な単位数」ということが判明。上の例を訂正すると、最大の建玉可能額は15/0.3=50万。50万で1万とってよしなので、500万あるなら10万までポジションをとってよし、ということになる。もしシステムの信頼性が高くて、f値を高く取れた場合・・・ 例えば0.8だったら、15/0.8=18.75。500/18.75=26.7なので、26.7万円まで建玉可能ということに。ふむ。

しかしサイズが小さい。これを大きくとるには・・・ 許容できる最大損失を小さくすればいいのかな。3%をやめて1%にすると5万だから5/0.3=16.7。500/16.7=29.9万。f=0.8だと5/0.8=6.25。500/6.25=80万。ふむ。信頼性の高いシステムなら大きいポジションをとれるし、許容損失を小さく抑えられるなら、より大きなポジションをとってもいい、ということか。これなら直感的にヘンな感じはしない。

*1:基準価格に対する固定比率で求める方法もあるし、ボラティリティに応じて可変の場合もあるけど、最小単位で買った時の金額ベースで評価

*2:ここは残余を使わないで、15万を使ったほうがいいんじゃないか? という気もします