こんにちはーー
アメリカ株の情報を自動で取得したら楽そうだなー
と思ったのでPythonでプログラムを少しずつ作成しています。
PER
EPS
売上高
コンセンサス予想
の情報を取得しようと思います。
PERとEPSは既にプログラムを作成しているので、今回は売上高とコンセンサス予想です
PERとEPSの記事は↓
概要
作成したプログラムの説明をする前に概要を記載します。
今回は一例として”CRWD”の情報を出力しています。
出力したのは
Earnings EstimateCurrent
Earnings EstimateNext
Revenue EstimateCurrent
Revenue EstimateNext
next earnings date
です。
動画も作成しています。
役立つ情報発信を心掛けていますのでチャンネル登録してくれたら嬉しいです。
出力結果
以下2つの結果を出力しています。
CSV
CSV形式で出力しています
Earnings EstimateCurrent Qtr. (Oct 2021) | Earnings EstimateNext Qtr. (Jan 2022) | Revenue EstimateCurrent Qtr. (Oct 2021) | Revenue EstimateNext Qtr. (Jan 2022) | next earnings date | |
CRWD | 0.1 | 0.16 | 363.48M | 399.88M | 11/30/2021 19:59 |
png
表をpngとしても出力しています
プログラム
作成したプログラム全文です。
#部分にざっとした説明を記載しています
import yahoo_fin.stock_info as si import pandas as pd from collections import defaultdict import pandas as pd import matplotlib.pyplot as plt import numpy as np from IPython.core.display import display from textwrap import wrap #検索する銘柄の指定" search='CRWD' #メインの処理 以下のプログラムで情報を辞書形式で取得している watchlist = defaultdict(list) watchlist['search'] =[search] data = defaultdict(lambda: defaultdict(dict)) for k, v in watchlist.items(): for ticker in v: analysis = si.get_analysts_info(ticker) data[k][ticker]['next earnings date'] = si.get_next_earnings_date(ticker) for name in ['Earnings Estimate', 'Revenue Estimate']: data[k][ticker][name + analysis[name].columns[1]] = analysis[name].at[1, analysis[name].columns[1]] data[k][ticker][name + analysis[name].columns[2]] = analysis[name].at[1, analysis[name].columns[2]] res = defaultdict(dict) for key in watchlist.keys(): res[key] = pd.DataFrame(data[key]) res[key].sort_values(by = 'next earnings date', axis = 'columns', inplace=True) res[key] = res[key].T # メインの処理は終わり # データフレームへの変換 df =pd.DataFrame.from_dict(res[key]) # CSVファイルの出力 df.to_csv('./test.csv', mode='w', header=True, index=True) # 表の作成 plt.rcParams["figure.figsize"] = [18, 10] plt.rcParams["figure.autolayout"] = True fig, axs = plt.subplots(1, 1) data = np.random.random((10, 3)) axs.axis('tight') axs.axis('off') the_table = axs.table(cellText=df.values, colLabels=df.columns,loc='center',colColours =["palegreen"] * 10,bbox=[0,0,1,1]) the_table.auto_set_font_size(False) the_table.set_fontsize(12) the_table = [ '\n'.join(wrap(l, 3)) for l in df.columns] # pngの出力 plt.savefig('table.png') # 表を表示 plt.show()
ではまた!
次は今まで作ったプログラムを利用して、パワポに情報をまとめるプログラムを作成したいと思います!
コメント