iosの株価アプリで海外の銘柄がヒットしない問題は言語設定を変更すれば解決する

iPadにはデフォルトで株価アプリが入っている。銘柄や指数を登録すればその値動きを確認できる。

東証上場銘柄はもちろん、ニューヨーク証券取引所に上場している銘柄も登録できるうえ、デザインもスタイリッシュなので使っている。

銘柄登録には企業名やティッカーシンボルを使用するのだが、短いティッカーシンボルを持つ銘柄のなかには検索してもヒットせず、登録できないものがある。

このような銘柄はいくつかある*1。わかりやすいのはコカ・コーラ(KO)だった。

f:id:armik:20181108124430p:plain:w300

東証の銘柄ばかりが表示されるのがわかる。

ティッカーシンボルではなく、企業の正式名称を入力してもヒットしない。

f:id:armik:20181108124420p:plain:w300

ググっても同じような問題の報告がないため、試行錯誤していると、言語設定を変更することで解決することがわかった。

pc-karuma.net

設定→一般→言語と地域→iPadの使用言語と移動し、

iPadの使用言語」を英語に変える。

そして、株価アプリを起動すると

f:id:armik:20181108124425p:plain:w300

先頭に表示された。

登録した後に言語設定を日本語に戻せばよい。株価の登録銘柄は変更されない。

今回は米国株だったが、他の国の銘柄がヒットしない場合もその国の言語に変更すれば表示されるかもしれない。

*1:VTやTなど。ただ、短くてもヒットするものもある

紛らわしい財務指標をgraphvizで整理する

株を買っているため、少しはファイナンスの勉強をしようと本を読んでいる。

すると、なかなかの数の財務指標が出てくる。

財務諸表の理解もおぼつかないのに、その相互の関係まで考えていると頭がパンクしそうなので、見通しを良くするために指標同士の関係をまとめてみた。

dot言語を使うと、モノ同士の関係を箇条書きにするだけでそれらしい表を出力してくれるので便利だ。

結論からいうと、こんな図が得られた。

f:id:armik:20181023192711p:plain

当然全ての指標を網羅すると図が見にくくなるため、ある程度絞っている。1列目がパラメータである。

同じ辺から入っている値がその指標の計算に必要な量を表す。式変形によって別の指標で表される場合、矢印の入る辺を変えている。

この図から分かるのは計算に必要な量だけであり、計算方法(式の具体形)までは書いていない。

図に乗っている財務指標を簡単に紹介する。各々の意味や式変形の方法については割愛する。

なお、自己資本・株主資本・純資産は厳密には異なるが、ここでは同じもの(Equity)として扱う。

また、それぞれの指標の英語表記は複数あるため、意味に応じて各自で読み替えてほしい。

ROIC (Return On Invested Capital) 投下資本利益率

 \mathrm{ROIC} = \dfrac{営業利益(\mathrm{Operating\,income}) \times (1-実効税率(\mathrm{Effective\,tax\,rate}))}{有利子負債(\mathrm{Debt\,with\,interest})+純資産(\mathrm{Equity})}

Financial leverage 財務レバレッジ

 \mathrm{Financial\,levarage} = \dfrac{1}{自己資本比率(\mathrm{Capital\,ratio})}

Capital ratio 自己資本比率

 \mathrm{Capital\,ratio} = \dfrac{資産(\mathrm{Assets})}{純資産(\mathrm{Equity})}

Asset turnover 資産回転率

 \mathrm{Asset\,turnover} = \dfrac{売上高(\mathrm{Total\,revenue})}{資産(\mathrm{Assets})}

Sales profit margin 売上利益率

 \mathrm{Sales\,profit\,margin} = \dfrac{純利益(\mathrm{Net\,income})}{売上高(\mathrm{Total\,revenue})}

Operating cashflow margin 営業CFマージン

 \mathrm{Operating\,cashflow\,margin} = \dfrac{営業\mathrm{CF}(\mathrm{Oprating\,cashflow})}{売上高(\mathrm{Total\,revenue})}

BPS (Book value Per Share) 一株当たり純資産  \mathrm{BPS} = \dfrac{純資産(\mathrm{Equity})}{株価発行数(\mathrm{Outrtanding\,shares})}

EPS (Earnings Per Share) 一株当たり純利益

 \mathrm{BPS} = \dfrac{純利益(\mathrm{Net\,income})}{株価発行数(\mathrm{Outrtanding\,shares})}

Market capitalization 時価総額

 \mathrm{Market\,capitalization} = 株価(\mathrm{Stock\,price}) \times 株価発行数(\mathrm{Outrtanding\,shares})

