2019-12-31

Rで株価を扱う 〜 stock-explorer の公開

対象銘柄および関連業界のいくつかの銘柄の株価情報を使って学習させ、明日の取引の始値を予測するプログラム stock-explorer を GitHub に公開しました。いままで Bitbucket にリポジトリを作って非公開で開発をしていましたが、ある程度の成果を確認できたのでリポジトリを移して公開し、時間をかけて汎用的用途に使えるように機能を実装していこうと考えています。

もともと、2018 年 12 月 19 日にソフトバンクグループの国内通信子会社、ソフトバンクが東京証券取引所第1部に上場したこと [1] を契機に、当日までの株価の情報だけで明日(未来)の株価を、機械学習でどこまで予測できるか評価したいと思ったことが、開発を始めた動機です。

※ 新しく始まる株価データを使って機械学習をする、という意味で契機と捉えました。

一年あまりの期間、毎晩 Yahoo!ファイナンスの株価情報をダウンロードして、そのうちいくつかの銘柄を数種類の機械学習のアルゴリズムで学習させ、仮想的に 100 万円を単純な投資アルゴリズムで運用してみました。その結果、2019 年末時点で、予測精度はともかく、PLS のアルゴリズムで予測したヤフーの運用結果が際立って良かったのでスクリーンショットを下記に載せました。

※ 人力で毎晩処理をするのは大変なので、24 時間稼働させられる安価でファンレスな PC を買って cron で毎晩決まった時間に処理するようにしています。

stock-explorer の実行例

GitHub の下記のサイトにリポジトリを公開しています。

ソースを入手するには下記のように git でクローンしてください。

[bitwalk@fedora-pc ダウンロード]$ git clone https://github.com/bitwalk123/stock-explorer.git
Cloning into 'stock-explorer'...
remote: Enumerating objects: 43, done.
remote: Counting objects: 100% (43/43), done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 43 (delta 16), reused 28 (delta 9), pack-reused 0
Unpacking objects: 100% (43/43), done.
[bitwalk@fedora-pc ダウンロード]$ 

プログラムの詳細は、これから上記 GitHub のサイトに詳しく説明して行く予定ですが、まだできていません。ただ、日々の株価データを取得し、学習・予測し、データベースを更新する処理は support/update.R が担っています。スクリプトの中身はハードコーディングしている箇所がまだ数多く残っています。本体の stock-explorer はデータベースから読み取ってブラウザ上にプロットを表示するだけの Shiny アプリです。

雑感

R の caret パッケージ [2] を利用すると、簡単に機械学習のアルゴリズムを利用できるので、専用のサーバーを用意して何種類もの機械学習のアルゴリズムをチューニングなしで試してみました。RMSE を精度の基準と考えるならば、'bridge' (Bayesian Ridge Regression) が試した中では一番精度が良いと言えます。精度で二番手になるのが多くの場合、PLS でした。利用できる CPU の性能と学習にかかる計算時間を考えると、欲張ったデータ量を学習させようとすれば PLS が現実的な解になるのかもしれません。ただし、まだまだ試すべきアルゴリズムはたくさんありますので、結論にはできません、

株価予測のモニターを始めた当初は、株価のだいたい 1% ぐらいの精度 (RMSE) で次の取引の始値を予測できれば上出来だと思っていましたが、期間を含めてデータが多くなってくればそのぐらいの精度で予測できそうな様子です。しかし(当然ですが)外的要因を加味することができていません。

例えば、ヤフーと LINE の統合についての報道 [3] が 11 月 13 日の夜に出たときに、翌日のヤフーの株価は急騰しましたが、現状ではその情報を予測に反映させる術がありません。そのため、予測が実際のトレンドに一日遅れで追従することになります。これでは精度としての RMSE がそこそこ良くても、まだまだ使い物になりません。

そこで、ウェブスクレイピングを応用して、予測に寄与する情報を収集できればと試行錯誤を始めています。

参考サイト

  1. ソフトバンク上場、終値1282円 公開価格を15%下回る  :日本経済新聞 [2018-12-19]
  2. The caret Package
  3. ヤフーとLINE経営統合へ ネット国内首位に  :日本経済新聞 [2019-11-13]
  4. bitWalk's: Rで株価を扱う 〜 始値を予測してみた [2019-02-03]
  5. bitWalk's: Rで株価を扱う 〜 quantmod パッケージ [2019-01-16]

 

ブログランキング・にほんブログ村へにほんブログ村

2019-12-29

PyGObject を試す

