大家也许有过这种经历,关注的某只股票突发利好消息预判会连续涨停,赶紧打开炒股软件准备下单,发现这只股票已经涨停了,而且是几十万手的大单封死,根本没机会下手,随后几天只能看着股票一个涨停接一个涨停的一路上涨,后悔下手太慢。这种情况还有办法上车吗,散户一般能想到的办法都没戏,但是可以试试下面这种办法,吃不到肉但也许能喝口汤。
在介绍之前我们先了解下什么是ETF套利?ETF指的是交易型开放式指数基金,是一种在交易所上市交易,并且份额可以变动的一种开放式基金,它的手续与股票是完全一样的。由于一级市场和二级市场同时存在,不可避免会出现价格无法同步的显现,这种情况下就给一些机构跨市场套利提供了条件,而套利交易会让套利机会消失,让两个市场的价格差异得到控制,从而保证一级和二级市场价格的一致性。因为一级市场只能是机构投资者参与,所以我们一般的投资者是没办法进行ETF套利的。
那我们怎么参与涨停股票的交易呢,办法很简单,可以找出持有我们要买入的涨停股的ETF基金,再看看基金持有的股票数量占基金的比重,找持有股票占比大的基金买入。一般基金持仓比较分散,每只股票持有数量从百分之零点几到百分之十几不等,而且优质股票往往被上百只基金同时持有,如何快速找到持有股票的基金和比重呢?
以天齐锂业为例,我们从东方财富网上可以找到机构持仓明细 http://data.eastmoney.com/zlsj/detail/2019-12-31-0-002466.html,可以看到有多种类型的基金,我们选择ETF基金,比如最近比较火的华夏中证5G通信主题ETF
进入到该基金的页面 http://fundact.eastmoney.com/fundinfo/515050.html?fund=515050,可以查看该基金持有的前十大股票,第一名就是中兴通信,占比9.90%
了解以上的数据源之后,我们可以写个python程序快速的找到某只股票的基金持仓及占比情况,源码如下:
import requests
import execjs
from bs4 import BeautifulSoup
REQUEST_HEADER = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}
def get_stock_fundlist(symbol, date='2019-12-31'):
"""
查询股票被持有的基金及持仓占比
:param symbol: 股票代码,例如: SZ000001
:param date: 报告日期,例如:2019-12-31,2019-03-31
:return:
"""
stock_url = 'http://data.eastmoney.com/zlsj/detail.aspx?type=ajax&sr=-1&p=1&ps=1000&stat=0&code=%s&date=%s&rt=52763434'
fund_url = 'http://fund.eastmoney.com/f10/FundArchivesDatas.aspx?type=jjcc&code=%s&topline=15'
web_source = requests.get(stock_url % (symbol[2:], date), headers=REQUEST_HEADER, timeout=5)
js_obj = execjs.compile(web_source.content.decode('gbk'))
results = js_obj.eval('jsname')
if 'data' not in results:
return
etf_list = [record['SHCode'] for record in results['data'] if record['SHCode'].startswith('5')]
results = {}
for code in etf_list[:]:
web_source = requests.get(fund_url % code, headers=REQUEST_HEADER, timeout=5)
html_source = web_source.content.decode()
html_source = html_source.split("\"")[1]
soup = BeautifulSoup(html_source, 'lxml')
items = soup.select(".tzxq")[0].select('tr')
for item in items[1:]:
if symbol[2:] not in item.text:
continue
fields = item.select('td')
record = [field.text.strip() for field in fields if
field.text.strip() != '' and '变动' not in field.text]
results[code] = record[3][:-1]
break
return sorted(results.items(), key=lambda kv: kv[1], reverse=True)
if __name__ == '__main__':
print(get_stock_fundlist('SZ000063', '2019-12-31'))
执行代码输出结果如下:
[('515050', '9.90'), ('570007', '6.87'), ('519668', '6.52'), ('501062', '5.37'), ('550002', '5.13'), ('515000', '5.10'), ('570006', '5.08'), ('501028', '4.81'), ('502013', '4.33'), ('501015', '4.26'), ('550015', '4.22'), ('515580', '4.19'), ('501026', '4.19'), ('512970', '3.94'), ('519929', '3.69'), ('515200', '3.32'), ('550001', '3.06'), ('550008', '3.05'), ('501081', '3.05'), ('550009', '2.99'), ('512220', '2.95'), ('501076', '2.26'), ('519013', '2.09'), ('515880', '10.75'), ('510080', '1.60'), ('590007', '0.99'), ('519676', '0.71')]
可以看到所有基金中持有中兴通讯最多份额的基金是515050,该基金持仓里中兴通讯占基金的比例为9.9%,意味着中兴通讯每涨停一天对基金会有0.99%的贡献。
当然,这个办法有很多的局限性,比如基金持有的股票多数是优质股,这种机会比较难碰到,而且指数型基金往往持仓非常分散,也不适用这种办法。如果基金中其他股票下跌也会造成基金下跌。
515050 5GETF这种主题基金比较适合这种个股利好涨停的,遇到针对整个行业的利好消息,这种主题型的ETF往往同时持有多只股票出现大幅上涨,2月24日当天,515050 这只基金除了中兴通讯涨停外,信维通信和沪电股份也出现了涨停,这三只股票基金持仓占比高达17.18%,如果之后出现了连续涨停的走势,对基金影响将非常明显。
除了515050 5GETF还有其他几个比较适合的,比如159995 芯片ETF,515700 新能车,512760 半导体50等,可以都关注着,没准哪天掉下来个利好呢。