ROA (Return On Assets) 資本収益率

 \mathrm{ROA} = \dfrac{純利益(\mathrm{Net\,income})}{資産(\mathrm{Assets})} = 売上利益率 \times 資産回転率

ROE (Return on Equity) 自己資本利益率

 \mathrm{ROE} = \dfrac{純利益(\mathrm{Net\,income})}{純資産(\mathrm{Equity})} = \mathrm{ROA} \times 財務レバレッジ

PBR (Price Book value Ratio) 株価純資産倍率

 \mathrm{PBR} = \dfrac{株価}{1株当たり純資産(\mathrm{BPS})}

PER (Price Earnings Ratio) 株価収益率

 \mathrm{PER} = \dfrac{時価総額}{純利益} = \dfrac{株価}{1株当たり純利益(\mathrm{EPS})}

補足

この図では株価はパラメータ(1列目の量)に入っている。

これは、投資家として現在の株価や経営状態を分析することを念頭において作ったためである。

当然、PERをパラメータとして株価を計算したり、他の指標をパラメータにするという方法(経営者的発想?)もある。

他にも多くの指標が紹介されているが、図がさらに混乱するのでやめておく。

画像ファイルのRとBを入れ替えるpythonのスクリプトを書いた

ある事情により、画像ファイルのRとBを入れ替える必要が出てきた。

調べてみると、pythonのpillowというパッケージを使うことで実現できるらしい。

Python 3.5 対応画像処理ライブラリ Pillow (PIL) の使い方 - Librabuch

Pythonの画像処理ライブラリPillow(PIL)の使い方 | note.nkmk.me

pillowのメソッドには、「ネガポジ反転」が含まれている。

これは0~255で表される各ピクセルのRGBの値を、255から引いた値(255の補数)に変換するという処理である。

例えば、あるピクセルのRGBの値がそれぞれ(0, 100, 200)だった場合、ネガポジ反転によってそのピクセルは(255, 155, 55)に変換される。

私が実現したいのはこの処理ではなく、(0, 100, 200)を(200, 100, 0)にする、というものだ。

このRGBの入れ替えはサポートされていないようだ*1

もっとも、複雑な処理は不要だった。試行錯誤した結果、

f:id:armik:20180921131516j:plain

この画像が(モデルはフリー素材アイドルの河村友歌さん)

f:id:armik:20180921131620p:plain

こうなった。

アバターのような青い肌に目が行くが、頭のリボンや背景の風船の色も変わっている。

ファンの方に怒られそうだが、これもアリな気がする。

スクリプトはこちら(numpyとpillowが必要)

from PIL import Image
import numpy as np

#オリジナルのファイル名(拡張子除く)
filename = 'Yuka'

#オリジナルがpngの場合
#im = Image.open(filename+'.png').convert('RGBA')

#オリジナルがjpgの場合
im = Image.open(filename+'.jpg')

#オリジナル画像の幅と高さ
width, height = im.size
      
#オリジナル画像と同じサイズのImageオブジェクトを作成
new_im = Image.new('RGBA', (width, height), (0,0,0,0))

im_pixels = []
for y in range(height):
    for x in range(width):
        # getpixel((x,y))で左からx番目,上からy番目のピクセルの色を取得し、img_pixelsに追加する
        im_pixels.append(im.getpixel((x,y)))

# あとで計算しやすいようにnumpyのarrayに変換しておく
im_pixels = np.array(im_pixels)        

for y in range(height):
    for x in range(width):
        temp = x+y*width
            
        # pngの場合(透過あり)
#        new_im.putpixel((x, y), (im_pixels[temp][2], im_pixels[temp][1],
#                        im_pixels[temp][0], im_pixels[temp][3]))
        
        # jpgの場合
        new_im.putpixel((x, y), (im_pixels[temp][1], im_pixels[temp][0],
                        im_pixels[temp][2]))

#作成した画像を出力
new_im.save(filename+'_reverse.png', quality=100)

元画像を読み込み、RGBを入れ替えて出力するだけである。

入出力のインターフェースは適当であるため、やりやすいように変更してもらいたい。

元画像がpngの場合、変換後のImageオブジェクトを'RGBA'として生成するとよい。

そうしなければ元画像の透過を反映させることができないためだ。

当然ながら、RとGの入れ替えなどもできる。

f:id:armik:20180921134755p:plain

ゲルにしか見えない。

*1:pillowのドキュメントを精査していないため本当にそうかは不明