Life is Like a Boat

忘備録や経済、投資、プログラミングに関するメモやtipsなど

今週の売買:なし 年初からの実現益: +1289

年初からの実現益は1289万になりました。

直近では平田機工やエンジャパンがプラスに貢献しています。

最近、取引の履歴を見て振り返るというプロセスに時間を割けず... 面倒なのがSBIでダウンロードしたcsv文字コードです。 このcsv文字コードSJISで、そのままGoogle spreadsheetにアップロードすると文字化けしてしまいます。

そこでnkfというテキストデータの文字コードを変換してくれるunixのコマンドを使って変換作業をかませています。

流れとしては

  1. Safari/ChromeでSBIから取引履歴をcsvでダウンロード

  2. ローカルでnkfをつかってそのcsvファイルをSJIS -> UTF8変換

  3. 変換後のファイルをGoogle Driveにアップロード

  4. フィルターやQUERY関数を使って集計作業

ざっくりこれだけでも10分くらいはかかります。

これらを自動化する方法としては 1についてはログイン後の情報なのでJavascriptを使うアプローチならCasperJSやNightmareJSといったスクレイピングに特化したライブラリを使ってcsvファイルをダウンロードするという方法があります。 3のGoogle Driveにアップロードする作業ですが、目的は集計することなので、データをつっこむ先はMySQLでもPostgreSQLでも構いません。 Pythonのpandasでデータを持ってきて集計できますからね。

なので

  1. スクレイピングしてcsvをダウンロード

  2. sjis->uft8変換

  3. Postgresへのインサート処理

  4. Pandasで集計結果を出す。

これでやりたい事が自動化できそうです。 ToDoタスクに入れておこう。

GoogleSpreadsheetのQUERY関数を使って取引履歴を集計する

SBIから取引履歴をcsvでダウンロードして、信用枠の取引履歴から銘柄別の損益を集計してみました。 基本的に信用買から入った銘柄ばかりです。なので返済売が条件に入っています。

QUERY関数というのがあるのか、初めて知りました。年初から2月末にかけて、ネクストと大和ハウスで80万くらい損してますね(^_^;)。

f:id:nerimplo:20170520201748p:plain

追記 よく考えたら約定単価はweighted averageじゃないとだめですね。元のスプレッドシート側で約定単価*約定数量のカラムを作って、そのSUMを約定数量のSUMで割らないといけない。

SBI証券のポートフォリオ画面から保有株の決算発表日を取得するブックマークレット

SBI証券ポートフォリオ画面では決算発表の時期が近づくと、銘柄欄に"決算"アイコンが表示されます。 ユーザとしてはここから決算発表日が近づいているのがわかるのですが、正確な日を把握するにはいちいちリンクをクリックして別画面で発表日を知る必要があります。

と思っていたのですが、この決算アイコンの上でマウスオーバーすると発表日の吹き出しが表示されることをつい最近発見しました! f:id:nerimplo:20170501084134j:plain これはしめた!

さっそく決算アイコンが付いている銘柄から決算発表日を取得してカンマ区切りで表示するブックマークレットを作ってみました。下記そのコードです。

var printStr = '';
Array.prototype.slice.call(
    document.querySelectorAll('div.middleAreaM2 > table > tbody > tr > td > table td:nth-child(2).mtext[rowspan="1"]'))
    .forEach(function (e) {
        var code = e.innerText.substring(0, 4);
        if (e.querySelector('a:last-child img.vaM') !== null) {
            var name = e.querySelector('a:first-child').text;
            var title = e.querySelector('a:last-child img.vaM').title;
            printStr += '<div>' + code + ', ' + name + ', ' + title + '</div><br/>';
        }
    });
var d = window.open().document;
d.writeln('<div>' + printStr + '</div>');
e.querySelector('a:last-child img.vaM').title;

でimgタグのtitle要素を取ってきています。

表示は別画面です。こんな感じでカンマ区切りで表示させてます。上記コードをブックマークレットにしてあげれば、あとは表示結果をGoogleSpreadsheetで管理して、カレンダーと紐づけるなり、なんなりできますね。Happy investing! f:id:nerimplo:20170501084258j:plain

(ブックマークレットの作り方は、 SBI証券のポートフォリオ画面(ログイン後)からYahooファイナンスのポートフォリオ登録用に保有銘柄のコードをスペース区切りで出力するブックマークレット - nerimplo’s diary を参照してください。 )

Sloan Ratio

会計上の利益と実際のキャッシュベースの利益との差に着目した指標です。

統計的に-10% ~ +10%だと安全圏。-25%より低い、+25%以上の状態が何年も続いている会社だと要注意。

ちなみに民事再生法を申請した江守HDはH26年3月決算時にこの指数は+39%でした。

Paperっぽく書くと式は以下の通りです。

Sloan Ratio = (Net Income – CFO – CFI) / Total Assets

where, CFO = Cash From Operations, CFI = Cash From Investments

SBI証券のポートフォリオ画面(ログイン後)からYahooファイナンスのポートフォリオ登録用に保有銘柄のコードをスペース区切りで出力するブックマークレット

SBI証券保有している銘柄をYahooファイナンスポートフォリオに登録して昼休みにiPhoneからチェックしています。

兼業投資家のお決まり行動パターンでしょうか(^_^;)

今まで新規売買分をその日にYFのポートフォリオ編集画面から逐一追加/削除してたんですが、保有銘柄が30を超えるようになってからそれが面倒臭くなってきました。

解決のためSafariブックマークレットを作って証券コードをスペース区切りの文字列で出力するようにして、それをコピペしてYF側に貼り付けるようにしました。 やり方としては

  1. SBI証券ポートフォリオ画面に行く。

  2. ブックマークレットをクリックする。

  3. 別画面に証券コードがスペース区切りになった文字列として表示される。

  4. これをYFのポートフォリオ編集画面にコピペする。

ブックマークレットの作り方は簡単で、下記のコードをSafariのブックマーク編集画面のアドレスに貼り付けます。

var holdings = Array.prototype.slice.call(document.querySelectorAll('div.middleAreaM2 > table > tbody > tr > td > table td:nth-child(2).mtext[rowspan="1"]')).map(function(e){ return e.innerText.substring(0,4) }).filter(function (e, idx, self) {return self.indexOf(e) === idx;}).sort().reduce(function(p,c) { return p + ' ' + c });
var d=window.open().document;
d.writeln('<div>'+ holdings +'</div>');

アドレスのところに

javascript: 上記コード

と頭につけるのが肝心です。

スクショを貼り付けて見ました。こんな感じになります。 f:id:nerimplo:20170423084030j:plain

動作確認はmacOS SierraのSafariでやってます。Happy investing!