GObject (GLib Object System) は、GTK+ のすべてのウィジェットおよび関連するオブジェクトの基底クラスからなるオブジェクトシステムと、言語間の透過的相互運用性を提供するライブラリです。GObject は C 言語で実装されており、バインディングによって他の言語から利用可能となっています。

PyGObject は GObject へのバインディングを提供する Python パッケージです。

Wikipedia より引用・編集

Fedora 31 の場合

参考サイト [1] の Fedora の設定を確認したところ、必要な環境が揃っていたので、参考サイト [2] に紹介されている二つの Hello World を少々アレンジして試してみました。

まずは、参考サイト [2] に紹介されている最初のサンプル、ウィンドウのタイトルに文字列を設定するだけの単純なスクリプトを試しました。

hello.py
hello.py の実行例

次に、ボタンをクリックすると文字列をコンソール上に出力するスクリプトです。

hello2.py
hello2.py の実行例
hello2.py のボタンをクリック時の出力例
[bitwalk@fedora-pc PyGObject_samples]$ python hello2.py
こんにちは、世界!
こんにちは、世界!

どちらも特に問題なく実行できました。

Windows 10 の場合

参考サイト [1] の Windows の設定では、MSYS2 を利用して、pacman で実行環境を整えます。上記 Linux (Fedora) で作成したスクリプトファイルを UTF-8 のエンコードのまま実行できるかを確認しました。

まず最初の hello.py では問題なくタイトル文字が表示されました。

hello.py の実行例 (Windows 10)

hello2.py でも問題なくウィジェット上の文字が表示されました。

hello2.py の実行例 (Windows 10)

しかし、コンソール上の文字列出力は化けてしまいました。

hello2.py の実行例 (Windows 10) 文字列出力結果 (1)

MSYS のコンソールのロケールを ja_JP、文字セットをシフト JIS (SJIS) に設定してみました。

MSYS mintty のオプション設定

再度 hello2.py を起動してボタンをクリックすると、今度は正常に表示されました。

hello2.py の実行例 (Windows 10) 文字列出力結果 (2)

コンソール上の文字コードが SJIS のままだと vim でコンソール上で UTF-8 のファイルを編集する場合に支障が出ますが、運用方法を工夫することでなんとかなりそうです。

雑感

Python による GUI プログラミングはもっぱら wxPython を使っていましたが、Linux (Fedora) のデスクトップ環境が GNOME なので、自分で作る GUI アプリの UX を GNOME に揃えようと PyGTK をやってみようかと調べたところ、今では PyGObject を使うべしということだったので試してみました。Windows 上でも MSYS2 を利用すれば、Linux 上で作成した同じスクリプトファイルを実行できそうです。Linux で開発したアプリをそのまま Winodws で実行できるのは魅力です。考えてみると wxPython でも同じことができるはずなので、どちらが良いかではなく、選択肢が多い事を喜ぶことにします。

まずは PyGObject を使いこなせるように、ウィジェットの使い方やレイアウトの調整方法をまとめる予定です。

参考サイト

  1. Getting Started — PyGObject
  2. 2. Getting Started — Python GTK+ 3 Tutorial 3.4 documentation
  3. MSYS2 MinGW GCC環境をつくる(その1) [2018-01-30]

 

ブログランキング・にほんブログ村へにほんブログ村

2019-12-28

OpenDesktop.org (2) ~ Pling ~

openDesktop.org は、個人向けにクラウドストレージやチャットなどのコミュニケーションツールを無料で提供しています。同時に、KDEGNOME のテーマなどのフリーコンテント (libre content) を配布するストア (Pling) や、オープンソースコード開発のためのサイト (Opencode) も提供しています。

openDesktop.org を中心にして、Pling と Opencode は互いに結びついています。何回かに分けてこれらのサービスについて紹介します。今回は Pling について紹介します。

なお、本ブログ記事で使用している環境は以下の通りです。

OS
Fedora 31 (Workstation Edition) x86_64
└ GNOME version 3.34.2

Linux デスクトップ向けストア Pling.com

opemDesktop.org が提供する主要サービスが Pling.com です。このサイトは、例えば KDEGNOME のテーマ、アイコン、壁紙、アドオンなど、Linux のデスクトップに関連したフリーコンテント (libre content) を配布しているストアです。ここで公開されているコンテントは、登録なしにダウンロードあるいは直接インストールすることができます。また openDesktop.org に登録したアカウントがあれば、新しいコンテントをアップロードしたりすることもできます。

PlingStore アプリを使う

