心ゆく日並

辛さを辛味に、苦しみを苦味に転じら れればこの日々も味わい深い

Python プログラム

Pythonで米国FFレートと金利を取得する方法

更新日:

ども♪マコトです。

前回の米国の債権金利の逆イールドで株価下落は本当か?で作成した図はPythonでデータを取得し、作成したのでPythonのプログラムを記載します。

以下のプログラムを動かしていただければ、FFレートと米国債の金利がIR_DTと言うデータベースに格納されます。

取得したデータは一旦、「C:\data」のフォルダに格納するので「C:\data」を作成してください。

また、私の環境はProxyを通しているのでroxyを通す必要のない環境の方は

# プロキシの設定 
Con = Conn.Connect() os.environ["http_proxy"] = Con.http_proxy() 
os.environ["https_proxy"] = Con.https_proxy()

を削除してください。

# -*- coding: utf-8 -*-
#!/usr/bin/env python
import mysql.connector as sqlc
import csv
import sys
import time
import requests
from contextlib import closing
import os
import Connect as Conn
try:
# 実行時間を測るStart
start = time.time()
#保存先ファイル名
file_name = r"C:\data\FRB_H15.csv"
# プロキシの設定
Con = Conn.Connect()
os.environ["http_proxy"] = Con.http_proxy()
os.environ["https_proxy"] = Con.https_proxy()
# 米国金利
URL = "https://www.federalreserve.gov/datadownload/Output.aspx?rel=H15&series=bf17364827e38702b42a58cf8eaa3f78&lastobs=&from=&to=&filetype=csv&label=omit&layout=serieslist"
response = requests.get(URL, stream=True)
# ファイルの保存
if response.status_code == 200:
f = open(file_name, 'wb')
f.write(response.content)
f.close()
# 編集したいファイル(元ファイル)を開く
file = open(file_name,"r")
# 書き出し用のファイルを開く
out_file = open(r"C:\data\FRB_H15_Modify.csv","w")
# 元ファイルのレコード部分をreadlinesメソッドで全行を読み取る
lines = file.readlines()
# for文で1行ずつ取得
for line in lines:
if(line[-2:]==",\n" or line[-4:]==",ND\n"):
pass
else:
# ダブルコーテーションでくくる
word = line.split(',')
line = '"' + word[0].lstrip("H15/H15/").rstrip("_N.B") + '",' + word[1] + ',' + word[2]
# 書き出し用のファイルに出力
out_file.write(line)
# 2つのファイルを閉じる
file.close()
out_file.close()
# 編集したファイルを開く
csv_file = open(r"C:\data\FRB_H15_Modify.csv", "r", encoding="utf_8", errors="", newline="" )
#リスト形式
Modifydata = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\n", quotechar='"', skipinitialspace=True)
connect = sqlc.connect(
user = Con.user(),
password = Con.password(),
host = Con.host(),
database = Con.database(),
charset = Con.charset()
)
cursor = connect.cursor()
#cursor.execute('LOAD DATA "C:\data\FRB_H15_Modify.csv" INTO TABLE IR_TS FIELDS TERMINATED BY "," LINES TERMINATED BY "\n"')
query = "truncate table IR_DT"
cursor.execute(query)
query = "INSERT INTO IR_DT (TICKER,DATE,DATA) VALUES (%s, %s, %s)"
cursor.executemany(query, Modifydata)
except sqlc.Error as error:
connect.rollback()
print ("エラー",error)
except Exception:
e = sys.exc_info()[1]
print("エラー",e.args)
else:
cursor.close()
connect.commit()
connect.close()
# 編集したファイルを閉じる
csv_file.close()
finally:
# 実行時間を測るEnd
elapsed_time = time.time() - start
print ("処理時間:{0}".format(elapsed_time) + "[sec]")
try:
# 実行時間を測るStart
start = time.time()
file_name = r"C:\data\FF_Rate.csv"
# プロキシの設定
#上で行っているのでやらない
# FFレート
URL = "https://www.federalreserve.gov/datadownload/Output.aspx?rel=H15&series=8e83f7f17c5cea4d190d85ae6737639f&lastobs=&from=&to=&filetype=csv&label=omit&layout=serieslist"
response = requests.get(URL, stream=True)
# ファイルの保存
if response.status_code == 200:
f = open(file_name, 'wb')
f.write(response.content)
f.close()
# 編集したいファイル(元ファイル)を開く
file = open(file_name,"r")
# 書き出し用のファイルを開く
out_file = open(r"C:\data\FF_Rate_Modify.csv","w")
# 元ファイルのレコード部分をreadlinesメソッドで全行を読み取る
lines = file.readlines()
# for文で1行ずつ取得
for line in lines:
if(line[-2:]==",\n" or line[-4:]==",ND\n"):
pass
else:
# ダブルコーテーションでくくる
word = line.split(',')
line = '"' + word[0].lstrip("H15/H15/").rstrip("_N.WW") + '",' + word[1] + ',' + word[2]
# 書き出し用のファイルに出力
out_file.write(line)
# 2つのファイルを閉じる
file.close()
out_file.close()
# 編集したファイルを開く
csv_file = open(r"C:\data\FF_Rate_Modify.csv", "r", encoding="utf_8", errors="", newline="" )
#リスト形式
Modifydata = csv.reader(csv_file, delimiter=",", doublequote=True, lineterminator="\n", quotechar='"', skipinitialspace=True)
connect = sqlc.connect(
user = Con.user(),
password = Con.password(),
host = Con.host(),
database = Con.database(),
charset = Con.charset()
)
cursor = connect.cursor()
query = "INSERT INTO IR_DT (TICKER,DATE,DATA) VALUES (%s, %s, %s)"
cursor.executemany(query, Modifydata)
except sqlc.Error as error:
connect.rollback()
print ("エラー",error)
except Exception:
e = sys.exc_info()[1]
print("エラー",e.args)
else:
cursor.close()
connect.commit()
connect.close()
# 編集したファイルを閉じる
csv_file.close()
finally:
# 実行時間を測るEnd
elapsed_time = time.time() - start
print ("処理時間:{0}".format(elapsed_time) + "[sec]")
以下のテーブルに入るように作成しました。
DROP TABLE IR_DT;
create table IR_DT(
TICKER varchar(30) not null,
DATE datetime not null,
DATA decimal(25, 15) not null,
PRIMARY KEY(TICKER,DATE)
)
ALTER TABLE IR_DT CONVERT TO CHARACTER SET utf8mb4;

何かわからないことがありましたら連絡ください。

できる限り答えます。







お・す・す・め・!

1

目次1 マコトのプロフィール1.1 自己紹介1.2 タイトルの由来1.3 サブタイトルの由来1.4 趣味1.5 ほしいも ...

-Python, プログラム

Copyright© 心ゆく日並 , 2019 AllRights Reserved.