minisoba blog

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

株価時系列データをダウンロードする

本ブログのテーマでもある「プログラミングと株価投資」、テクニカル分析をするにもプログラムを書いてシステマチックに検証(バックテスト)するにも時系列データは必須です。今回は、株価時系列データの自動取得する方法を紹介します。

管理人は、Unicorn Data Service社が提供している「EOD Historical Data API」サービスを利用しています。2022年6月現在、世界中70+取引所の過去30年分の時系列データがAPI経由で提供されています。API(Application Programming Interface)とは、クライアントからのリクエストに対し、あらかじめ規定されたデータを返すプロトコル(通信規約)です。なので、プログラムからAPI経由で直接データ呼び出すことも、今回のようにローカルPCにダウンロードしてデータベースを自動的に構築することもできます。

以下、管理人が作成したPythonフレームワークCoco Quant SDKをもとに、時系列データリポジトリ(ticker plant)を構築していきたいと思います。

2020年6月現在、日本の取引所データはサポートされていません。

eodhistoricaldata.com

EOD Historical Data APIでは、様々なプログラミング言語に対応したダウンロード方法が紹介されていますが、管理人の用途を満たすものがなかったので、自前で準備することにしました。開発言語は、Python(3.10.4, Ubuntu 22.04LTS)です。

github.com

このライブラリを利用することにより、数行のコードで上場銘柄すべてのEOD時系列データを一括ダウンロードすることができます。もちろん、個別銘柄のダウンロードも可能ですし、時系列データ以外にもファンダメンタルデータやマクロ指標データなど様々なデータも同様にダウンロードすることができます。

gist.github.com

今回は、PythonでのEOD時系列データリポジトリの構築方法を紹介しました。ここで紹介したEOD Historical Data APIでは、20 APIコールまで無料で利用できるので、特定の銘柄やFXなどの分析をする際には、かなりハイクオリティーなデータベースを構築できます。GitHubのREADMEでも幾つかサンプルコードを掲載していますので、是非この機会に試してみてはいかがでしょうか?

DellノートブックPC上のLinuxで発生するファンのノイズ問題

以前、Dell Precision 5530ノートブックPCにUbuntu 20.04を新規インストールした際、ファンのノイズ問題が発生しました。GPUやCPUの状態に関わらず、常時ファンはフル稼働状態になってしまう問題、今回22.04へのアップグレードで再発してしまいましたので、解決方法を紹介します。

Step 1: i8kutilパッケージがインストールされているか確認
$ sudo dpkg-query -l | grep i8kutils
ii  i8kutils                                      1.43+nmu1                                   amd64        Fan control for Dell laptops

manpages.ubuntu.com

Step 2: dell-bios-fan-controlをビルド
$ git clone git@github.com:TomFreudenberg/dell-bios-fan-control.git
$ cd dell-bios-fan-control
$ make

github.com

Step 3: ファンのBIOSコントールを解除
$ ./dell-bios-fan-control 0
BIOS CONTROL DISABLED
Step 4: i8kctlによってファンの速度を設定
$ i8kctl fan 1 1
2 2
$

ファン速度の設定値は以下の通り、左右違った値を設定できます。

設定内容
0 オフ
1 低速
2 高速
- 変更無し

香港の年金制度について

香港には、ORSO(Occupational Retirement Scheme Ordinance, 職域退職給付制度)とMPF(Mandatory Provident Fund, 強制積立金)という2種類の年金スキームがあります。入社時にどちらか一方を選択することになり、退職するまでスキームを変更することはできません。転職する場合、MPFは他の金融機関に移管することが可能ですが、ORSOは雇用会社の福利厚生の一部として提供されているので、他の会社にそのまま移管することはできません。その場合、一部をMPFに移行し残りは現金で受け取ることになり、MPFスキームへの移行上限金額は、勤続年数と年収(3万香港ドル上限)によって決まります。なお、ORSOは、全ての会社で提供されているわけではありません。

ちなみに、現在の会社のORSOスキームは、社員拠出額と会社拠出額【基本拠出(Base Contribution)とマッチング拠出(Matching Contribution)】の合計がORSO管理会社の個人口座に毎月入金され、社員がお気に入りのファンドを選択して運用していきます。

例: 月給が6万香港ドルに対し、5%拠出する場合

