相似公司股票搬砖

来源:https://uqer.io/community/share/5555cbfaf9f06c6c7404f8ae

自从牛市来了,小老弟也去开了个户,平时常在雪球上找找票.

前段时间听到两只股票:川投能源,国投电力.

这两个公司是一对好基友, 他们的主要资产是一家水电公司的48%,52%股份, 两只股价常在两倍之间变动.

于是出现很多人在这两只股票之间搬砖, 本帖就来验证一下搬砖的效果, 看看结果会不会令人大吃一惊呢?

  1. # 首先我们简单看下两只股票的走势.
  2. import seaborn as sns
  3. import pandas as pd
  4. import matplotlib.pylab as pylab
  5. begin_date, end_date = '20130101', '20150514'
  6. ct,gt = '600674', '600886'
  7. ct = DataAPI.MktEqudAdjGet(ticker=ct, beginDate=begin_date, endDate=end_date)
  8. gt = DataAPI.MktEqudAdjGet(ticker=gt, beginDate=begin_date, endDate=end_date)
  9. liangtou =pd.DataFrame()
  10. liangtou['川投股价'] = ct.closePrice
  11. liangtou['国投股价'] = gt.closePrice
  12. liangtou['川投国投股价比例'] = ct.closePrice / gt.closePrice
  13. liangtou.plot( figsize=(16,10))
  14. pylab.legend([u'川投股价',u'国投股价', u'川投国投股价比例'], prop=font)
  15. <matplotlib.legend.Legend at 0x754ce90>

相似公司股票搬砖 - 图1

重点来了, 利用量化实验室的strategy模式, 咱来编写一个策略.

  • 起始建仓: 全仓600886
  • 起始日期: 2014-12-01
  • 结束日期: 2015-05-14
  • 起始资金: 10w
  • 调仓频率: 1天
  • 调仓信号: 川投能源收盘价/国投能源收盘价*100%-200% 之差如果大于1%, 卖出886买入774, 如果小于-1%,则卖出774买入886
  1. start = '2014-12-01' # 回测起始时间
  2. end = '2015-05-14' # 回测结束时间
  3. benchmark = '600886.XSHG' # 策略参考标准
  4. universe = ['600674.XSHG', '600886.XSHG'] # 证券池
  5. capital_base = 100000 # 起始资金
  6. refresh_rate = 1 # 调仓频率,即每 refresh_rate 个交易日执行一次 handle_data() 函数
  7. ct_stk, gt_stk = universe
  8. def initialize(account): # 初始化虚拟账户状态
  9. pass
  10. def handle_data(account): # 每天执行一次
  11. if len(account.universe) < 2: # 有停牌的话, 就跳过.
  12. return
  13. ct_price, gt_price = account.referencePrice[ct_stk], account.referencePrice[gt_stk]
  14. percent = int(100*ct_price/gt_price-200)
  15. #第一次, 满仓买入600886
  16. if not account.valid_secpos:
  17. order(gt_stk, capital_base/gt_price)
  18. return
  19. if percent>1 and account.secpos.get(ct_stk, 0): #买886, 卖774
  20. amount = account.secpos.get(ct_stk, 0)
  21. print account.current_date, '买886,数量:%s, 卖774,数量:%s' %(amount*ct_price/gt_price, amount)
  22. order(ct_stk, -amount)
  23. order(gt_stk, amount*ct_price/gt_price)
  24. elif percent<-1 and account.secpos.get(gt_stk, 0): #卖886, 买774
  25. amount = account.secpos.get(gt_stk, 0)
  26. print account.current_date, '卖886,数量:%s, 买774,数量:%s' %(amount, amount*ct_price/gt_price)
  27. order(gt_stk, -amount)
  28. order(ct_stk, amount*gt_price/ct_price)

相似公司股票搬砖 - 图2

  1. 2014-12-26 00:00:00 886,数量:13698, 774,数量:27112.3136095
  2. 2015-02-03 00:00:00 886,数量:14327.3103448, 774,数量:6897.0
  3. 2015-02-26 00:00:00 886,数量:14308.0, 774,数量:28103.5159729
  4. 2015-03-05 00:00:00 886,数量:14717.8178257, 774,数量:7284
  5. 2015-04-10 00:00:00 886,数量:14717, 774,数量:28881.7914485
  6. 2015-04-14 00:00:00 886,数量:15404.6484375, 774,数量:7385.0
  7. 2015-04-21 00:00:00 886,数量:15390.0, 774,数量:29629.81316
  8. 2015-04-24 00:00:00 886,数量:16527.4811393, 774,数量:7993
  9. 2015-05-05 00:00:00 886,数量:16527, 774,数量:31706.5606061
  10. 2015-05-08 00:00:00 886,数量:17669.7435897, 774,数量:8614

这结果真是让老弟目瞪口呆啊, 赶紧搬起.

该策略只是比较的昨日收盘价, 如果考虑日间搬砖, 简直不敢想了[口水].