數據獲取(期權數據)
本人從事領域為量化期權領域(皇冠上的明珠,真好聽,可是做起來,難度真是(滴-------------))。從最開始的手動從三大所復制粘貼期權數據,到現在爬蟲整理數據,再之后借助第三方獲取數據,這個歷程真的是無以復加。就想說(滴---------------------)。
不廢話,直接上干貨。(要求,復制我代碼可以拿過去就直接跑出和我一樣的結果出來。如果沒有,歡迎留言,一同克服難關。)
首先wind數據源獲取數據:
#導包
import pandas as pd
import numpy as np
from scipy.interpolate import interp1d
from WindPy import *
from datetime import timedelta
w.start()#獲取50數據并保存
_,df_price = w.wset("optiondailyquotationstastics","startdate=2020-06-01;enddate=2020-07-02;exchange=sse;windcode=510050.SH",usedf=True)
df_price.to_csv('option_price.csv')
_,df_con = w.wset("optioncontractbasicinfo","exchange=sse;windcode=510050.SH;status=all", usedf=True)
df_con.to_csv('info.csv')#修改數據并統一
df_price = pd.read_csv('option_price.csv', index_col=0, parse_dates=['date'], dtype={'option_code':str})
con_col = df_con.columns.values
con_col[0] = 'option_code'
df_con.columns = con_col
df_data = pd.merge(df_price, df_con, on='option_code')
df_data.to_csv('50info.csv')
然后是tushare數據源:
import numpy as np
import pandas as pd
import tushare as ts
ts.set_token('token')
pro = ts.pro_api()
import time
df = pd.DataFrame()
for i in range(10000000 , 20000000):dfi = pro.opt_daily(ts_code = str(i)+'.SH')time.sleep(6)df.append(dfi)
df.to_csv('D:/50.csv')
保存數據
本人使用的是SQL_Server,不知道就用這個代碼:
from sqlalchemy import create_engine
from scipy.interpolate import interp1d
import pymssql
#連接數據庫
conn = pymssql.connect(host = '.',user ='sa',password = 'test',database = 'pos',charset = 'utf8' )
#pos:數據庫名稱
engine = create_engine('mssql+pymssql://sa:test@127.0.0.1/pos')
#插入數據庫
data.to_sql(db_name,engine,index=False,if_exists='append')
#append:后面添加 #replace :覆蓋
#調用數據,本人習慣全部調用后再進行數據處理
df=pd.read_sql("select * from pos ",engine)
print(df)
使用MongoDB
from pymongo import MongoClient
import pandas as pd
client = MongoClient(host = '.',port =27017)#獲取數據庫
test_db= client['db']
#查看庫下所有的表格
print(test_db.collection_names(include_system_collctions=False))
#獲取表格
collection == test_db['sheet']
collection.insert_many(df)
#獲取數據并保存到本地
s = pd.DataFrame(list(collection.find()))
s.to_csv('s.csv')