#本文分析牛市看張價差和熊市看跌價差的組合策略效果:#牛市看漲價差採用買入平值看漲期權,賣出較高行權價的看漲期權#熊市看跌價差組合採用買入平值看跌期權,賣出較低行行權價的看跌期權#####實際上還有很多不同的方式構造價差組合###################################import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom lib.qiquan import*############################################################################################讀取50etf標的df=pd.read_excel('50etf_fund.xlsx')df.index=df['tradeDate']#擷取交易日期date=list(df['tradeDate'])####################################################################profit=[]for i in range(1,len(date)): day=date[i] etf_price_close=float(df[df['tradeDate'].isin([day])]['close']) etf_price_open=float(df[df['tradeDate'].isin([day])]['open']) secID_data_low=list(get_low(df,day)['secID']) #print data #擷取近月代碼 near_c_low=secID_data_low[-2] near_p_low=secID_data_low[-1] ##### secID_data_high=list(get_high(df,day)['secID']) #print data #擷取近月代碼 near_c_high=secID_data_high[-2] near_p_high=secID_data_high[-1] #擷取近月價格 secID_data_near=list(get_near(df,day)['secID']) #print data #擷取近月代碼 near_c_near=secID_data_near[-2] near_p_near=secID_data_near[-1] ##### option_c_data_low=DataAPI.MktOptdGet(tradeDate=day, secID=near_c_low,optID=u"",ticker=u"",beginDate=u"",endDate=u"",field=u"",pandas="1") option_p_data_low=DataAPI.MktOptdGet(tradeDate=day,secID=near_p_low, optID=u"",ticker=u"",beginDate=u"",endDate=u"",field=u"",pandas="1") option_c_data_high=DataAPI.MktOptdGet(tradeDate=day, secID=near_c_high,optID=u"",ticker=u"",beginDate=u"",endDate=u"",field=u"",pandas="1") option_p_data_high=DataAPI.MktOptdGet(tradeDate=day,secID=near_p_high, optID=u"",ticker=u"",beginDate=u"",endDate=u"",field=u"",pandas="1") option_c_data_near=DataAPI.MktOptdGet(tradeDate=day, secID=near_c_near,optID=u"",ticker=u"",beginDate=u"",endDate=u"",field=u"",pandas="1") option_p_data_near=DataAPI.MktOptdGet(tradeDate=day,secID=near_p_near, optID=u"",ticker=u"",beginDate=u"",endDate=u"",field=u"",pandas="1") buy_condition=get_up(df,date,i,20) #print buy_condition if buy_condition==False: money=(float(option_p_data_near['closePrice'])-float(option_p_data_near['openPrice'])-float(option_c_data_low['closePrice'])+float(option_c_data_low['openPrice']))*10000 profit.append(money) if buy_condition==True: money=(float(option_c_data_near['closePrice'])-float(option_c_data_near['openPrice'])-float(option_c_data_high['closePrice'])+float(option_c_data_high['openPrice']))*10000 profit.append(money)all_profit=pd.Series(profit).cumsum()
註:代碼僅供參考,請勿直接使用,有bug.另外沒有考慮手續約的問題。