注文サイズ関数を使ったルールの実装
quantstrat では、取引される資産の数量は必ずしも実際の株数で固定とは限りません。quantstrat が買い/売りの株数を可変にする仕組みが、注文サイズ関数(order sizing functions) です。適切な注文サイズ関数を一から作成するには多くの追加構文が必要なため、自作はこのコースの範囲外です。
ただし、あらかじめ用意された注文サイズ関数を使うのは簡単です。まず知っておくべき点は、注文サイズ関数を使う場合、数量はその関数で決まるため orderqty 引数は意味を持たなくなることです。add.rule() の呼び出しで注文サイズ関数を指定するのは比較的シンプルです。注文サイズ関数への入力は、この章を通して扱ってきた他の引数群と同様に、引数の中へ混在して渡します。
この演習では、osFUN 引数を使って osMaxDollar という関数を指定します。これは文字列ではなくオブジェクトとして渡します。違いは、注文サイズ関数名をクォートで囲まないことだけです。
この関数に渡す追加引数は tradeSize と maxSize で、どちらも、数章前に定義した tradesize を指定します。これはワークスペースに用意されています。
この演習はコースの一部です
Rで学ぶ金融トレーディング
演習の手順
- これまでの演習で使った
add.rule()コマンドがワークスペースに表示されています。 - このルールに注文サイズ関数を追加し、
osFUN、tradeSize、maxSizeを指定してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Add a rule that uses an osFUN to size an entry position
add.rule(strategy = strategy.st, name = "ruleSignal",
arguments = list(sigcol = "longentry", sigval = TRUE, ordertype = "market",
orderside = "long", replace = FALSE, prefer = "Open",
# Use the osFUN called osMaxDollar
osFUN = ___,
# The tradeSize argument should be equal to tradesize (defined earlier)
tradeSize = ___,
# The maxSize argument should be equal to tradesize as well
maxSize = ___),
type = "enter")