セミリタイアもどきの中年ニートブログ

セミリタイアもどきの中年ニートブログ

2018年よりセミリタイア中。50過ぎ独身男の備忘録

レラティブ・ストレングス投資のシグナル判定用EXCEL(更新あり)

RS投資

レラティブ・ストレングス投資ってご存じでしょうか。

市原さんのブログで提唱されている投資法で、テクニカル指標のレラティブ・ストレングス(RS)を使用したモメンタム投資法です。

以下の市原さんのブログに検証などの詳しいことが記載されています。

etftrendfollow.seesaa.net

 

基本的な投資方法の記載部分を引用します。

現時点での「12ヶ月移動平均+3-6-12ヶ月レラティブ・ストレングス投資」とは、次のような投資法です。

1.投資候補対象は、日本株、先進国株、新興国株、日本債券、先進国債券、新興国債券、JREIT、GREITの8資産。

2.月末に、上記資産クラスの、「3ヶ月リターン、6ヶ月リターン、12ヶ月リターンの平均値」(以下、3-6-12ヶ月リターン)を計算する。

3.3-6-12ヶ月リターンが高い上位2資産を抽出する。

4.この2資産の中で、市場価格が12ヶ月移動平均を上回っている資産を抽出し、均等配分で保有するポートフォリオを構築する。

5.以上を毎月繰り返す。

で、ここからが今回の本題です。

このレラティブ・ストレングス投資を2014年から1年間程、やったことがあったのですが、その時に使用していた投資先シグナル判定用のEXCELが最近、出てきましたので、ネタとして書こうかなと思った次第です。

ちなみに1年間の成果としては、期間が短すぎたのかもしれませんが、マイナスで終わりました。。。。

 

シグナル判定用EXCELについて

EXCELではYahoo!ファイナンスから情報を取得しているのですが、Yahoo!ファイナンスではWebスクレイピングは禁止にしていますので、あくまで当時の参考としてみてもらえたらと思います。

まあ、Webスクレイピングというほどのことはしてませんけどね。

(追記)2019.08.28

なんとも間の悪いことにYahoo!ファイナンスの仕様が変わったようです。

2019.08.28以降は以下のやり方ではデータ取得できなくなりました。。。

デフォルト表示が日間データでしたので、ちょっと一手間要りそうです。

面白くなってきましたので、なんか考えようと思います。

(追記)2019.08.29

取得先のURLをモバイル用のhttps://m.finance.yahoo.co.jpにすれば、商品名以外は一応取得はできますね。まあ、そこまでしてYahoo!ファイナンスから取得する必要はないのかもしれませんけどね。そのうちこちらも使えなくなるんでしょうし。

メインシートの説明

RS投資・判定メイン画面

上記のような感じで作成していました。

2019/07時点ですと、日本REITと先進国株式がBUYで、日本株式はSELLになってます。

まず、セルのC19以降に日本株式~新興国債券までの8資産分について投資対象商品名のコードを設定します。(黄色部分ですね。)

それらを上のD4~D11が参照している形です。

あとはC15に判定する年月を入力し、取得ボタン押下で、その時点の売買シグナルを算出する仕組みです。

参考までにセルB4~G4までは以下のようになっています。

  • B4~B11:=B18~=B25
  • C4~C11:=WORK!A1~=WORK!A141固定で設定
  • D4~D11:=C18~=C25
  • E4~E11:=RANK(F4,$F$4:$F$11)~=RANK(F11,$F$4:$F$11)
  • F4~F11:=日本株式!$D$16~=新興国債券!$D$16
  • G4~G11:=日本株式!$D$3~=新興国債券!$D$3
  • B1:=C15

WORKシートはYahoo!ファイナンスから取得した情報を貼り付けしている一時ワーク用のシートになります。(後述)

あとは条件付書式でG列がSELLかBUY且つ順位1位か2位により、色分けしているぐらいです。

日本株式シートの説明

RS投資・日本株式

WORKシートから取得している部分はA3~C15部分になります。

各セル内は以下のようになっています。(固定文言は除く)

  • A1:=HYPERLINK("http://info.finance.yahoo.co.jp/history/?code="&メイン!D4&"&sy="&MID(メイン!B1,1,4)-1&"&sm="&MID(メイン!B1,6,2)&"&ey="&MID(メイン!B1,1,4)&"&em="&MID(メイン!B1,6,2)&"&tm=m")
  • A1:=HYPERLINK("https://m.finance.yahoo.co.jp/stock/historicaldata?code="&メイン!D4&"&fy="&MID(メイン!B1,1,4)-1&"&fm="&MID(メイン!B1,6,2)&"&fd=1&ty="&MID(メイン!B1,1,4)&"&tm="&MID(メイン!B1,6,2)&"&td=1&cp=m")
  • A3~A15:=WORK!A4~=WORK!A16
  • B3~B15:=WORK!B4~=WORK!B16
  • C3~C15:=WORK!C4~=WORK!C16
  • D3:=IF(B3>=B16,"BUY","SELL")
  • D6:=B3/B6-1
  • D9:=B3/B9-1
  • D15:=B3/B15-1
  • D16:=(D6+D9+D15)/3
  • B16:=AVERAGE(B4:B15)

日本株式だけでなく、その他の7資産のシートも同じような形になります。ハイパーリンク部分とWORKシートの参照位置が違うくらいです。

WORKシートの説明

WORKシートは上記でも述べましたが、Yahoo!ファイナンスから取得した情報を貼り付けているシートになります。

それぞれの資産分を下にずらして貼っている感じですね。

RS投資・一時ワーク

ひとつ目をA1から貼り付け、次は20あけてA21から貼り付けてます。

ひとつ目をA3から貼り付け、次は20あけてA23から貼り付けてます。(図は旧のまま)

VBAのソースは以下のような感じです。大したことはしてません。

Sub 取得()
    Dim sht(7) As String
    Dim i, j, k As Integer
    sht(0) = "日本株式!$A1"
    sht(1) = "日本債券!$A1"
    sht(2) = "日本リート!$A1"
    sht(3) = "先進国株式!$A1"
    sht(4) = "先進国債券!$A1"
    sht(5) = "先進国リート!$A1"
    sht(6) = "新興国株式!$A1"
    sht(7) = "新興国債券!$A1"
'    j = 1
    j = 3 
Sheets("WORK").Cells.Clear For i = 0 To 7 With Sheets("WORK").QueryTables.Add(Connection:= _ "URL;" & Range(sht(i)), _ Destination:=Sheets("WORK").Cells(j, 1)) .Name = "yahoo" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlOverwriteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlAllTables .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False .Parent.Names(.Name).Delete .Delete End With j = j + 20 Next End Sub

さいごに

当時、対象としていたファンドは上記とは違ってましたけども、上記EXCELを使って、月初に投資先の判断をしていました。

ただ、投資対象シグナルは市原さんのブログでも掲載されているみたいですので、あまりこのEXCEL自体の需要はなさそうです。

まあ、あくまで趣味の範囲ですかね。

現時点(8/25)ですと、8月末は以下のようになりそうです。

RS投資・8月末時点

あと1週間ありますから、あくまで暫定ではありますが、日本株式、先進国株式、新興国株式のいずれもSELLになってしまいました。

これは本格的に下げ相場が来たということなんでしょうかね。