PlingStore アプリのダウンロード

Pling.com のサイトの画面右上にある 「Download th App PingStore」をクリックすると、PingStore をダウンロードするページに移ります。右上の「Downlaod」をクリックすると、pling-store-5.0.2...AppImage がリストに表示されますので、これをクリックします。

Pling-Store (pling-store-5.0.2-1-x86_64.AppImage) のダウンロード (1)

確認画面が出ますので、青い「Doenload (99.97 MB)」ボタンをクリックして、ダウンロードするディレクトリを選んで PlingStore アプリ(この例では pling-store-5.0.2-1-x86_64.AppImage)をダウンロードします。

Pling-Store (pling-store-5.0.2-1-x86_64.AppImage) のダウンロード (2)

PlingStore アプリの起動

AppStore をダウンロードしたディレクトリに移り、実行権限を与えて実行します。

[bitwalk@fedora-pc ダウンロード]$ chmod +x pling-store-5.0.2-1-x86_64.AppImage
[bitwalk@fedora-pc ダウンロード]$ ./pling-store-5.0.2-1-x86_64.AppImage
INFO: imwheel started (pid=7911)
Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs"
[ocs-manager] Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
...
(以下省略)

すると、PlingStore アプリのウィンドウが表示されす。これはいわば Pling.com 専用のブラウザのようなもので、デスクトップテーマやアイコンなど全てが PlingStore からダウンロード/インストールします。

起動後の Pling-Store

例:GTK3 のテーマをインストール

画面左上の検索欄に GTK3 と入力して、検索結果から GTK3 themes を選択します。

キーワード GTK3 で検索

GTK3 のテーマで更新が新しいもの順 (Latest のタブ)に表示されます。Latest, Score, Plinged のタブがありますので、見たいタブに切り替えてください。Score は評価が高いもの順、Plinged はよくわかりませんがおそらく閲覧順なのでしょう。

GTK3 themese 一覧を表示

ここでは Marwaita というテーマを選び、インストールしてみます。一覧から Marwaita をクリックして Marwaita の画面にします。右上の「Install」をクリックすると Marwait.tar.xz がリストに表示されますので、これをクリックします。

テーマ Marwaita のサイト(インストール)

インストールの確認画面になりますので、青い「Install (0.17 MB)」ボタンをクリックしてインストールします。

テーマ Marwaita のインストール確認画面

インストール終了のメッセージは表示されません。GTK3 テーマの場合、インストール先は $HOME/.themes 内になります。なお、アイコンの場合は .local/share/icons 内にインストールされます。

テーマの適用

インストールしたテーマをデスクトップに適用するには、GNOME Tweaks を使用します。GNOME Tweaks をインストールしていない場合は、下記のようにインストールします。

[bitwalk@centos-pc ~]$ sudo dnf install gnome-tweaks
メタデータの期限切れの最終確認: 1:05:55 時間前の 2019年12月06日 09時04分00秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ                         アーキテクチャー
                                             バージョン       リポジトリ  サイズ
================================================================================
Installing:
 gnome-tweaks                       noarch   3.28.1-1.el8     AppStream   331 k
依存関係をインストール中:
 gnome-shell-extension-user-theme   noarch   3.28.1-8.el8     AppStream    26 k

トランザクションの概要
================================================================================
インストール  2 パッケージ

ダウンロードサイズの合計: 357 k
インストール済みのサイズ: 1.4 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード中です:
...
(省略)
...

インストール済み:
  gnome-tweaks-3.28.1-1.el8.noarch                                              
  gnome-shell-extension-user-theme-3.28.1-8.el8.noarch                          

完了しました!
[bitwalk@centos-pc ~]$ 

GNOME のアプリケーション一覧から、あるいは端末エミュレータ上で gnome-tweaks とタイプして GNOME Tweaks を起動します。拡張機能 (Extensions) のタブを表示して、'User themes' の項目を ON に設定します。これはユーザーのディレクトリから GNOME Shell のテーマをロードできるようにする機能です。

GNOME Tasks の「拡張機能」タブ

いったん、GNOME Tweaks を閉じて、再び GNOME Tweaks を起動します。

外観 (Appearance) のタブを表示して、「アプリケーション」の右側にある現行の設定をクリックすると、選択可能なアプリケーションのテーマ名がリストで表示されます。PlingStore でインストールした Marwaita もリストにあることを確認できます。

GNOME Tasks の「外観」タブ (1)

この例では(自分が使っている現行のテーマ Yaru から)Marwaita を選択すると、直ちにウィンドウのテーマが反映されます。

