2018年11月11日日曜日

株式投資の時間分散は意味があるか

分散投資は投資の基本とされている。確かに、 1 社の株式に依存するのは危険だ。東電やJALに資金のほとんどをつぎ込んで失敗したという記事は検索すればたくさんヒットする。実際、 2017 年の Google 社の株価の標準偏差は 8.4 % 程なのに対して、米国主要企業 500 社の平均である S&P 500 の標準偏差は 4.6% 程である。  2017 年に Google 社の業績が急激に改善したり悪化したというわけではないが、それでも S&P 500 のほうが2倍近く安定した数値となっている。この差は Google 社の業績に大きな変動があったならばより顕著になるだろう。

このように 1社に投資するより数社以上、またはインデックスに投資するほうがリターンは安定することは半ば自明である。とはいえ  500 社の平均である S&P 500 ですら、 2017 年の標準偏差は 4.6% あった。平均との差が標準偏差 σ 内に収まる可能性 は 68% 、標準偏差の2倍 2σ の内で収まる確率は 95% であるから、2017年のランダムな日で売却した場合、 32% の確率で 2017 年の平均リターンを 4.6% 以上上回る、あるいは下回る。また 5% の確率で 9.2% 以上上回る、または下回ることになる。すなわち 1000 万円の平均リターンが期待される場合、売却する日の選び方で、 ±92万円程度の差は普通に出るといえる。1億円なら 920 万円程度の差は出る。コツコツためてきた株式を 500 社に分散したとしても、売却のタイミングの偶然によってこれだけの差が平気ででる。これは忍びないので、どうにかさらにリスクを軽減することはできないだろうか。

そこで思いつくのが時間分散という手法である。これは、1回にすべてを売却するのではなく、数回に分けて売却することによって、たまたま株価の安い日に売却してしまうリスクを軽減するという趣旨のものである。極端な例を言えば、 2017年のランダムな1日で売却するかわりに、毎日 1/365 ずつ (正確には毎営業日ずつだが) 売却すれば、必ず 2017 年の平均リターンが得られることになる。これは、リスクを減らす上で一見意味があるように思える。しかし、実際に計算してみたところ、そう単純な話でもないようなのである。

計算の内容はこうだ。A さんは、実際に資金が必要な日に、保有する S&P 500 (に連動する ETF) を全額売却する。 B さんは、資金が必要な日の1年前 (52週前) から、毎週 1/52 ずつ売却する。資金が必要な日が2013年1月から2017年12月までのいずれかの日だったとして、AさんとBさんの得られる資金の標準偏差はどのようになるだろうか。計算の結果は、 Aさんの標準偏差は 15.0% だったのに対し、 Bさんの標準偏差は 14.7% となった。驚いたことに、二人の標準偏差の差はほとんどなかったのである。

最初これの意味することがよくわからなかったが、よくよく考えてみれば当たり前のことである。すなわち、日々の株価の変動は確かに大きく見えるけれども、 2013年から2017年の5年という長いスパンで見たときは、長期的な変動のほうがはるかに大きい。これは実際のチャートを見るとよくわかる。52週平均線が大きく5年で動いているところ、 日々の変動はそれに比べると小さい。5年スパンで見ると、1年間の時間分散にかけたコストと手間は、残念ながら標準偏差を 15.0% から 14.7% に下げるほどの価値しかない。

ならばより長期で分散すれば良いと考えるかもしれないが、結局それもさらに長期から見ると価値のない行動となる。また、より長期にすると、 S&P500 の上昇トレンドを考えたときに、標準偏差以前に平均リターンが大きく下がってしまう可能性が高く、そもそも株式投資をする意義とは何だったのか、ということになってしまう。

自分なりの結論。時間の分散は長期スパンで見るとリスク回避に対してほぼ無価値である。そもそも株式に投資すると決めた以上 年間で 10%、 5年で  30% 程度の変動は許容する必要がある。株式とはそういうものであり、時間の分散でそのリスクを大きく減らすことはできない。

2017年1月29日日曜日

Raspberry Pi の GPIO が物故 2回目

前回のエントリで GPIO 11 (SCLK) が壊れた Raspberry pi だが、今度は別の個体で GPIO 6 が high から変えられなくなっていることが判明。

$ gpio mode -g 6 out
$ gpio write -g 6 0
$ gpio readall
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI | ALT0 | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO | ALT0 | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK | ALT0 | 0 | 23 || 24 | 1 | OUT  | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | OUT  | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |  OUT | 1 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | OUT  | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

テスターではハイインピーダンス状態になっているように思われる。例によっていつ壊れたか不明。

追記: /boot/config.txt を書き換えて GPIO 6 を内部プルダウンする設定にすると、値を low にすることはできたが、今度は逆に low から変えられなくなる。外部からの入力によっても 内部からの出力によっても変えることはできない。

2016年12月22日木曜日

Raspberry Pi の GPIO が物故

動かない自作基板をデバッグすること1日、 Raspberry pi の GPIO 11 (SCLK) が high から変えられなくなっていることが判明。

