用Python分析公开数据选出高送转预期股票

ITLMau 8年前
   <p style="text-align:center"><img src="https://simg.open-open.com/show/08016417856404670ead9462f2c66287.jpg"></p>    <p>上周五,永和智控公布了高送转预案,开盘涨停并直至收盘,打响了2016年报高送转的第一枪,一些具备高送转预期的个股也纷纷上涨,再次启动了高送转行情。</p>    <p>根据以往的经验,每年年底都会有一波高送转预期行情。今天,米哥就带大家实践一下如何利用tushare实现高送转预期选股。</p>    <p>本文主要是讲述选股的思路方法,选股条件和参数大家可以根据米哥提供的代码自行修改。</p>    <p><strong>1. 选股原理</strong></p>    <p>一般来说,具备高送转预期的个股,都具有总市值低、每股公积金高、每股收益大,流通股本少的特点。当然,也还有其它的因素,比如当前股价、经营收益变动情况、以及以往分红送股习惯等等。</p>    <p>这里我们暂时只考虑每股公积金、每股收益、流通股本和总市值四个因素,将公积金大于等于5元,每股收益大于等于5毛,流通股本在3亿以下,总市值在100亿以内作为高送转预期目标(这些参数大家可根据自己的经验随意调整)。</p>    <p><strong>2. 数据准备</strong></p>    <p>首先要导入tushare:</p>    <pre>  <code class="language-python">import tushare as ts</code></pre>    <p>调取股票基本面数据和行情数据</p>    <pre>  <code class="language-python"># 基本面数据  basic = ts.get_stock_basics()    # 行情和市值数据  hq = ts.get_today_all()</code></pre>    <p><strong>3. 数据清洗整理</strong></p>    <p>对获取到的数据进行清洗和整理,只保留需要的字段。(其它字段及含义,请参考 <a href="/misc/goto?guid=4959725962012775761" rel="nofollow,noindex"> http:// tushare.org </a> 文档)</p>    <pre>  <code class="language-python">#当前股价,如果停牌则设置当前价格为上一个交易日股价  hq['trade'] = hq.apply(lambda x:x.settlement if x.trade==0 else x.trade, axis=1)    #分别选取流通股本,总股本,每股公积金,每股收益  basedata = basic[['outstanding', 'totals', 'reservedPerShare', 'esp']]    #选取股票代码,名称,当前价格,总市值,流通市值  hqdata = hq[['code', 'name', 'trade', 'mktcap', 'nmc']]    #设置行情数据code为index列  hqdata = hqdata.set_index('code')    #合并两个数据表  data = basedata.merge(hqdata, left_index=True, right_index=True)</code></pre>    <p style="text-align:center"><img src="https://simg.open-open.com/show/0130c255a0161dc698fe940b93567b9f.png"></p>    <p><strong>4. 选股条件</strong></p>    <p>根据上文提到的选股参数和条件,我们对数据进一步处理。</p>    <pre>  <code class="language-python">将总市值和流通市值换成亿元单位  data['mktcap'] = data['mktcap'] / 10000  data['nmc'] = data['nmc'] / 10000</code></pre>    <p>设置参数和过滤值(此次各自调整)</p>    <pre>  <code class="language-python">#每股公积金>=5  res = data.reservedPerShare >= 5  #流通股本<=3亿  out = data.outstanding <= 30000  #每股收益>=5毛  eps = data.esp >= 0.5  #总市值<100亿  mktcap = data.mktcap <= 100</code></pre>    <p>取并集结果:</p>    <pre>  <code class="language-python">allcrit = res & out & eps & mktcap  selected = data[allcrit]</code></pre>    <p>具有高送转预期股票的结果呈现:</p>    <p style="text-align:center"><img src="https://simg.open-open.com/show/10cb4daec9ec380ccec8703980c81510.png"></p>    <p>以上字段的含义分别为:股票名称、收盘价格、每股公积金、流通股本、每股收益(应该为eps,之前发布笔误)、总市值和流通市值。</p>    <p> </p>    <p> </p>    <p> </p>    <p>来自:https://zhuanlan.zhihu.com/p/23829205</p>    <p> </p>