GNOME Tasks の「外観」タブ (2)

GNOME に限らず、KDE, xfce などのテーマやアイコンなど多くのリソースを利用できますので、お使いのデスクトップ環境をお好みのスタイルにカスタマイズしてみてはいかがでしょうか。

参考サイト

  1. bitWalk's: OpenDesktop.org (1) [2019-12-25]
  2. Pling.com – An overview site part of opendesktop.org for all Creatives | Opendesktop.org [2019-05-03]

 

ブログランキング・にほんブログ村へにほんブログ村

2019-12-25

OpenDesktop.org (1)

openDesktop.org は、個人向けにクラウドストレージやチャットなどのコミュニケーションツールを無料で提供しています。同時に、KDEGNOME のテーマなどのフリーコンテント (libre content) を配布するストア (Pling) や、オープンソースコード開発のためのサイト (Opencode) も提供しています。

openDesktop.org を中心にして、Pling と Opencode は互いに結びついています。何回かに分けてこれらのサービスについて紹介します。今回は openDesktop.org について紹介します。

ポータル・サイト openDesktop.org

OpenDesktop.org のサイトにアクセスすると、ログインしていなければ下記のような画面になります。

openDesktop.org のサイト(ログイン前)

アカウントがなければ、画面右上の Register をクリックして、ユーザー名、メールアドレス、パスワード(二回)そして「□ 私はロボットではありません」にチェックを入れて Register をクリックすると、確認メールが届きますので、メール本文中の「Verify your e-mail address」ボタンをクリックすればアカウントが作成されます。

ログイン後の画面は下図のようになります。並んでいる6つのアイコンをクリックしてそれぞれの機能を利用します。

openDesktop.org のサイト(ログイン後)

openDesktop.org: Cloud

ファイル

Files は、Google Drive のようなオンラインストレージサービスです。利用できる容量は 1GB です。ブラウザ上のメッセージは「設定」で日本語を指定できます。

openDesktop.org → Files

この画面では「連絡先」、「カレンダー」、「ギャラリー」、「アクティビティ」に切り換えられます。

openDesktop.org: PM

Discussion Boards (messages)

Discussion Boards は、OpenDesktop.org および関連するプロジェクトについでの掲示板、すなわち意見交換の場です。機能や表示は進化していますが、ニュースグループと同じです。残念ながら、メニューなどの表示に日本語を選択することはできませんでした。

openDesktop.org → Discussion Boards (1)
openDesktop.org → Discussion Boards (2)

openDesktop.org: Cloud

Music

Music では(自分の理解では)音楽ファイルを好きなように整理、グループ化できます。

openDesktop.org → Music (1)

「ファイル」のページで音楽専用のフォルダを作成して、音楽ファイルをアップロードします。Music のページ左下の Settings のページでリンクを設定します。

openDesktop.org → Music (2)

openDesktop.org: Chat

Chat

Chat は名前のとおり、チャットツールです。残念ながらチャットする相手がおらず、動作確認できていません。😢

openDesktop.org → Chat

雑感

ずいぶんひさしぶりに GNOME のテーマやアイコンを検索しようと OpenDesktop.org を訪れたところ、昔の雰囲気と違うことに気づきました。いろいろクリックしていくと Pling のサイトに移り、当初の目的であった GNOME のテーマやアイコンなどのリソースをゲットすることが出来ました。でもなんだか昔のサイトとは趣が違っていて、もしかすると「OpenDesktop.org にある」という記憶が間違っていたのかもしれないと思い直し、今度は gnome-look.org を訪れてみると、やはり Pling のロゴがあります。

そこで、「Pling とはなにか」をテーマにブログ記事の準備を始めましたが、OpenDesktop.org を抜きにしてはうまく説明できないと思ったので、何回かに分けて扱うことにしました。

参考サイト

  1. フリーソフトウェアのスーパー・ポータル・サイト、openDesktop.org | OSDN Magazine [2008-12-02]
  2. OpenDesktop.org Acquired By KDE-Loving Blue Systems - Phoronix [2016-01-13]
  3. OpenDesktop.org - Wikipedia

 

ブログランキング・にほんブログ村へにほんブログ村

2019-12-22

Web ブラウザで GNOME Shell の拡張機能を設定

GNOME /(ɡ)noʊm/ は、Unix 系 OS 上で動作する、フリーでオープンソースデスクトップ環境です。GNOME という名称は、もともと GNU Network Object Model Environment の頭文字とされていましたが、GNOME プロジェクトの構想 (vision) にそぐわないという理由で、今では 'GNOME' がその頭文字の意味と結びつけられていません。

