株の入出庫で確定申告を簡単にできるか?

 こんにちは、Zhihongです。

私はサラリーマンですが、訳あって毎年確定申告をしています。
どうせ確定申告するならと、複数ある証券会社を全て特定口座(源泉徴収なし)にして自分で申告していました。

複数あるだけなら(源泉徴収あり)でもいいじゃないかと思われるかもしれませんが、リーマンショック前に買った日本株がかなりの含み損を抱えていて、タイミングを計りつつ売却して、他の証券会社での取引と損益通算したかったのです。

もちろん(源泉徴収あり)でも損益通算して確定申告できるのですが、なんとなく一度取られてからの還付ってのはまどろっこしい感じがしませんか?

私はそう思ったので、お金の出入りがシンプルな(源泉徴収なし)にしていました。

しかしながらやはり面倒には面倒なので、少しでも確定申告を楽にする方法を模索していましたが、私の状況では「入出庫」で解決するのでは?と思い当たりました。

私の状況というのはこんな感じです。

  1. カブドットコム証券に多額の含み損を抱えている銘柄を保有している
  2. カブドットコム証券は現在はほぼ使っていない
  3. 現在のメイン口座はSBI証券
  4. 他にWealthNaviとTHEOの口座もあり、更に楽天証券の口座を開こうとしている
  5. 全ての所有口座は特定口座(源泉徴収なし)

こんな感じです。

私の考えた方法はこうです。

  1. カブドットコムの全銘柄を出庫してSBI証券に入庫
  2. 全証券会社の口座を特定口座(源泉徴収あり)に変更

WealthNaviやTHEO、楽天証券は積立用なので、基本的には頻繁には売買しません。WealthNaviとTHEOはプログラムが勝手に売買してしまいますが、税金を軽減するような売買も行ってくれると謳っているので、それを期待します。

手間を掛けない分のコストと割り切ります。


ということで、株を入出庫で一つの証券会社にまとめてしまえば、損益通算は自動にやってもらえるよという当たり前の話でした。

しかしこれができるのは株式の入出庫に係る手数料が無料であることが大きいです。

カブドットコム証券もSBI証券も無料なのはありがたいです。

入出庫が完了する期間は売買できなくなるのがデメリットですね。

でも10年以上塩漬けだったのですから、今更数週間かかろうがどうってことありません。

 

さて、これで一手間減ったわけですが、今メインで取引している銘柄は米国ETFなので、外国税額控除と為替差損益の計算はしないといけないのですけどね…。
これは今のところストイックにやるしかないですね。

ではまた。

 

 

 

Kindle Fire HD8 (2017) をandroidタブレット化

Kindle Fire HD8 (2017)を購入しました。

めちゃくちゃ安いですよこれ!

普段でもPrime会員なら4000円OFFですが、セールの時は更に安くなるので、急がない方はセールを待った方が更にお得に手に入ります。

Fire HD 8 タブレット (Newモデル) 16GB、ブラック

Fire HD 8 タブレット (Newモデル) 16GB、ブラック

 

 フィルムは家だけで使うので不要と思いましたが、カバーを買うことにしました。

 買ったカバーはこちらです。

Amazon Fire HD 8 (Newモデル) 用カバー ブラック

Amazon Fire HD 8 (Newモデル) 用カバー ブラック

 

カバーにしては値が張るのですが、結果的にはこの組み合わせで正解でした。

このカバーはスタンドになります。これが動画を見るのに最適です。半面この仕組みの為に磁石が入っているので重くなり、持ち運びには不向きというわけです。

 

さて、最初はPrimeビデオを見られればいいなーくらいに考えていたのですが、使ってみると色々な不満が出てきます。

結局のところKindle Fireが採用しているFireOSというものは、ベースはAndroidですが、Amazonのコンテンツを利用する、あるいはAmazonに注文するという機能に特化しているんですよね。

 

まず、Amazon公式からアプリをダウンロードできるのですが、置いてあるアプリの数が少なく、内容的にも欲しいものがありません。

一番不満だったのは、とにかく日本語入力が使いにくいとうことです。日本語どころかソフトウェアキーボードが何か変です。アンダーバー"_"を探すのに一苦労。

これではストレスが溜まりまくるので、まずこれをなんとかしようと、Google Play ストアからGoogle日本語入力をインストールしようとしました。しかし、Google Play ストアからはアプリをインストールできないようになっているじゃないですか!

 

ということでなんとかする方法は無いかとググってみると、まあ訳の分からないやり方ばかりヒットします。海外サイトの真似でしょうか?やってる本人も何やってるかわかってないんじゃないかと思うような手順ばかり。

 

いくつかのサイトをよく読んでみて、僕自身が信用できると思ったこちらのサイトを参考にさせていただくことにしました。

Kindle Fire HD8(第6世代)にPlayストアをインストール!オススメの導入方法 | 毎日検討中

現在は第7世代(2017年版)の追記がありますが、僕が作業をしたときには第6世代までの内容でした。

