スキップしてメイン コンテンツに移動

[Python]ポートフォリオの達人ランキング取得プログラム

今日は、投資ブログで公開している三菱UFJ投信主催の「投資にチャレンジ!!ポートフォリオの達人」から毎日更新される運用成績を取得するプログラムを作りました。これまで毎日コンテストの個人ページからコピー&ペーストして作成していた記事の成績部分をプログラムを実行するだけで作成できます。

■投資ブログの記事
この記事の作成を効率化します。
http://mockuninvestment.blogspot.jp/2013/06/201367.html

■コマンド実行方法
取得したい参加者の個人ページのURLをプログラムに渡してあげるだけ。

python muam_contest.py http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1

■出力内容
コマンド入力後、Enterを押して実行すると以下のフォーマットが出力されます。

2013/6/7更新 ポートフォリオの達人ランキング

==========
ランキング(6/7更新):198位
評価額:100,357円
リターン:0.47%
リスク:10.63%
リターン ÷ リスク:0.04(0.04435225290)
==========
http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1

あとはブログに張り付けるだけです。投稿用のアドレスにメール送信するプログラムと組み合わせれば、完全自動化できてしまいますね。

■ソース
#!/usr/local/bin/python
#coding: utf-8

from bs4 import BeautifulSoup
import urllib2,re,unicodedata,sys

template=u"""2013/%(date)s更新 ポートフォリオの達人ランキング

==========
ランキング(%(date)s更新):%(rank)s
評価額:%(amount)s
リターン:%(ret)s
リスク:%(risk)s
リターン ÷ リスク:%(riskreturnratio)s
==========
%(url)s"""

def PostCreater(url):
    param={}
    param['url']=url
    bs=BeautifulSoup(urllib2.urlopen(param['url']).read())
    bsdate=bs.find('h2',{'class':'ranking'})
    bsother=bs.find('table',{'class':'ranking'}).find_all(['th','td'])

    param['date']=re.sub(u'月','/',unicodedata.normalize('NFKC',bsdate.text.encode('sjis')[10:16].decode('sjis')))
    param['rank']=bsother[1].text
    if param['rank']=='':
        # 1~3位までは、順位が文字列ではなく画像なので、画像のalt属性から順位を取得します。
        param['rank']=bs.find('th',{'rowspan':'2','class':'rank'}).find('img')['alt']
    param['amount']=bsother[15].text
    param['ret']=bsother[11].text
    param['risk']=bsother[13].text
    param['riskreturnratio']=bsother[9].text

    print template % param

if __name__=='__main__':
    '''
    コマンドラインで以下のように実行する
    "python muam_contest.py http://contest.muam.jp/app/ranking/detail?dsp=eac8d83669d6cca1"
    '''
    PostCreater(sys.argv[1])

コメント

このブログの人気の投稿

[Mac]Time Machineのバックアップ先をWindows共有フォルダに設定する

こんばんは。もっくんです。 2台あったWindowsのデスクトップを1台にまとめるついでに、ずっと放置していたMacのバックアップ環境を構築してみました。Finderでコピペするだけでいいんですが、どうせなら「Mac全体を自動的にバックアップします。」という謳い文句のTime Machineを使いたい。 Apple純正のTime CapsuleやUSBの外付けHDDという手もあったんですが、ノートの機動性を落としたくなかったし、なによりタダでできそうなWindows共有フォルダにネットワーク越しにバックアップする方法を取ることにしました。 実際の流れは下記のようになります。 ネットワーク共有フォルダを作成する 空のディスクイメージを作成する ネットワーク共有フォルダにディスクイメージをコピーする ネットワーク共有フォルダのディスクイメージをマウントする マウントしたディスクイメージをTime Machineのバックアップ先に指定する 1.ネットワーク共有フォルダを作成する この手順はそこまで面倒ではないので、簡単な手順だけ。 Windows全体の設定でファイル共有を有効にする(Windowsで作業) Macと共有(Macから見えるように)したいフォルダを作成する(Windowsで作業) 共有したいフォルダに共有設定をする(Windowsで作業) 共有フォルダに接続(Macで作業) 詳細はこちらの記事が画像付きでわかりやすい。 http://blog.goo.ne.jp/beosound/e/7d6d0d0a8f76035f880001eda06c4247 2.空のディスクイメージを作成する いわばこのディスクイメージがバックアップ先のHDDの代わりとなる。 アプリケーション > ユーティリティ > ディスクユーティリティを起動 画面上部の ファイル > 新規 > 空のディスクイメージをクリック 設定画面の各欄は以下のように設定 名前: TimeMachineVolume(なんでもよい) 保存先: デスクトップ(ローカルのわかりやすい場所) ボリューム名: TimeMachineVolume(なんでもよい) ボリュームサイズ: カスタム ...