$ gpio mode -g 11 out
$ gpio write -g 11 0
$ gpio readall
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 |     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     |
 |   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5v      |     |     |
 |   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     |
 |   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 0 | IN   | TxD     | 15  | 14  |
 |     |     |      0v |      |   |  9 || 10 | 1 | IN   | RxD     | 16  | 15  |
 |  17 |   0 | GPIO. 0 |   IN | 0 | 11 || 12 | 0 | IN   | GPIO. 1 | 1   | 18  |
 |  27 |   2 | GPIO. 2 |   IN | 0 | 13 || 14 |   |      | 0v      |     |     |
 |  22 |   3 | GPIO. 3 |   IN | 0 | 15 || 16 | 0 | IN   | GPIO. 4 | 4   | 23  |
 |     |     |    3.3v |      |   | 17 || 18 | 0 | IN   | GPIO. 5 | 5   | 24  |
 |  10 |  12 |    MOSI |   IN | 0 | 19 || 20 |   |      | 0v      |     |     |
 |   9 |  13 |    MISO |   IN | 0 | 21 || 22 | 0 | IN   | GPIO. 6 | 6   | 25  |
 |  11 |  14 |    SCLK |  OUT | 1 | 23 || 24 | 1 | IN   | CE0     | 10  | 8   |
 |     |     |      0v |      |   | 25 || 26 | 1 | IN   | CE1     | 11  | 7   |
 |   0 |  30 |   SDA.0 |   IN | 1 | 27 || 28 | 1 | IN   | SCL.0   | 31  | 1   |
 |   5 |  21 | GPIO.21 |   IN | 1 | 29 || 30 |   |      | 0v      |     |     |
 |   6 |  22 | GPIO.22 |   IN | 0 | 31 || 32 | 0 | IN   | GPIO.26 | 26  | 12  |
 |  13 |  23 | GPIO.23 |   IN | 0 | 33 || 34 |   |      | 0v      |     |     |
 |  19 |  24 | GPIO.24 |   IN | 0 | 35 || 36 | 0 | IN   | GPIO.27 | 27  | 16  |
 |  26 |  25 | GPIO.25 |   IN | 0 | 37 || 38 | 0 | IN   | GPIO.28 | 28  | 20  |
 |     |     |      0v |      |   | 39 || 40 | 0 | IN   | GPIO.29 | 29  | 21  |
 +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
 | BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |
 +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

テスターでも high のままであることを確認。いつ壊してしまったのだろう。。。

2016年10月18日火曜日

MSI B150M で Wake-on-LAN

MSI 製マザーボード B150M 使用のマシンで Wake-on-LAN するときに意外とハマったので、いつか誰かの役に立つかもしれないと思い記録しておく。

  • 電プチすると Wake-on-LAN できない。正常終了すること。以前のマザーボードではたぶんこんなことはなかった。
  • BIOS の更新が必要。出荷時のバージョンではマジックパケットを送ってないのに、それどころか LAN ケーブルを抜いていても、勝手に起動する。
  • 以上に注意すれば、 BIOS の設定は、 Resume by PCI-E device を Enabled にするだけで OK
  • ethtool の設定は不要。デフォルトで on

Proxy ARP で2つのサブネットをつなぐ

前回、 ICMP redirect を使って ローカル用サブネットから VPN 用サブネットに経路制御しているという話を書いた。 これはやや不安定ながらも動いていたのだが、最近の Windows や Mac では ICMP redirect の受け取りが無効になっているため、この方法は使えなくなって困っていた。

昨日、何か手はないかと Linux のマニュアルを眺めていたら Proxy ARP という方法を発見。 ローカル用のサブネットにあるマシンに対して、 VPN 用のサブネットにあるマシンが同一サブネットにあると誤解させた上で、ルータ B に代理 ARP 応答をさせることで、 VPN 宛のパケットを ルータ B に吸収させるという仕組みである。


これで最近のクライアントでも VPN 内のマシンにアクセスできるようになった。

2016年10月16日日曜日

Linux: IP forwarding を有効にすると ICMP redirect が無効になる

タイトルに書いたとおりなんですが、Linux のデフォルトでは、 IP forwarding を有効にすると ICMP redirect の受け取りが無効になるようです。

Linux の sysctl のマニュアルをよく読めば書いてあるのですが、ぐぐってもあまりこの症例が出てこず、久しぶりに tcpdump とにらめっこしました。

自宅にはローカル用と VPN 用の2つのサブネットが存在していて、 ローカル用のサブネットに属するマシンは、インターネットにつなぐにはルータ A 、 VPN 用のサブネットにつなぐにはルータ B と話さなければならない構成になっており、そのために ICMP redirect を使っています。ルータ A をデフォルトゲートウェイとしておいて、 VPN サブネットにつなぎたいという要求がきたときにルータ B が経路だと応答するわけです。


Windows / Mac ではすでに ICMP redirect の受け取りはデフォルトで無効になっているようで、現代ではそれに頼らずルータ A がパケットをまるっとルータ B に転送したほうが良いようですが、行きと帰りの経路が違うせいかルータ A は最初の SYN パケット以外を転送してくれず、 TCP ではこの手は使えません。良い解決法はないものか…。(似たようなことを言っているブログを見つけました。)

2016/10/18 追記: Proxy ARP による解決策を見つけました。

重症プラティその後

1月25日の投稿で重症だと思っていたプラティは、なんとその後、妊娠中であったことが判明。




しっかり目を凝らさないと見えないですが、可愛いです!!!

以上、2月14日の写真でした。随分と投稿をサボってしまいました。いまではすっかり大人になっています(汗)