標籤:

礦工代碼篇:Python根據70天交易日計算波動率

#encoding: utf8import tushare as tsimport osimport csvimport timeimport pandas as pdimport mathimport numpy as npfrom scipy.stats import normdef sigma(code): # 定義交易天數 n = 70 difflntotal = [] ##定義時間 today = str(time.strftime(%Y-%m-%d, time.localtime(time.time()))) df = ts.get_k_data(code, start=2017-01-01, end=today, ktype=d) for i in range(n): # 前日收盤價 xclose = df.iloc[i - n - 1].close # 昨日收盤價 yclose = df.iloc[i - n].close # 計算對數 lnxclose = math.log(xclose, math.e) lnyclose = math.log(yclose, math.e) # 計算對數差並傳入數組 diffln = lnyclose - lnxclose difflntotal.append(diffln) # print(xclose,yclose,lnxclose,lnyclose,diffln) #print(difflntotal) #昨日收盤價 yclose_default=df.iloc[-1].close # 計算標準差 stdclose = np.std(difflntotal) # 計算volitality volitality = stdclose * 100 * math.sqrt(256) #print(stdclose, volitality) return yclose_default,volitality#計算B-S定價公式def bs(code,month,rate): #計算volitality sig=sigma(code) vol=sig[1]/100 yclose=sig[0] #定義默認值 s現股價格 k執行價格 t周期 r利率 s=100 k=100 t=month/12 r=rate #計算B-S D1 #D1=(math.log(s/k,math.e)+(r+np.square(vol)/2)*t)/(vol*np.sqrt(t)) #計算B-S D2 #D2=D1-vol*np.sqrt(t) #計算 詢價 #call=s*norm.cdf(D1)-s*math.exp(-r*t)*norm.cdf(D2) #計算 OUT價 #out=k*math.exp(-r*t)*norm.cdf(-D2)-s*norm.cdf(-D1) #計算估價 #call_fix=call/1.13 #返回收盤價、波動率、1月報價、2月報價、3月報價 return yclose,vol##上市3000家公司list_csv=csv.reader(open(/usr/local/bin/csvtestlist.csv))##定義文件時間todayformat=str(time.strftime(%Y%m%d,time.localtime(time.time())))filename_20d=/usr/local/bin/stockvol+todayformat+.txt#每家公司最終結果##計算每家公司的volitalityfor row in list_csv: #rowpub=row[0].zfill(6) 不足6位以0補齊 #print(rowpub) #print(row) try: #輸入股票code,周期month,利率10%~12% bs_result = bs(row[0],1,0.12) except: default=0 row.append(bs_result[0]) row.append(default) print(row) else: row.append(bs_result[0]) row.append(bs_result[1]) print(row) #保存每條公司vol數據 out=open(filename_20d,a) #csv_write=csv.writer(out,dialect=excel) #csv_write.writerow(row) out.write(
+str(row))

推薦閱讀:

敲敲級簡單的鑒別H圖片的小程序
《Django By Example》第六章 中文翻譯
轉行python是機器學習還是前端?
python如何調用matlab的腳本?
Python入門——針對零基礎學習者的資料推薦

TAG:金融 | Python |