3000 (個人拠出) + 2500 (会社基本拠出) + 3000 (会社拠出) = 8500香港ドル (月々の拠出額)

退職する場合は、個人拠出額に加え、運用利益と勤続年数に応じた会社拠出額(勤続年数5年の場合、50%)を受け取ることができます。なので、勤続年数に応じて会社拠出分を多く受け取れるので福利厚生というのも理解できると思います。

また、MPFへの移行可能な金額の算出方法は、

1.2 x 勤続年数 x 年収(3万香港ドル上限)

年収40万香港ドル(600万円, 1香港ドル15円)で勤続年数5年の場合、18万香港ドルがMPFへ移行し、残りは現金での受け取りとなります。

参考文献:

hongkong-bs.com www.pmas-iicp.jp miyawakitakeru.com

Emacs日本語入力をMozcに変更する

デフォルトの日本語入力システムからMozcに変更する方法を紹介します。

Step 1: emacs-mozc-binパッケージのインストール

$ sudo apt-get install emacs-mozc emacs-mozc-bin
Step 2: Emacsパッケージのインストール

M-X package-list-packagesを起動後、mozcパッケージをインストールし、以下の記述をEmacs設定ファイルに加えます。

(add-to-list 'load-path "/usr/share/emacs/site-lisp/emacs-mozc")
(require 'mozc)
(setq default-input-method "japanese-mozc")
(prefer-coding-system 'utf-8) 

こんな感じになります👏

Ubuntu 22.04LTSにCUDAをインストールする

株価分析に機械学習を応用したかったのでCUDAのインストールを試みたのですが、いきなり失敗、再起動したら黒画面でフリーズ!調べてみると、UbuntuでCUDAの設定トラブルが結構出てきたので、クリーンインストールすることにしました。

Step 1: BIOSチェック
  • Secure Bootがオフになっているか確認
Step 2: リカバリモードで再起動 (新規インストールでは不要)
  • GRUBコンソールを起動
  • 「Advanced options for Ubuntu」を選択し、"e" (エディット)キーを押す
  • linuxの最後に、"rw init=/bin/bash"を記述
  • Control-Xキーを押して、シングルユーザーモードで起動
Step 3: NVIDIAライブラリを削除
$ sudo apt-get remove --purge '^nvidia-.*'
$ sudo apt-get remove --purge '^libnvidia-.*'
$ sudo apt-get remove --purge '^cuda-.*'
Step 4: 再起動
Step 5: NVIDIA GPUドライバの確認
$ sudo ubuntu-drivers devices
[sudo] password for maron: 
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001CBAsv00001028sd0000087Dbc03sc02i00
vendor   : NVIDIA Corporation
model    : GP107GLM [Quadro P2000 Mobile]
driver   : nvidia-driver-510 - distro non-free recommended
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : nvidia-driver-510-server - distro non-free
driver   : nvidia-driver-450-server - distro non-free
driver   : nvidia-driver-470 - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin
Step 6: NVIDIA GPUドライバをインストール
$ sudo apt install --no-install-recommends nvidia-driver-510
$ sudo apt install nvidia-prime
$ sudo apt install nvidia-cuda-toolkit
Step 7: 再起動
Step 8: インストールの確認

ブートが成功したら、GPUの業態確認
(失敗した場合は、Step 2に戻ってリカバリモードで再起動後、NVIDIAライブラリを削除)

$ prime-select query
nvidia
$ nvidia-smi
Sun Jun  5 15:27:56 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.73.05    Driver Version: 510.73.05    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Quadro P2000        Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   68C    P0    N/A /  N/A |    765MiB /  4096MiB |      6%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      3826      G   /usr/lib/xorg/Xorg                500MiB |
|    0   N/A  N/A      4633      G   ...ome-remote-desktop-daemon        1MiB |
|    0   N/A  N/A      4684      G   /usr/bin/gnome-shell              118MiB |
+-----------------------------------------------------------------------------+

最後に、NVIDIA GPU、CUDAトラブルで検索すると色々なケースが出てくるので一概にこれという解決方法はないようです。カーネルモジュールとかドライバとか結構OS低レベルでハマることが多いので、Linuxにあまり興味がない人はWindowsもしくはMac上で環境構築したほうが無難かもしれません。

ちなみに、本ブログで紹介する自作システムは、特別な注意書きがない限りクロスプラットフォームで動作します。