第6世代用のパッケージを導入して、その後アップデートをかけ、問題なく使えています。

 

GPSが付いていないので、ナビアプリなどは使えませんが、家の中で使うタブレットとしては十分です。

絶対に入れたいのは

です。

Googleのアカウントはこの端末専用のものにしています。

それで特に不便なことはありません。

そして、安い端末なので、子供用にしても惜しくありません。

を入れると閲覧制限が掛けやすく、操作感も子供向けにわかりやすいものになります。

我が家でもインストールして子供が触っています。

 

ということで、我が家のKindle Fire HD8は、格安androidタブレットとして活躍しています。

THEO出金されました

9/21にTHEOから出金がありました。

9/14夜に出勤依頼をかけているので、6営業日かかりました。

しかし、9/22になってもTHEOのサイトでは現金が残ったことになっているので、MoneyForwardで見ると出勤先の銀行口座とTHEOに二重に現金が計上されて見えます。

そういうところですよ!

 

THEOやめます

 THEOの情報が朝イチの段階で2営業日遅れなのが我慢できなくなりました。

2営業日ってことは、月曜の朝に木曜の夜の情報を見せられるってことです。

WealthNaviも他の自分で買ってる投信も前日の状態にはなってるというのに、毎日イライライライラ……。

ということで、THEOをやめることにしました。

とりあえず完全にやめるのではなく、情報を拾えるよう10万を残し290万を引き上げることにしました。ちなみにこの出金金額も10万単位でしかできません。WealthNaviは円単位で出来るってのにまったく……。

と、こんなメールが来ました。

f:id:zhihong:20170916233517p:plain

最短で7営業日……。このスピード感ですよ。全ての不満の原因は。

人の金を7営業日も何に使ってるんですか?

その間にこちらは運用機会を失ってるんですけど。
これを見てもう残りの10万円も残さずに全て引き上げることにしました。

しかし……、

f:id:zhihong:20170916234921p:plain

出金中は解約作業(追加出金)に進めないではないですか!

本当になんなんですかね?

 

しばらくイライラが続きそうです……。

WealthNaviとTHEOの比較(一ヶ月目)

WealthNaviとTHEOを始めて一ヶ月が経ちました。

 

まずは市場の状況ですが、円安株高傾向にあります。

 為替:ドル円110円台

 日経平均:19,807.44 円

 NYダウ:22,203.48ドル

 

WealthNavi

円換算で+70,592円の利益が出ています。

ドル建てでも円建てでもかなり良い結果になっています。

f:id:zhihong:20170916230528p:plain

資産内訳ではAGG以外はプラスです。

AGGのマイナスも大したことありません。

f:id:zhihong:20170916230552p:plain

THEO

円換算で+3,965円。WealthNaviと比べるとパフォーマンスはでていませんが、為替の影響をモロに受けている印象です。ていうか、ほぼ為替ですねこれは。

そして相変わらず2営業日前の内容です。

f:id:zhihong:20170916230624p:plain

グロースは米国株が戻っています。

f:id:zhihong:20170916230647p:plain

インカムはほぼ全滅です。

f:id:zhihong:20170916230756p:plain

インフレヘッジは金が高いですね。

北朝鮮のミサイルが影響していると思います。

f:id:zhihong:20170916230815p:plain

総評

WealthNaviがいい感じです。銘柄数が少ないのはわかりやすいし、これで利益が出ているなら、分散投資としては必要十分だと思います。

THEOは今のところいいところがありません。銘柄数が多すぎるのはわかりにくいし、とにかくスピード感が無さすぎます。月曜朝に木曜の終値ベースの情報が表示されているなどありえません。それでもパフォーマンスが出ているなら我慢できますが、WealthNaviの方が成績がいいですからね。もちろんTHEOの方が良い結果となる局面はあるとは思いますが。

そして、ドル建てETFはやはり為替の影響大です。

円安のときに一度資産を非難して、円高になったらまた買いなおすとよいのかもしれません。できればそこまで自動でやってほしいのですが、現状ではそこまではやってくれないようです。でも、そこまでやりたいなら、自分でETFを買った方がよいでしょうね。

 

 

ラズパイのC#でbitFlyerの板を取得(Json.NETでデシリアライズ)~ビットコイン自動売買の準備~

「ラズパイのC#でbitFlyerの板を取得」の続きです。
今回はJson.NETを使ってbitFlyerの板データをC#のオブジェクトに変換してみます。
標準ライブラリでもJSON形式のデータを扱えますが、どうやら性能的にはJson.NETが優れているようなので、これを使うことにします。

Json.NETはこちらからダウンロードします。
www.newtonsoft.com


とりあえずDownloadボタンをクリックするとこちらのポップアップが開きます。
ダイレクトダウンロードを選択します。
f:id:zhihong:20170910222124p:plain
解凍して得られる"Bin/net45/Newtonsoft.Json.dll"が必要なdllです。
適当なディレクトリに置いておきます。


板のユーザモデルはこんな感じです。
仲値,買い気配配列,売り気配配列がメンバ変数になっています。
気配は価格とサイズをメンバ変数に持ったクラスです。

