之前直接用pandas庫,然后to_excel(),結果直接將原始數據直接覆蓋,幸虧有備份。(友善提醒,做數據處理之前,先將數據本地備份一份,確認完全沒有問題,然后還是備份一份 ,再進行實盤操作,否則…)
import pandas as pd
import numpy as np
import akshare as ak
from openpyxl import load_workbook,Workbook
import openpyxl
import akshare as ak
import datetime
Date = datetime.datetime.today().strftime('%Y-%m-%d')
df = pd.read_excel('期權模型.xlsx','參數輸入')
jy = df.iloc[len(df)-1,1]
cjy = df.iloc[len(df)-1,2]
jrt = df.iloc[len(df)-1,3]-1
cjrt = df.iloc[len(df)-1,4]-1
#手動輸入部分
HV45 = float(input('輸入45天HV'))
HV50 = float(input('輸入50天HV'))
HV55 = float(input('輸入55天HV'))AHV=np.average([HV45,HV50,HV55])#從akshare獲取數據輸入
get_shfe_option_daily_one,get_shfe_option_daily_two = ak.get_shfe_option_daily(trade_date=today, symbol="天膠期權")
ru = get_shfe_option_daily_two
ru = ru[['合約系列','成交量','隱含波動率']]
ru = ru.iloc[[1,5],:].Tjvix=ru.iloc[2,0]
cjvix=ru.iloc[2,1]
jvol=ru.iloc[1,0]
cjvol=ru.iloc[1,1]
#方案2
filepath = r'橡膠期權量化模型.xlsx'
df = pd.read_excel(filepath,sheet_name='參數輸入')
row = len(df.DATE.unique())wb = openpyxl.load_workbook(filepath)
ws = wb.worksheets[0]ws.cell(row = row+1,column=1).value = Date
ws.cell(row = row+1,column=2).value = jy
ws.cell(row = row+1,column=3).value = cjy
ws.cell(row = row+1,column=4).value = jrt
ws.cell(row = row+1,column=5).value = cjrt
ws.cell(row = row+1,column=6).value = HV45
ws.cell(row = row+1,column=7).value = HV50
ws.cell(row = row+1,column=8).value = HV55
ws.cell(row = row+1,column=9).value = AHV
ws.cell(row = row+1,column=10).value = jvix
ws.cell(row = row+1,column=11).value = cjvix
ws.cell(row = row+1,column=12).value = jvol
ws.cell(row = row+1,column=13).value = cjvol
wb.save(filepath)