minisoba blog

プログラミングと株式投資

ALGOSEED開発記録: TA-LIBでテクニカル分析

J-Quants APIを経由して様々な日本株データを取得できるようなり、そのデータを分析するべく、テクニカル分析ライブラリを実装してみました。 …と言っても一から実装するのではなく、この分野ではかなり有名なTA-LIBというC言語で実装されたライブラリを CFFI(the Common Foreign Function Interface)経由でLisp関数として呼び出します(以下実装参考)。

TA-LIBで定義されたEMA(指数平滑移動平均線)をCFFIを通じて外部アクセス関数を定義しLisp上からアクセスする感じです。

(cffi:defcfun ("TA_EMA" %ema) :ta-ret-code
  (start-idx          :int)
  (end-idx            :int)
  (in-real            :pointer)
  (opt-in-time-period :int)
  (out-beg-idx        :pointer)
  (out-nb-element     :pointer)
  (out-real           :pointer))

次に、呼び出し関数を定義してみました(もちろん、%ema関数を直接呼び出すことも可能です)。

(defun ema (series-1 start-idx end-idx &key (time-period 10))
  "Exponential Moving Average (EMA)

The Exponential Moving Average is more responsive moving average compared to the
Simple Moving Average (SMA).  The weights are determined by alpha which is
proportional to it's length.  There are several different methods of calculating
EMA.  One method uses just the standard definition of EMA and another uses the
SMA to generate the initial value for the rest of the calculation.

Returns:
    ema.
"
  (unless (eq (type-of series-1) 'ta-series-1)
    (error 'ta-lib-type-error :error-text "Invalid series type, expect 1 series"))
  (%with-ta-command-1 %ema series-1 start-idx end-idx :in-args `(,time-period)))

今回も、Lispを使ったテクニカル分析の動画をYouTubeにアップしました。前回に比べ、ビデオ編集ソフト(Shotcut)となるものも利用しました。😀 こちらも、機会を見て紹介したいと思います。

↓アップした動画、👍もよろしくお願いします! www.youtube.com

参考: qiita.com www.shotcut.org

Emacsのデフォルトカラーの変更

ハイコントラストのEmacsのテーマをインストールして、色々と検証してみたら、SlyのREPL画面が見づらいかったので変更方法をまとめてみました。

ミニバッファ上に以下のコマンドをタイプするとFaceと設定されている色のリストが表示されます。

M-x list-face-display

今回は、SlyのREPL画面のプロンプトとフォントの色を変更したいので、Slyで検索します。

pale turquoiseに変更して、Apply and Saveをクリック。

SlyのREPL画面のプロンプトとフォントの色が更新されました。

以前に比べ、Emacsのカスタマイズがかなり簡単にできるようになり、elispで書いていた(ほとんど、Googleから検索してコピペ)ときが懐かしい…

ALGOSEED開発記録: はじめました

随分昔からアルゴ取引のフレームワークを開発しては途中でやめるというのを繰り返してきました。 ロゴなんかも作ってみたりして、ゆくゆくはマネタイズ化もしくはオープンソースって考えていたのですが 一通り開発が終えて、必ずつまづくのがGUIとデータです。

やはり、チャートとテーブル表示は金融データ分析においては必須ですし、ハイクオリティなデータも信頼性の高いソフト開発をする上ではとても重要です。

仕事では、一貫してC++で開発してきましたし、パーソナルプロジェクトでもCommon LispC++がベースです。なので、JavaScript やTypeScriptとかWebフロント開発の経験は全く無いのですが、最近Udemyとかでちょっと勉強しようかなぁって思い始めています…

東証発のJ-Quants APIという素晴らしいデータを低価格でサブスクすることができるようになったので、これをベースにまた開発を始めました(汗)…

自戒の意味も込めて、開発日記を始めることにしました。最終的な目標は、どういう形であれ公開したいですね。

J-Quants API凄すぎ!

jpx-jquants.com

10数年前に、アルゴリズムトレーディングをリテールに広めるべく単身起業しましたが、1年後には資金が底を付き廃業の憂き目に合いました。その後、友人とFinTechビジネスを立ち上げるもこちらも3年で断念。4年間の紆余曲折のすえ、結局サラリーマンプログラマに舞い戻り現在に至っております。

アルゴリズムトレーディングなどフロントオフィス系のビジネスを立ち上げる上で一番ネックになるのが高品質なデータの取得です。機関投資家個人投資家に関わらずデータの正確性、整合性なくして金融ソフトの開発はできません。最も一般的なデータソースはブルームバーグやロイターですが、ブルームバーグターミナルを契約するとなると月々1500USドルのコストがかかります。ロイターは少し安いですがそれでも700USドルは掛かると思います。とてもじゃないけど、ファンディングなしのスタートアップ企業が払える金額ではありませんでした。

それから10年以上の月日が経って、最近息子が友達と金融アプリを作るというので色々調べていたらなんと!!!!日本証券取引所(以降、東証)発信のJ-Quants APIとなるものを発見しました。早速、調べて見たらこれは凄い!最近、東証は投資家向けの情報共有、発信にとても熱心です。多分、外国人投資家を意識してのことでしょう… 10年前に比べ随分と変わったなぁって思います。

… という経緯で、今週末はJ-Quants APIで遊んでおりました。

こういったデータ取得関連はPythonを使うのが王道だと思いますが、小生はLispで実装することにしました。Lispって何?1950年代に開発されたプログラミング言語なのでかなりマイナーな言語ですがEmacsとかAutoLispとかそれなりに需要はあるのかなぁ?自分が理想とするアルゴリズムトレーディングシステムを開発をする上で、Lispを選択する理由については機会があれば、後日ブログに上げられたらと思います。この気持ちは10年以上経った今でも変わっていません。

現在(昨日から(笑))J-Quants APIを使ったシステムを構想・開発中です。いつになるかわかりませんが、将来的にはオープンソースで公開したいと考えています。

うーむ、長々と書いてきましたがポイントは何?

J-Quants APIは最高!っていうことで…

Sublime Text: タブ、サイドバー フォントの変更

通常のフォントサイズの変更は、編集画面のみに適用されるので、タブ、サイドバーの場合、個別に対応する必要があるみたいです。

メニューから、[Preferences]->[Customize Theme]を選択:

// Documentation at https://www.sublimetext.com/docs/themes.html
{
    "variables":
    {
    },
    "rules":
    [
        {
            "class": "tab_label",
            "font.bold": true,
            "font.size": 16
        },
        {
            "class": "sidebar_label",
            "font.bold": false,
            "font.size":16
        }
    ]
}

住宅ローンにまつわるリスクを考える

海外移住をしてかれこれ25年以上が経ち、50代半ばを目前にして「終の住処」って言ったら大袈裟ですが、そろそろ先々のことを考えています。 お互い老後は日本という点で、妻とも考えは一致しています。

海外では(少なくとも、私が働いている業界では)定年というものはないのですが(人事確認済み)、60歳までには日本への帰国を考えています。 これまでずっと賃貸暮らしだったので、この帰国のタイミングでどこかに住宅を購入する予定です。

こういう経緯から、住宅ローンにまつわるリスクついて考えてみました。

金利上昇リスク

言わずと知れた問題ですね。バブル経済崩壊以来、長らく超低金利が続いた日本ですが、ようやく金利のある正常な状態に戻るって感じです。 もちろん、ローンを組む側からしたら低金利でお金が借りられる(金利負担が少ない)ので、より高額な物件を購入することができます。 しかし、お金を預ける側からすると100万円預けて、利息100円ってどういうことってなりますよね。とても異常でアンバランスな状態だと思います。

頭金はなるべく抑えて住宅ローンを組んで、残金を高利回り金融資産で運用したらいいって言うFPもたくさんいますが、それって本当に正しいのでしょうか?

運用リスク

確かに、低金利でお金を借りて、それを株式とかの高利回り金融資産で運用できたらいいですよね。 私も、NTT(9432)や東京三菱UFJ(8306)といった新NISA人気銘柄を保有していて 配当利回りがNTTで3.51%、東京三菱UFJで3.15%(2024年10月15日現在)です。 しかしながら、NTTの平均取得株価が155円ですので、すでに5%以上のマイナスです。 NTTは、直近の高値からすでに25%弱下落しているので高値掴みしたら、そうそうに換金することができませんよね。

どんなに景気が悪くなろうが、株価が下がろうがローン残高は変わりません。株価が右肩上がりだったらいいのですが、株式相場の正確な予想は誰にもできません。 住宅ローンという大きなリスクを背負いながら、株式投資という別のリスクも同時に背負うというのはとても危険な考え方だと思います。

しかしながら、「機会喪失リスク」という言葉通り、投資をしないリスクというのも存在するので、ある程度の余剰資金で比較的安定した銘柄を選ぶのも 一つの手だと思います。あくまで、余剰資金で長期運用がポイントです。

イベントリスク

イベントリスクといったら、金融危機や経済危機といったものを想像しがちですが、子供の大学(国立 or 私立)進学はたまた海外留学といった当初想定していなかった イベントが常に発生します。子供の将来を潰したくないし、できる限りのことはしてあげたいと思うのが親心。また、現在働いている会社を突然クビに なるってことだってありますよね。海外では(特に外資系金融機関)、景気が悪くなるとすぐリストラをします。 どんなときでも、住宅ローンや子供の教育費は重くのしかかってくるのです。

為替リスク

最近、S&P連動型投資信託とかオルカンなんて流行っているようですが、個人的にはあまりオススメしません。もちろん、参入時期によっては全然ありだと思いますが、 株式投資というリスク資産に対して、為替リスクもつける、それプラス住宅ローンってリスクのオンパレードって感じです。

以前、イギリス株に投資していましたが収益を円ベースで考えていたので、株価プラス円換算ってとても面倒になってやめてしまいました。(以前のブログ参照)。 私の場合、お給料がドルベースなので、ドルでの投資はありですし、将来日本に帰国するので円での投資もありだと考えています。実際、1ドル160円のときは、こっちの貯金を ほぼ全額円に換金しました。

外貨で投資、貯金する場合、将来投資している外貨を使うことを前提に考えれば問題ないと思います。

結論

  • 頭金はしっかりためて無理のない住宅ローンを組むべし

  • 機会喪失リスクを避けるため、余剰資金で株式投資をするべし

  • 外貨建て投資信託は、為替リスクが発生するのでエントリーポイントが非常に重要、将来運用通貨を利用できればよし

  • 住宅ローン、株式投資、将来の起こりうること… すべてにリスクが介在する

こんな感じで考えています。せっかく、今まで頑張ってきて人生において一区切りついたのに、老後になってまでお金の苦労はしたくありません。 リスクを予め理解して、しっかりとした無理のない計画を立てたいものですね。

読んでいただきありがとうございました。