HS300ETF套利(上)

来源:https://uqer.io/community/share/56599d1ef9f06c6c8a91ada4

新股民入市时,一般都会收到一句忠告:“买ETF吧!”。

对于大部分散户而言,这句话十分刺耳,但是却无比正确。

假设来了:如果定投HS300ETF,那么从510300ETF基金上市以来,收益如何呢?

  1. df = DataAPI.MktFunddAdjGet(ticker='510300',field='tradeDate,closePrice')
  2. print '涨幅:%s%%' %(100*df.closePrice.iloc[-1] / df.closePrice.iloc[0]-100)
  3. df.head().append(df.tail())
  4. 涨幅:45.1420890937%
tradeDateclosePrice
02012-05-282.6040
12012-05-292.6440
22012-05-302.6360
32012-05-312.6300
42012-06-012.6300
8482015-11-233.9869
8492015-11-243.9901
8502015-11-254.0142
8512015-11-263.9953
8522015-11-273.7795

可以看到,三年多涨幅高达45%,这还是在经历了股灾后的收益。

不费心不费力,就可以大幅跑赢宝宝。

不过值得注意的是,如果买在牛市高点,那就要套牢了。

也许你要问了,这个东西,确实是很省心,而且也享受了大盘上涨带来的红利,但是这个收益,咱还能不能再提高点呢?

答案当然是肯定的。

目前市场上,挂钩HS300指数的ETF基金有好几款,其中流通性最好的就是沪市的510300和深市的159919。我的策略思路是:

两只ETF均挂钩HS300指数,估值透明,当A折价大于B时,卖出B买入A,反之同理。

直接上代码:

  1. from CAL.PyCAL import *
  2. start = '2015-01-01' # 回测起始时间
  3. end = '2015-11-26' # 回测结束时间
  4. benchmark = 'HS300' # 策略参考标准
  5. universe = ['510300.XSHG', '159919.XSHE'] # 证券池,支持股票和基金
  6. sh300, sz300 = universe
  7. capital_base = 100000 # 起始资金
  8. freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测
  9. commission = Commission(buycost=0.00015, sellcost=0.00015)
  10. refresh_rate = 1 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,若freq = 'm'时间间隔为分钟
  11. cal = Calendar('China.SSE')
  12. def initialize(account): # 初始化虚拟账户状态
  13. pass
  14. def handle_data(account): # 每个交易日的买入卖出指令
  15. # 有停牌的话,今天就跳过。
  16. if len(account.universe) < 2: return
  17. last_date = cal.advanceDate(account.current_date, '-1B').strftime('%Y%m%d')
  18. try:
  19. # 获取两只基金昨日收盘时的折价率
  20. sh300_df = DataAPI.MktFunddGet(ticker=u"510300",beginDate=last_date,endDate=last_date,field=u"discountRatio",pandas="1")
  21. sz300_df = DataAPI.MktFunddGet(ticker=u"159919",beginDate=last_date,endDate=last_date,field=u"discountRatio",pandas="1")
  22. discount_sh = sh300_df.discountRatio[0]
  23. discount_sz = sz300_df.discountRatio[0]
  24. except:
  25. return
  26. # 搬搬搬
  27. if discount_sh - discount_sz > 0.002:
  28. order_pct_to(sh300, 0.99)
  29. order_pct_to(sz300, 0)
  30. elif discount_sz - discount_sh > 0.002:
  31. order_pct_to(sh300, 0)
  32. order_pct_to(sz300, .99)

HS300ETF套利(上) - 图1

效果看着还可以吧。

这个策略还比较粗糙,而且市场容量有限,权当抛砖引玉。

有心人可以再研究交流。

有机会会再写一篇(下),做一些更细节的测试。

本文不做任何买入建议,后果概不负责!!!