<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # [ 50ETF 期權] 1. 歷史成交持倉和 PCR 數據 > 來源:https://uqer.io/community/share/5604937ff9f06c597665ef34 在本文中,我們將通過量化實驗室提供的數據,計算上證50ETF期權的歷史成交持倉和PCR數據,并在最后利用PCR建立一個簡單的擇時策略 ```py from CAL.PyCAL import * import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib import rc rc('mathtext', default='regular') import seaborn as sns sns.set_style('white') from matplotlib import dates ``` ## 1. 期權數據接口 有關上證50ETF期權數據,量化實驗室有三個接口,分別對應于不同的功能 + `DataAPI.OptGet`: 可以獲取已退市和上市的所有期權的基本信息 + `DataAPI.MktOptdGet`: 拿到歷史上某一天或某段時間的期權成交行情信息 + `DataAPI.MktTickRTSnapshotGet`: 此為高頻數據,獲取期權最新市場信息快照 在接下來對于期權的數據分析中,我們將使用這三個API提供的數據,以下為API使用示例,具體API的詳情可以查看幫助文檔 ```py # 使用DataAPI.OptGet,拿到已退市和上市的所有期權的基本信息 opt_info = DataAPI.OptGet(optID='', contractStatus=[u"DE", u"L"], field='', pandas="1") opt_info.head(3) ``` | | secID | optID | secShortName | tickerSymbol | exchangeCD | currencyCD | varSecID | varShortName | varTicker | varExchangeCD | ... | contMultNum | contractStatus | listDate | expYear | expMonth | expDate | lastTradeDate | exerDate | deliDate | delistDate | | --- | --- | | 0 | 510050C1503M02200.XSHG | 10000001 | 50ETF購3月2200 | 510050C1503M02200 | XSHG | CNY | 510050.XSHG | 華夏上證50ETF | 510050 | XSHG | ... | 10000 | DE | 2015-02-09 | 2015 | 3 | 2015-03-25 | 2015-03-25 | 2015-03-25 | 2015-03-26 | 2015-03-25 | | 1 | 510050C1503M02250.XSHG | 10000002 | 50ETF購3月2250 | 510050C1503M02250 | XSHG | CNY | 510050.XSHG | 華夏上證50ETF | 510050 | XSHG | ... | 10000 | DE | 2015-02-09 | 2015 | 3 | 2015-03-25 | 2015-03-25 | 2015-03-25 | 2015-03-26 | 2015-03-25 | | 2 | 510050C1503M02300.XSHG | 10000003 | 50ETF購3月2300 | 510050C1503M02300 | XSHG | CNY | 510050.XSHG | 華夏上證50ETF | 510050 | XSHG | ... | 10000 | DE | 2015-02-09 | 2015 | 3 | 2015-03-25 | 2015-03-25 | 2015-03-25 | 2015-03-26 | 2015-03-25 | ``` 3 rows × 23 columns ``` ```py #使用DataAPI.MktOptdGet,拿到歷史上某一天的期權成交信息 opt_mkt = DataAPI.MktOptdGet(tradeDate='20150921', field='', pandas="1") opt_mkt.head(2) ``` | | secID | optID | ticker | secShortName | exchangeCD | tradeDate | preSettlePrice | preClosePrice | openPrice | highestPrice | lowestPrice | closePrice | settlPrice | turnoverVol | turnoverValue | openInt | | --- | --- | | 0 | 510050C1512M02100.XSHG | 10000368 | 510050C1512M02100 | 50ETF購12月2100 | XSHG | 2015-09-21 | 0.2069 | 0.1994 | 0.1955 | 0.2087 | 0.1955 | 0.2062 | 0.2062 | 21 | 43115 | 457 | | 1 | 510050P1512M01950.XSHG | 10000369 | 510050P1512M01950 | 50ETF沽12月1950 | XSHG | 2015-09-21 | 0.1037 | 0.0999 | 0.1000 | 0.1073 | 0.0905 | 0.0905 | 0.0927 | 272 | 261112 | 868 | ```py # 獲取期權最新市場信息快照 opt_mkt_snapshot = DataAPI.MktOptionTickRTSnapshotGet(optionId=u"",field=u"",pandas="1") opt_mkt_snapshot[opt_mkt_snapshot.dataDate=='2015-09-22'].head(2) ``` | | optionId | timestamp | auctionPrice | auctionQty | dataDate | dataTime | highPrice | instrumentID | lastPrice | lowPrice | ... | askBook_price1 | askBook_volume1 | askBook_price2 | askBook_volume2 | askBook_price3 | askBook_volume3 | askBook_price4 | askBook_volume4 | askBook_price5 | askBook_volume5 | | --- | --- | ``` 0 rows × 37 columns ``` ## 2. 期權歷史成交持倉數據圖 ```py # 華夏上證50ETF收盤價數據 secID = '510050.XSHG' begin = Date(2015, 2, 9) end = Date.todaysDate() fields = ['tradeDate', 'closePrice'] etf = DataAPI.MktFunddGet(secID, beginDate=begin.toISO().replace('-', ''), endDate=end.toISO().replace('-', ''), field=fields) etf['tradeDate'] = pd.to_datetime(etf['tradeDate']) etf = etf.set_index('tradeDate') etf.tail(2) ``` | | closePrice | | --- | --- | | tradeDate | | | 2015-09-23 | 2.180 | | 2015-09-24 | 2.187 | 統計50ETF期權歷史成交量和持倉量信息 ```py # 計算歷史一段時間內的50ETF期權持倉量交易量數據 def getOptHistVol(beginDate, endDate): optionVarSecID = u"510050.XSHG" cal = Calendar('China.SSE') cal.addHoliday(Date(2015,9,3)) cal.addHoliday(Date(2015,9,4)) dates = cal.bizDatesList(beginDate, endDate) dates = map(Date.toDateTime, dates) columns = ['callVol', 'putVol', 'callValue', 'putValue', 'callOpenInt', 'putOpenInt', 'nearCallVol', 'nearPutVol', 'nearCallValue', 'nearPutValue', 'nearCallOpenInt', 'nearPutOpenInt', 'netVol', 'netValue', 'netOpenInt', 'volPCR', 'valuePCR', 'openIntPCR', 'nearVolPCR', 'nearValuePCR', 'nearOpenIntPCR'] hist_opt = pd.DataFrame(0.0, index=dates, columns=columns) hist_opt.index.name = 'date' # 每一個交易日數據單獨計算 for date in hist_opt.index: date_str = Date.fromDateTime(date).toISO().replace('-', '') try: opt_data = DataAPI.MktOptdGet(secID=u"", tradeDate=date_str, field=u"", pandas="1") except: hist_opt = hist_opt.drop(date) continue opt_type = [] exp_date = [] for ticker in opt_data.secID.values: opt_type.append(ticker[6]) exp_date.append(ticker[7:11]) opt_data['optType'] = opt_type opt_data['expDate'] = exp_date near_exp = np.sort(opt_data.expDate.unique())[0] data = opt_data.groupby('optType') # 計算所有上市期權:看漲看跌交易量、看漲看跌交易額、看漲看跌持倉量 hist_opt['callVol'][date] = data.turnoverVol.sum()['C'] hist_opt['putVol'][date] = data.turnoverVol.sum()['P'] hist_opt['callValue'][date] = data.turnoverValue.sum()['C'] hist_opt['putValue'][date] = data.turnoverValue.sum()['P'] hist_opt['callOpenInt'][date] = data.openInt.sum()['C'] hist_opt['putOpenInt'][date] = data.openInt.sum()['P'] near_data = opt_data[opt_data.expDate == near_exp] near_data = near_data.groupby('optType') # 計算近月期權(主力合約): 看漲看跌交易量、看漲看跌交易額、看漲看跌持倉量 hist_opt['nearCallVol'][date] = near_data.turnoverVol.sum()['C'] hist_opt['nearPutVol'][date] = near_data.turnoverVol.sum()['P'] hist_opt['nearCallValue'][date] = near_data.turnoverValue.sum()['C'] hist_opt['nearPutValue'][date] = near_data.turnoverValue.sum()['P'] hist_opt['nearCallOpenInt'][date] = near_data.openInt.sum()['C'] hist_opt['nearPutOpenInt'][date] = near_data.openInt.sum()['P'] # 計算所有上市期權: 總交易量、總交易額、總持倉量 hist_opt['netVol'][date] = hist_opt['callVol'][date] + hist_opt['putVol'][date] hist_opt['netValue'][date] = hist_opt['callValue'][date] + hist_opt['putValue'][date] hist_opt['netOpenInt'][date] = hist_opt['callOpenInt'][date] + hist_opt['putOpenInt'][date] # 計算期權看跌看漲期權交易量(持倉量)的比率: # 交易量看跌看漲比率,交易額看跌看漲比率, 持倉量看跌看漲比率 # 近月期權交易量看跌看漲比率,近月期權交易額看跌看漲比率, 近月期權持倉量看跌看漲比率 # PCR = Put Call Ratio hist_opt['volPCR'][date] = round(hist_opt['putVol'][date]*1.0/hist_opt['callVol'][date], 4) hist_opt['valuePCR'][date] = round(hist_opt['putValue'][date]*1.0/hist_opt['callValue'][date], 4) hist_opt['openIntPCR'][date] = round(hist_opt['putOpenInt'][date]*1.0/hist_opt['callOpenInt'][date], 4) hist_opt['nearVolPCR'][date] = round(hist_opt['nearPutVol'][date]*1.0/hist_opt['nearCallVol'][date], 4) hist_opt['nearValuePCR'][date] = round(hist_opt['nearPutValue'][date]*1.0/hist_opt['nearCallValue'][date], 4) hist_opt['nearOpenIntPCR'][date] = round(hist_opt['nearPutOpenInt'][date]*1.0/hist_opt['nearCallOpenInt'][date], 4) return hist_opt ``` ```py begin = Date(2015, 2, 9) end = Date.todaysDate() opt_hist = getOptHistVol(begin, end) opt_hist.tail(2) ``` | | callVol | putVol | callValue | putValue | callOpenInt | putOpenInt | nearCallVol | nearPutVol | nearCallValue | nearPutValue | ... | nearPutOpenInt | netVol | netValue | netOpenInt | volPCR | valuePCR | openIntPCR | nearVolPCR | nearValuePCR | nearOpenIntPCR | | --- | --- | | date | | | | | | | | | | | | | | | | | | | | | | | 2015-09-23 | 50093 | 42910 | 37809117 | 41517121 | 269395 | 144256 | 16603 | 11494 | 6217923 | 10409963 | ... | 50576 | 93003 | 79326238 | 413651 | 0.8566 | 1.0981 | 0.5355 | 0.6923 | 1.6742 | 0.3738 | | 2015-09-24 | 29352 | 23474 | 21696859 | 22161955 | 146224 | 98350 | 19785 | 19339 | 15693989 | 14549046 | ... | 55217 | 52826 | 43858814 | 244574 | 0.7997 | 1.0214 | 0.6726 | 0.9775 | 0.9270 | 0.8012 | ``` 2 rows × 21 columns ``` ```py ## ----- 50ETF期權成交持倉數據圖 ----- fig = plt.figure(figsize=(10,5)) fig.set_tight_layout(True) ax = fig.add_subplot(111) font.set_size(16) lns1 = ax.plot(opt_hist.index, opt_hist.netOpenInt, 'grey', label = u'OpenInt') lns2 = ax.plot(opt_hist.index, opt_hist.netVol, '-r', label = 'TurnoverVolume') ax2 = ax.twinx() lns3 = ax2.plot(etf.index, etf.closePrice, '-', label = 'ETF closePrice') lns = lns1+lns2+lns3 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc=2) ax.grid() ax.set_xlabel(u"tradeDate") ax.set_ylabel(r"TurnoverVolume / OpenInt") ax2.set_ylabel(r"ETF closePrice") plt.title('50ETF Option TurnoverVolume / OpenInt') plt.show() ``` ![](https://box.kancloud.cn/2016-07-30_579cbdb9814d7.png) 從上圖可以看出: + 期權的交易量基本上是50ETF的反向指標 + 五月之前的瘋牛中,期權日交易量處于低位 + 六月中下旬之后的暴跌時間段,期權日交易量高位運行,是不是創個新高 + 8月17日開始的這一周中,大盤風雨飄搖,50ETF探底時,期權交易量創了新高 + 目前來看,期權交易仍然活躍,但是交易量較之前數據有所回落,應該是大盤企穩的節奏 ## 3. 期權的PCR比例 期權分看跌和看漲兩種,買入兩種不同的期權,代表著對于后市的不同看法,因此可以引進一個量化指標,來表示對后市看衰與看漲的力量的強弱: + PCR = Put Call Ratio + PCR可以是關于成交量的PCR,可以是持倉量的PCR,也可以是成交額的PCR ```py begin = Date(2015, 2, 9) end = Date.todaysDate() opt_hist = getOptHistVol(begin, end) opt_hist.tail(2) ``` | | callVol | putVol | callValue | putValue | callOpenInt | putOpenInt | nearCallVol | nearPutVol | nearCallValue | nearPutValue | ... | nearPutOpenInt | netVol | netValue | netOpenInt | volPCR | valuePCR | openIntPCR | nearVolPCR | nearValuePCR | nearOpenIntPCR | | --- | --- | | date | | | | | | | | | | | | | | | | | | | | | | | 2015-09-23 | 50093 | 42910 | 37809117 | 41517121 | 269395 | 144256 | 16603 | 11494 | 6217923 | 10409963 | ... | 50576 | 93003 | 79326238 | 413651 | 0.8566 | 1.0981 | 0.5355 | 0.6923 | 1.6742 | 0.3738 | | 2015-09-24 | 29352 | 23474 | 21696859 | 22161955 | 146224 | 98350 | 19785 | 19339 | 15693989 | 14549046 | ... | 55217 | 52826 | 43858814 | 244574 | 0.7997 | 1.0214 | 0.6726 | 0.9775 | 0.9270 | 0.8012 | ``` 2 rows × 21 columns ``` 首先,我們來看看成交量PCR和ETF價格走勢的關系 ```py ## ---------------------------------------------- ## 50ETF期權PC比例數據圖 fig = plt.figure(figsize=(10,8)) fig.set_tight_layout(True) # ------ 成交量PC比例 ------ ax = fig.add_subplot(211) lns1 = ax.plot(opt_hist.index, opt_hist.volPCR, color='r', label = u'volPCR') ax2 = ax.twinx() lns2 = ax2.plot(etf.index, etf.closePrice, '-', label = 'closePrice') lns = lns1+lns2 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc=3) ax.set_ylim(0, 2) hfmt = dates.DateFormatter('%m') ax.xaxis.set_major_formatter(hfmt) ax.grid() ax.set_xlabel(u"tradeDate(Month)") ax.set_ylabel(r"PCR") ax2.set_ylabel(r"ETF ClosePrice") plt.title('Volume PCR') # ------ 近月主力期權成交量PC比例 ------ ax = fig.add_subplot(212) lns1 = ax.plot(opt_hist.index, opt_hist.nearVolPCR, color='r', label = u'nearVolPCR') ax2 = ax.twinx() lns2 = ax2.plot(etf.index, etf.closePrice, '-', label = 'closePrice') lns = lns1+lns2 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc=3) ax.set_ylim(0, 2) hfmt = dates.DateFormatter('%m') ax.xaxis.set_major_formatter(hfmt) ax.grid() ax.set_xlabel(u"tradeDate(Month)") ax.set_ylabel(r"PCR") ax2.set_ylabel(r"ETF ClosePrice") plt.title('Dominant Contract Volume PCR') <matplotlib.text.Text at 0x6470990> ``` ![](https://box.kancloud.cn/2016-07-30_579cbdb99fb51.png) 成交量數據圖中,上圖為全體期權的成交量PCR,下圖為近月期權的成交量PCR: + 上下兩圖中,PCR的曲線走勢基本相似,因為期權交易中,近月期權最為活躍 + ETF價格走勢,和PCR走勢有比較明顯的負相關性 其次,我們來看看持倉量PCR和ETF價格走勢的關系 ```py ## ---------------------------------------------- ## 50ETF期權PC比例數據圖 fig = plt.figure(figsize=(10,8)) fig.set_tight_layout(True) # ------ 持倉量PC比例 ------ ax = fig.add_subplot(211) lns1 = ax.plot(opt_hist.index, opt_hist.openIntPCR, color='r', label = u'volPCR') ax2 = ax.twinx() lns2 = ax2.plot(etf.index, etf.closePrice, '-', label = 'closePrice') lns = lns1+lns2 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc=3) ax.set_ylim(0, 2) hfmt = dates.DateFormatter('%m') ax.xaxis.set_major_formatter(hfmt) ax.grid() ax.set_xlabel(u"tradeDate(Month)") ax.set_ylabel(r"PCR") ax2.set_ylabel(r"ETF ClosePrice") plt.title('OpenInt PCR') # ------ 近月主力期權持倉量PC比例 ------ ax = fig.add_subplot(212) lns1 = ax.plot(opt_hist.index, opt_hist.nearOpenIntPCR, color='r', label = u'nearVolPCR') ax2 = ax.twinx() lns2 = ax2.plot(etf.index, etf.closePrice, '-', label = 'closePrice') lns = lns1+lns2 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc=3) ax.set_ylim(0, 2) hfmt = dates.DateFormatter('%m') ax.xaxis.set_major_formatter(hfmt) ax.grid() ax.set_xlabel(u"tradeDate(Month)") ax.set_ylabel(r"PCR") ax2.set_ylabel(r"ETF ClosePrice") plt.title('Dominant Contract OpenInt PCR') <matplotlib.text.Text at 0x69e5990> ``` ![](https://box.kancloud.cn/2016-07-30_579cbdb9c9bcb.png) 持倉量數據圖中,上圖為全體期權的持倉量PCR,下圖為近月期權的持倉量PCR: + 上下兩圖中,PCR的曲線走勢基本相似,因為期權交易中,近月期權最為活躍 + 實際上,近月期權十分活躍,使得近月期權的PCR系數變動往往比整體期權PCR變化更劇烈 + ETF價格走勢,和PCR走勢并無明顯的負相關性 + 相反,ETF價格的低點,往往PCR也處于低點,這其實說明:股價大跌之后大家會選擇平倉看跌期權 最后,我們來看看成交額PCR和ETF價格走勢的關系 ```py ## ---------------------------------------------- ## 50ETF期權PC比例數據圖 fig = plt.figure(figsize=(10,8)) fig.set_tight_layout(True) # ------ 成交額PC比例 ------ ax = fig.add_subplot(211) lns1 = ax.plot(opt_hist.index, opt_hist.valuePCR, color='r', label = u'turnoverValuePCR') ax2 = ax.twinx() lns2 = ax2.plot(etf.index, etf.closePrice, '-', label = 'closePrice') lns = lns1+lns2 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc=3) #ax.set_ylim(0, 2) ax.set_yscale('log') hfmt = dates.DateFormatter('%m') ax.xaxis.set_major_formatter(hfmt) ax.grid() ax.set_xlabel(u"tradeDate(Month)") ax.set_ylabel(r"PCR") ax2.set_ylabel(r"ETF ClosePrice") plt.title('Turnover Value PCR') # ------ 近月主力期權成交額PC比例 ------ ax = fig.add_subplot(212) lns1 = ax.plot(opt_hist.index, opt_hist.nearValuePCR, color='r', label = u'turnoverValuePCR') ax2 = ax.twinx() lns2 = ax2.plot(etf.index, etf.closePrice, '-', label = 'closePrice') lns = lns1+lns2 labs = [l.get_label() for l in lns] ax.legend(lns, labs, loc=3) #ax.set_ylim(0, 2) ax.set_yscale('log') hfmt = dates.DateFormatter('%m') ax.xaxis.set_major_formatter(hfmt) ax.grid() ax.set_xlabel(u"tradeDate(Month)") ax.set_ylabel(r"PCR") ax2.set_ylabel(r"ETF ClosePrice") plt.title('Dominant Contract Turnover Value PCR') <matplotlib.text.Text at 0x70ce890> ``` ![](https://box.kancloud.cn/2016-07-30_579cbdb9ed549.png) 成交額數據圖中,上圖為全體期權的成交額PCR,下圖為近月期權的成交額PCR: + 上下兩圖中,PCR的曲線走勢基本相似,因為期權交易中,近月期權最為活躍 + 實際上,近月期權PCR指數十分活躍,使得近月期權的PCR系數變動往往比整體期權PCR變化更劇烈 + 相對于成交量和持倉量PCR指標,此處的成交額PCR指標峰值往往很高,上圖中近月期權的成交額PCR最大值甚至接近30,這是由于市場恐慌時候,看跌期權成交量本身就大,而交易量大往往將看跌期權的價格大幅抬高 + ETF價格走勢,和PCR走勢具有明顯的負相關性 4. 基于期權成交額PCR的擇時策略 根據成交額PCR和ETF價格走勢明顯的負相關性,我們建立一個非常簡單的擇時策略: + PCR下降時,市場情緒趨穩定,全倉買入50ETF + PCR上升時,恐慌情緒蔓延,清倉觀望 ```py start = datetime(2015, 2, 9) # 回測起始時間 end = datetime(2015, 9, 21) # 回測結束時間 hist_pcr = getOptHistVol(start, end) start = datetime(2015, 2, 9) # 回測起始時間 end = datetime(2015, 9, 21) # 回測結束時間 benchmark = '510050.XSHG' # 策略參考標準 universe = ['510050.XSHG'] # 股票池 capital_base = 100000 # 起始資金 commission = Commission(0.0,0.0) refresh_rate = 1 def initialize(account): # 初始化虛擬賬戶狀態 account.fund = universe[0] def handle_data(account): # 每個交易日的買入賣出指令 fund = account.fund # 獲取回測當日的前一天日期 dt = Date.fromDateTime(account.current_date) cal = Calendar('China.IB') cal.addHoliday(Date(2015,9,3)) cal.addHoliday(Date(2015,9,4)) last_day = cal.advanceDate(dt,'-1B',BizDayConvention.Preceding) #計算出倒數第一個交易日 last_last_day = cal.advanceDate(last_day,'-1B',BizDayConvention.Preceding) #計算出倒數第二個交易日 last_day_str = last_day.strftime("%Y-%m-%d") last_last_day_str = last_last_day.strftime("%Y-%m-%d") # 計算買入賣出信號 try: # 拿取PCR數據 pcr_last = hist_pcr['valuePCR'].loc[last_day_str] pcr_last_last = hist_pcr['valuePCR'].loc[last_last_day_str] long_flag = True if (pcr_last - pcr_last_last) < 0 else False except: long_flag = True if long_flag: approximationAmount = int(account.cash / account.referencePrice[fund] / 100.0) * 100 order(fund, approximationAmount) else: # 賣出時,全倉清空 order_to(fund, 0) ``` ![](https://box.kancloud.cn/2016-07-30_579cbdba1ff1e.jpg) 回測結果如上,需要注意的是: + 期權掛牌時間較短,回測時間短,加上期權市場參與人數少,故而回測結果可能然并卵 + 但是嚴格根據PCR走勢買賣50ETF,還是可以比較好的避開市場大跌的風險 + 不管怎樣,PCR可以作為一個擇時指標來討論 + 除了成交額PCR,還可以通過成交量、持倉量、近月成交額等等PCR建立擇時策略
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看