[JsonObject]
public class Board
{
    [JsonProperty("mid_price")]
    public string MidPrice { get; set; }

    [JsonProperty("bids")]
    public Quote[] Bids { get; set; }

    [JsonProperty("asks")]
    public Quote[] Asks { get; set; }

    [JsonObject]
    public class Quote
    {
        [JsonProperty("price")]
        public string Price { get; set; }

        [JsonProperty("size")]
        public string Size { get; set; }
    }
}


シリアライズ部分です。
responseがJSON形式の文字列です。

Board board = JsonConvert.DeserializeObject<Board>(response);


ソースコード全体はこんな感じになります。
最良気配から5本だけ表示するようにしてみます。

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;
using Newtonsoft.Json;

[JsonObject]
public class Board
{
    [JsonProperty("mid_price")]
    public string MidPrice { get; set; }

    [JsonProperty("bids")]
    public Quote[] Bids { get; set; }

    [JsonProperty("asks")]
    public Quote[] Asks { get; set; }

    [JsonObject]
    public class Quote
    {
        [JsonProperty("price")]
        public string Price { get; set; }

        [JsonProperty("size")]
        public string Size { get; set; }
    }
}

class Sample
{
    static readonly Uri endpointUri = new Uri("https://api.bitflyer.jp");

    public static async Task GetBoard()
    {
        var method = "GET";
        var path = "/v1/getboard";
        var query = "";

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage(new HttpMethod(method), path + query))
        {
            client.BaseAddress = endpointUri;
            var message = await client.SendAsync(request);
            var response = await message.Content.ReadAsStringAsync();

            Board board = JsonConvert.DeserializeObject<Board>(response);

            Console.WriteLine("mid_price: {0}", board.MidPrice);
            Console.WriteLine("asks");
            for(int i=0; i < board.Asks.Length; ++i)
            {
                Board.Quote quote = board.Asks[i];
                Console.WriteLine("    price: {0}, size: {1}", quote.Price, quote.Size);
                if (5 == i) break;
            }
            Console.WriteLine("bids");
            for(int i=0; i < board.Asks.Length; ++i)
            {
                Board.Quote quote = board.Bids[i];
                Console.WriteLine("    price: {0}, size: {1}", quote.Price, quote.Size);
                if (5 == i) break;
            }
        }
    }

    static void Main(string[] args)
    {
        GetBoard().Wait();
    }
}


コンパイル
リソースにNewtonsoft.Json.dllを追加指定します。

$ mcs getboard_json.cs -r:/usr/lib/mono/4.6.2-api/System.Net.Http.dll,/usr/lib/mono/4.6.2-api/Facades/System.Threading.Tasks.dll,./Newtonsoft.Json.dll


実行

$ ./getboard_json.exe
mid_price: 443180.0
asks
    price: 443299.0, size: 0.14522859
    price: 443399.0, size: 0.41834898
    price: 443400.0, size: 0.5607
    price: 443445.0, size: 0.00319999
    price: 443460.0, size: 0.083
    price: 443505.0, size: 0.8059
bids
    price: 443061.0, size: 0.1562
    price: 443002.0, size: 12.0
    price: 443001.0, size: 0.33477141
    price: 443000.0, size: 0.50839729
    price: 442603.0, size: 1.96
    price: 442510.0, size: 27.4
$

よさそうですね。

ラズパイのC#でbitFlyerの板を取得~ビットコイン自動売買の準備~

前回はラズパイで最新のC#(Mono)を実行できるよ整え、bitFlyerからmaket一覧を取得しました。 
zhihong.hatenablog.com

今回は板を取得してみたいと思います。

前回のコードを少し修正するだけです。


エディタを開いて

$ vi getboard.cs


こんな感じに書きます。

using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

class Sample
{
    static readonly Uri endpointUri = new Uri("https://api.bitflyer.jp");

    public static async Task GetBoard()
    {
        var method = "GET";
        var path = "/v1/getboard";
        var query = "";

        using (var client = new HttpClient())
        using (var request = new HttpRequestMessage(new HttpMethod(method), path + query))
        {
            client.BaseAddress = endpointUri;
            var message = await client.SendAsync(request);
            var response = await message.Content.ReadAsStringAsync();

            Console.WriteLine(response);
        }
    }

    static void Main(string[] args)
    {
        GetBoard().Wait();
    }
}


コンパイルします。

$ mcs getboard.cs -r:/usr/lib/mono/4.6.1-api/System.Net.Http.dll,/usr/lib/mono/4.6.1-api/Facades/System.Threading.Tasks.dll


実行です。

$ ./getmakets.exe


API PlaygroundでSubmitした時とは異なり、実際はダーッと出ますね。
BIDの先頭
f:id:zhihong:20170906232752p:plain

ASKの先頭
f:id:zhihong:20170906232833p:plain

末端
f:id:zhihong:20170906232904p:plain

正直ここまでは要らないですね。
最良気配から10本くらいで十分です。