GNOME は GNU プロジェクトの一部で、GNOME プロジェクトで開発されています。このプロジェクトは無給のボランティアと企業の下で有給で働くコントリビュータで構成されており、最も大きな法人のコントリビュータは IBM 傘下の Red Hat です。

GNOME Shell は GNOME3.0 から導入された新しいグラフィカルシェルです。

※ ちなみにグラフィカルシェルとは、デスクトップ環境などへのユーザインタフェースとしてのシェルです。コマンドラインシェルと違い、形態がそれほど明確には固まっていません。

Wikipedia より引用、編集

参考サイト [1] に、Web ブラウザから GNOME Shell をカスタマイズする方法が紹介されていましたので、自分の環境 (Fedora 31) で試した結果を備忘録にしました。

OS
Fedora 31 (Workstation Edition) x86_64
└ GNOME version 3.34.2

chrome-gnome-shell のインストール

まずは GNOME Shell と Webブラウザを結びつけるプログラム (chrome-gnome-shell) をインストールする必要があるのですが、すでにインストールされていました。(下記)

プログラム名に chrome という名前が入っていますが、下記、黄色でマーキングした箇所を読むと、他のブラウザでも使用できるようです。

[bitwalk@fedora-pc ~]$ sudo dnf install -y chrome-gnome-shell
[sudo] bitwalk のパスワード:
メタデータの期限切れの最終確認: 0:34:30 時間前の 2019年12月22日 09時52分38秒 に実施しました。
パッケージ chrome-gnome-shell-10.1-5.fc31.x86_64 は既にインストールされています。
依存関係が解決しました。
行うべきことはありません。
完了しました!
[bitwalk@fedora-pc ~]$ rpm -qi chrome-gnome-shell
Name        : chrome-gnome-shell
Version     : 10.1
Release     : 5.fc31
Architecture: x86_64
Install Date: 2019年10月24日 08時14分10秒
Group       : Unspecified
Size        : 62277
License     : GPLv3+
Signature   : RSA/SHA256, 2019年07月30日 05時50分17秒, Key ID 50cb390b3c3359c4
Source RPM  : chrome-gnome-shell-10.1-5.fc31.src.rpm
Build Date  : 2019年07月25日 05時15分42秒
Build Host  : buildvm-06.phx2.fedoraproject.org
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : https://wiki.gnome.org/Projects/GnomeShellIntegrationForChrome
Bug URL     : https://bugz.fedoraproject.org/chrome-gnome-shell
Summary     : Support for managing GNOME Shell Extensions through web browsers
Description :
Browser extension for Google Chrome/Chromium, Firefox, Vivaldi, Opera (and
other Browser Extension, Chrome Extension or WebExtensions capable browsers)
and native host messaging connector that provides integration with GNOME Shell
and the corresponding extensions repository https://extensions.gnome.org.
[bitwalk@fedora-pc ~]$ 

Firefox の場合

Fedora Workstation で標準でインストールされる Firefox で確認しました。Firefox を起動して下記の URL へアクセスします。

Firefox で https://extensions.gnome.org にアクセス

ここをクリックしてブラウザー拡張機能をインストールしてください」をクリックして、拡張機能のインストールへ進みます。

アドオンのインストール続行の確認

アドオンのインストールを許可して次へ進みます。

GNOME Shell integration を追加する確認

GNOME Shell integration を追加するか確認してきますので、「追加」をクリックして追加します。

GNOME Shell integration が追加された通知

GNOME Shell integration が追加された通知が表示されますので「OK」をクリックします。

GNOME Shell 拡張機能一覧

すると同じサイトが新しいタブに警告なしで表示されます。「インストール済み拡張機能」のタブをクリックして開きます。

「インストール済み拡張機能」のタブ

この画面でインストール済み拡張機能の ON/OFF を設定できます。

Web ブラウザを使うメリットは?

たったこれだけの機能ですが、インストールされていない拡張機能の一覧を確認でき、追加したければ追加することが出来ます。GNOME Tweaks (gnome-tweaks) でも同じ事ができますが、プレインストールされている拡張機能の ON/OFF ができるだけで、他にどのような拡張機能を利用できるのかを知ることができません。

GNOME Tweaks の実行例

参考サイト

  1. GNOME Shellのカスタマイズに必須!拡張機能をインストールする方法 | LFI [2017-10-02]

 

ブログランキング・にほんブログ村へにほんブログ村