(参考)ETFトリックとは(具体例はすこし下)
なぜETFトリックが必要になるか、ベーシストレーディングというものを使って説明する。
日経225の先物の値段の理論値は、日経225の価格と、利子率と、予想配当利回りと、レポ利率 (=株を借りるのにかかるコスト)から求められる。
先物価格理論値 = 今の日経225価格 + 予想金利収入 - 予想配当収入 - 予想レポ収入
先物と日経225の差、つまり(先物価格 ー 日経225価格)はベーシスと呼ばれる。
マーケットで観測されるベーシスは、理論値と一致するとは限らない。この理論値からのズレを使って収益を上げるトレーディング手法をベーシス・トレーディングという。
例えば、ベーシスが3日連続で上昇したら4日目は下落しやすい、のような法則を見つけることができたら、そのアイデアを使って儲けることができるかもしれない。
ただ、このベーシス自体の時系列を取ってきて、モデル化して予測するのは問題点がある:①ベーシスの値が正になったり負になったりするとモデル化しにくい②構成株のウエイトの変化によって価格が変動してアービトラージの機会がないのにベーシスの値が変わったりする事がある*1ので、正しくベーシスの変動を予測しても儲けられないことがある。
そこで、ベーシスに1ドル投資したら、投資した1ドルはどのくらい増減するか?という問題を考える。「ベーシスに投資する戦略をとるETFがあったら値動きはどうなるか?」という考え方と一緒なので、この手法をETFトリックという。
ベーシストレーディング以外にも、とうもろこしや金などの先物を商品使ったトレード戦略を考える際、とある満期の先物を使うと数ヶ月分のトレード履歴しか取得できないが、ETFのような先物をロールして価格の連続性を保つ方法なら、何十年分のデータが取得可能である。ETFが存在する商品ならそれを使ってしまえば楽だが、そうではない場合、またETF価格は管理手数料が引かれているので正確に計算したい場合は、先物などを自分でETFっぽく変換すると、価格の連続性が保たれた時系列データが手に入る。
時点tでの投資資金をドルとすると、最初は1ドルからスタートするので、。は以下のように求められる。
\begin{align} \displaystyle K _ t &= K _ {t-1} + \text{t期の合計損益} \\ &= K _ {t-1} + \sum _ {全銘柄} \text{t-1期での各株の保} \text{有数} \times \text{各株からの利益率(ドル)} \\ &= K _ {t-1} + \sum _ {全銘柄} (\text{t-1期での各株の保} \text{有数} \times \text{為替レート}) \\ & \times ( \text{1株あたり株} \text{価変動額} + \text{1株の配} \text{当利} \text{回り} ) \\ &= K _ {t-1} + \sum _ {i=1} ^ {I} h _ {i, t-1} \varphi _ {i, t} (\delta _ {i, t} + d _ {i, t}) \end{align}
数あるタイムステップtのうち、株のリバランスのタイミング(ロールの日など)()で、株iの保有数 を、以下のように変化させていく。
\begin{align} \displaystyle h _ {i, t} = \begin{cases} \text{所有資産合計} \times \text{株iへの割合} \div \text{株iの値段(ドル)} & (\text{if } t \in B) \cr h_{i, t-1} & (\text{otherwise}) \end{cases} \end{align}
この条件分岐は、リバランスを行う()の時期以外は、株数は前のタイムステップと一緒ということ。
また、ここで、
と表せる。ここで、に絶対値がついているのは、だったときに無限大になってしまうから。
具体例
以下のような金と銀の仮想の先物データでETFトリックを試してみる。
t | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
Rebalance | - | - | - | - | B | - | B | - | - |
gold opn | 7 | 10 | 9 | 8 | 7 | 8 | 2 | 18 | 16 |
gold cls | 8 | 8 | 9 | 9 | 8 | 6 | 0 | 17 | 15 |
silv opn | 6 | 8 | 6 | 2 | 2 | 17 | 15 | 11 | 15 |
silv cls | 7 | 7 | 4 | 3 | 0 | 16 | 11 | 12 | 13 |
(参考) BASIS | 1 | 1 | 5 | 6 | 8 | -10 | -11 | 5 | 2 |
- tはタイムステップ
- Rebalanceは, つまりtにリバランスがあるかどうかを示している
- opnは始値(今後資産iの時点tの始値をと表す)
- clsは終値
- 配当dは単純化のため0とする
- レートは単純化のため1とする
- 上で述べたように、BASIS自体をモデル化するのは難しそう
まず、アロケーションベクトルωを決定してく。金が上がると思うので今回は金-銀のスプレッドが大きくなる方にベッドしたい。シンプルに金のωを1、銀のωを-1とする↓
t | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
Rebalance | - | - | - | - | B | - | B | - | - |
gold opn | 7 | 10 | 9 | 8 | 7 | 8 | 2 | 18 | 16 |
gold cls | 8 | 8 | 9 | 9 | 8 | 6 | 0 | 17 | 15 |
silv opn | 6 | 8 | 6 | 2 | 2 | 17 | 15 | 11 | 15 |
silv cls | 7 | 7 | 4 | 3 | 0 | 16 | 11 | 12 | 13 |
gold ω | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
silver ω | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
次に、金銀それぞれの価格変化δを以下の式から求めていく↓
\begin{align} \displaystyle \delta _ {i, t} = \begin{cases} p _ {i, t} - o _ {i, t} & (\text{if } (t-1) \in B) \cr \Delta p _ {i, t} & (\text{otherwise}) \end{cases} \end{align}
t | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
Rebalance | - | - | - | - | B | - | B | - | - |
gold opn | 7 | 10 | 9 | 8 | 7 | 8 | 2 | 18 | 16 |
gold cls | 8 | 8 | 9 | 9 | 8 | 6 | 0 | 17 | 15 |
silv opn | 6 | 8 | 6 | 2 | 2 | 17 | 15 | 11 | 15 |
silv cls | 7 | 7 | 4 | 3 | 0 | 16 | 11 | 12 | 13 |
gold ω | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
silver ω | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
gold δ | - | 0 | 1 | 0 | -1 | -2 | -6 | -1 | -2 |
silver δ | - | 0 | -3 | -1 | -3 | -1 | -5 | 1 | 1 |
初期条件のを表に書き入れる↓
t | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
Rebalance | - | - | - | - | B | - | B | - | - |
gold opn | 7 | 10 | 9 | 8 | 7 | 8 | 2 | 18 | 16 |
gold cls | 8 | 8 | 9 | 9 | 8 | 6 | 0 | 17 | 15 |
silv opn | 6 | 8 | 6 | 2 | 2 | 17 | 15 | 11 | 15 |
silv cls | 7 | 7 | 4 | 3 | 0 | 16 | 11 | 12 | 13 |
gold ω | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
silver ω | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
gold δ | - | 0 | 1 | 0 | -1 | -2 | -6 | -1 | -2 |
silver δ | - | 0 | -3 | -1 | -3 | -1 | -5 | 1 | 1 |
Kt | 1 | ? | ? | ? | ? | ? | ? | ? | ? |
このをもとに、金と銀それぞれの保有数hを計算する
を使うと、金の初期保有数は
\begin{align} \displaystyle h _ {金, 0} &= 1 \times \frac{1}{2} \div 10 \\ &= 0.05 \end{align}
であり、銀の初期保有数は
\begin{align} \displaystyle h _ {銀, 0} &= 1 \times \frac{-1}{2} \div 8 \\ &= -0.0625 \end{align}
ここで、使われている値段は翌日の始値であることに注意。これは、t=0の引け後の資産を使って翌日の朝、成行注文を出していると考えれば良い。
今求めた保有数は、リバランスが来るまで変わらない。
t | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
Rebalance | - | - | - | - | B | - | B | - | - |
gold opn | 7 | 10 | 9 | 8 | 7 | 8 | 2 | 18 | 16 |
gold cls | 8 | 8 | 9 | 9 | 8 | 6 | 0 | 17 | 15 |
silv opn | 6 | 8 | 6 | 2 | 2 | 17 | 15 | 11 | 15 |
silv cls | 7 | 7 | 4 | 3 | 0 | 16 | 11 | 12 | 13 |
gold ω | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
silver ω | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
gold δ | - | 0 | 1 | 0 | -1 | -2 | -6 | -1 | -2 |
silver δ | - | 0 | -3 | -1 | -3 | -1 | -5 | 1 | 1 |
Kt | 1 | ? | ? | ? | ? | ? | ? | ? | ? |
gold h | 0.05 | 0.05 | 0.05 | 0.05 | ? | ? | ?? | ?? | ?? |
silv h | -0.0625 | -0.0625 | -0.0625 | -0.0625 | ??? | ??? | ???? | ???? | ???? |
より、を計算する。
\begin{align} \displaystyle K _ 1 &= K _ {0} + 0 \times 0.05 + 0 \times (-0.0625) \\ &= 1 \\ K _ 2 &= K _ {1} + 1 \times 0.05 + (-3) \times (-0.0625) \\ &= 1.2375 \\ \vdots \end{align}
t | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
Rebalance | - | - | - | - | B | - | B | - | - |
gold opn | 7 | 10 | 9 | 8 | 7 | 8 | 2 | 18 | 16 |
gold cls | 8 | 8 | 9 | 9 | 8 | 6 | 0 | 17 | 15 |
silv opn | 6 | 8 | 6 | 2 | 2 | 17 | 15 | 11 | 15 |
silv cls | 7 | 7 | 4 | 3 | 0 | 16 | 11 | 12 | 13 |
gold ω | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
silver ω | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
gold δ | - | 0 | 1 | 0 | -1 | -2 | -6 | -1 | -2 |
silver δ | - | 0 | -3 | -1 | -3 | -1 | -5 | 1 | 1 |
Kt | 1 | 1 | 1.2375 | 1.3 | 1.4375 | ? | ? | ? | ? |
gold h | 0.05 | 0.05 | 0.05 | 0.05 | ? | ? | ?? | ?? | ?? |
silv h | -0.0625 | -0.0625 | -0.0625 | -0.0625 | ??? | ??? | ???? | ???? | ???? |
t=4でリバランスをして、hを調整する。より、
金:
\begin{align} \displaystyle h _ {金, 4} = h _ {金, 5} &= 1.4375 \times \frac{1}{2} \div 8 \\ &= 0.089844 \end{align}
銀:
\begin{align} \displaystyle h _ {銀, 4} = h _ {銀, 5} &= 1.4375 \times \frac{-1}{2} \div 17 \\ &= -0.04228 \end{align}
t | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
Rebalance | - | - | - | - | B | - | B | - | - |
gold opn | 7 | 10 | 9 | 8 | 7 | 8 | 2 | 18 | 16 |
gold cls | 8 | 8 | 9 | 9 | 8 | 6 | 0 | 17 | 15 |
silv opn | 6 | 8 | 6 | 2 | 2 | 17 | 15 | 11 | 15 |
silv cls | 7 | 7 | 4 | 3 | 0 | 16 | 11 | 12 | 13 |
gold ω | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
silver ω | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
gold δ | - | 0 | 1 | 0 | -1 | -2 | -6 | -1 | -2 |
silver δ | - | 0 | -3 | -1 | -3 | -1 | -5 | 1 | 1 |
Kt | 1 | 1 | 1.2375 | 1.3 | 1.4375 | ? | ? | ? | ? |
gold h | 0.05 | 0.05 | 0.05 | 0.05 | 0.089844 | 0.089844 | ?? | ?? | ?? |
silv h | -0.0625 | -0.0625 | -0.0625 | -0.0625 | -0.04228 | -0.04228 | ???? | ???? | ???? |
求めたhをもとに、を求める(緑色の部分)
(式、表省略)
求めたKをもとに、t=6, 7, 8での株保有数を求める
(式、表省略)
求めた株保有数をもとに、を求める
(式、表省略)
以上の計算で、時系列データKtが生成された
t | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
Rebalance | - | - | - | - | B | - | B | - | - |
gold opn | 7 | 10 | 9 | 8 | 7 | 8 | 2 | 18 | 16 |
gold cls | 8 | 8 | 9 | 9 | 8 | 6 | 0 | 17 | 15 |
silv opn | 6 | 8 | 6 | 2 | 2 | 17 | 15 | 11 | 15 |
silv cls | 7 | 7 | 4 | 3 | 0 | 16 | 11 | 12 | 13 |
gold ω | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
silver ω | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
gold δ | - | 0 | 1 | 0 | -1 | -2 | -6 | -1 | -2 |
silver δ | - | 0 | -3 | -1 | -3 | -1 | -5 | 1 | 1 |
Kt | 1 | 1 | 1.2375 | 1.3 | 1.4375 | 1.300092 | 0.972426 | 0.901213 | 0.802989 |
gold h | 0.05 | 0.05 | 0.05 | 0.05 | 0.089844 | 0.089844 | 0.027012 | 0.027012 | 0.027012 |
silv h | -0.0625 | -0.0625 | -0.0625 | -0.0625 | -0.04228 | -0.04228 | -0.0442 | -0.0442 | -0.0442 |
(参考) BASIS | 1 | 1 | 5 | 6 | 8 | -10 | -11 | 5 | 2 |
間違っていたら教えて下さい。
[付録]その他の章
「ファイナンス機械学習」1章&2章メモ - babaye's notes
「ファイナンス機械学習」3章&4章メモ - babaye's notes
*1:具体例の最初の表のBASIS系列を参照すると、系列がロール時期に大きく動いてしまうことがわかる