[Python]個別銘柄の時系列データをGoogle Financeから取得するプログラム

今日書いたのはこれ。 Google Finance から証券コードを指定して日別の価格情報を取得するプログラムです。 米国市場に上場している銘柄であればCSVでダウンロードでますが、日本の銘柄はできなかったので作りました。 多くの人はYahoo!Japanから取得しているようなので、あえてGoogle Financeから取得してみました。 ちなみに使えるのは東証に上場している銘柄のみです。(おそらく) このプログラムと 日経225構成銘柄一覧取得プログラム を組み合わせれば、日経225構成銘柄の時系列データが取得できてしまいます。 #!/usr/local/bin/python # -*- coding:utf-8 -*- from BeautifulSoup import BeautifulSoup import urllib2,re,datetime,sys class googleFinance2CSV(object): def __init__(self,ticker): ''' 引数で渡されたticker(=証券コード)の時系列データを Google Financeから取得してCSV形式で保持する CSVの列は'Date','Open','High','Low','Close','Volume' ''' self.ticker = ticker self.url = 'http://www.google.com/finance/historical?q=%s&num=200' % str(self.ticker) self.csv = str() soup = BeautifulSoup(urllib2.urlopen(self.url)) tablesoup = soup.find("table", {"class":"gf-table historical_price"}) for trsoup in tablesoup.findAll("tr...

[Python][Redis]日経225構成銘柄 2011/08/26時点 相関係数ランキング(直近120日間)

本日の日経225構成銘柄相関係数ランキングをお知らせします。 通貨ペア同様、以下の3つの相関係数ランキングを公開します。  1,正の相関TOP20  2,負の相関TOP20  3,低相関TOP20 まずは正の相関が観測されたTOP20の組み合わせです。 -- 正の相関TOP20 -- 1位 8404 みずほ信 / 8411 みずほFG : 0.9839 2位 6952 カシオ / 6767 ミツミ : 0.9832 3位 9101 郵船 / 9107 川崎汽 : 0.9814 4位 8604 野村 / 9104 商船三井 : 0.98 5位 9104 商船三井 / 9107 川崎汽 : 0.977 6位 5201 旭硝子 / 9104 商船三井 : 0.9765 7位 9101 郵船 / 9104 商船三井 : 0.976 8位 1306 TOPIX連動型上場投資信託 / 1311 TOPIXCore30連動型上場投資信託 : 0.9756 9位 9502 中部電 / 9503 関西電 : 0.9752 10位 9007 小田急 / 9008 京王 : 0.9747 11位 8316 三井住友FG / 8411 みずほFG : 0.9739 12位 8604 野村 / 9107 川崎汽 : 0.9725 13位 6758 ソニー / 6767 ミツミ : 0.9718 14位 6767 ミツミ / 7003 三井造 : 0.969 15位 5214 日電硝 / 8035 東エレク : 0.9688 16位 6857 アドテスト / 4902 コニカミノル : 0.968 17位 9104 商船三井 / 1311 TOPIXCore30連動型上場投資信託 : 0.9676 18位 8601 大和 / 8606 みずほ証 : 0.9676 19位 8252 丸井G / 4324 電通 : 0.9665 20位 4901 富士フイルム / 6479 ミネベア : 0.9662 次に負の相関が観測されたTOP20の組み合わせです。 -- 負の相関TOP20 -- 1位 3436 SUMCO / 9766 コナミ : -0.8821 2位 6301 コマツ / 9766 コナミ : -0.8289 3位 4902 コニカミノル / 4689 ヤフー : -0.826 4位 5...