乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

       老三的休閑書屋 2021-04-26

      D1 引言

      從系統(tǒng)論的角度來看,股票市場是一個復雜系統(tǒng),市場的漲跌是由資金流(市場資金存量、流入量、流出量)和回路(市場信息與交易者行為形成的各種反饋、調(diào)節(jié)、增強回路)非線性作用下的結果。換句話說,牛市是資金流入和正向反饋(賺錢效應吸引更多資金流入)占主下的系統(tǒng)演化過程,熊市則相反。而影響市場資金流向和反饋回路形成的驅動因素主要有政策、經(jīng)濟、交易情緒、流動性、技術面和外圍環(huán)境等。市場上對這些驅動因素的研究和把握最強的是“聰明資金”(Smart money),在A股上則是那些游資主力,而不是基金。龍虎榜是這些游資的戰(zhàn)場,而漲停板則是游資主力釋放的最重要的操盤信號。

      漲停板制度是我國借鑒國外早期證券市場,為防止交易價格暴漲暴跌,抑制過度投機的制度,卻也成了游資主力吸引跟風盤的重要手段。利用概念題材炒作,快速封漲停板,通過類似饑餓營銷地方式吸引各路跟風資金,再拉高出貨賺取價差。當然漲停板不代表一出現(xiàn)就會上漲,也可能是曇花一現(xiàn),也可能是主力挖的坑,但是游資主力發(fā)動進攻一般以漲停板出現(xiàn)。因此漲停板是實盤操作中值得深入分析和挖掘的重要信號。本文使用Python對A股市場2016-2021年漲停板個股數(shù)據(jù)進行探索性分析,為讀者挖掘漲停股、深入認識市場提供一個量化視角。

      D2 數(shù)據(jù)獲取

      本文數(shù)據(jù)來源于tushare,數(shù)據(jù)期間為2016年2月15日-2021年4月23日,包含74300個樣本。tushare pro中的limit_list函數(shù)可直接獲取A股中每日漲跌停個股信息。但由于該數(shù)據(jù)需積分達到2000才能獲取,所以本文也提供了csv格式數(shù)據(jù)供大家學習,有需要的在公眾號后臺回復 “漲停板數(shù)據(jù)” 即可獲取下載鏈接。

      import pandas as pdimport numpy as np#畫圖import matplotlib.pyplot as plt#正確顯示中文和負號plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=False#處理時間from dateutil.parser import parsefrom datetime import datetime,timedelta#使用tushare獲取數(shù)據(jù)import tushare as ts token='輸入你在tushare上注冊的token'pro=ts.pro_api(token)#獲取最新交易日期#獲取交易日歷cals=pro.trade_cal(exchange='SSE')cals=cals[cals.is_open==1].cal_date.valuesdef get_now_date():    #獲取當天日期時間    d=datetime.now().strftime('%Y%m%d')    while d not in cals:        d1=parse(d)        d=(d1-timedelta(1)).strftime('%Y%m%d')    return dd1=get_now_date()n1=np.argwhere(cals==d1)[0][0]+1#獲取最近6年的交易日行情#實際上tushare只能獲取2016后的漲跌停數(shù)據(jù)dates=cals[-250*6:n1]
      df=pro.limit_list(trade_date=dates[0], limit_type='U')for date in dates[1:]:    df_tem=pro.limit_list(trade_date=date, limit_type='U')    df=pd.concat([df,df_tem])#查看前幾行數(shù)據(jù)#實際上tushare只能獲取2016后的漲跌停數(shù)據(jù)#數(shù)據(jù)下載3-4分鐘左右df.head()
      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

      其中,fl_ratio 為封單手數(shù)/流通股本;amp是振幅;fc_ratio是封單金額/日成交金額;fl_ratio為封單手數(shù)/流通股本;fd_amount為封單金額;first_time代表首次漲停時間;last_time代表最后封板時間;open_times是打開次數(shù);strth是漲跌停強度。

      #保存數(shù)據(jù)到本地#df.to_csv('up_limit_data.csv')#讀取數(shù)據(jù)#df=pd.read_csv('up_limit_data.csv',index_col=0)

      D3 市場漲停整體情況

      描述性統(tǒng)計

      df.iloc[:,1:].describe().round(2)

      從描述性統(tǒng)計來看,漲停股價格大都在25元及以下(75%分位數(shù)),其他幾個變量波動標準差均較大,反映個股漲停的特征差別較大。下面使用可視化的方式展現(xiàn)不同價格期間個股漲停情況。

      漲停股價格區(qū)間

      先構建一個價格區(qū)間標記函數(shù),將個股收盤價劃分為10元以下、10-30元、30-50元、50-100元以及100元以上,價格區(qū)間的劃分主要是根據(jù)經(jīng)驗和A股市場情況而定。

      def dy_zh(data, cut_points, labels=None):     min_num = data.min()     max_num = data.max()     break_points = [min_num] + cut_points + [max_num]    if not labels:         labels = range(len(cut_points)+1)    else:          labels=[labels[i] for i in range(len(cut_points)+1)]     dataBin = pd.cut(data,bins=break_points,         labels=labels,include_lowest=True)        return dataBin cut_points = [10,30,50,100] labels=['10元以下', '10-30元','30-50元','50-100元','100元以上'] #調(diào)用函數(shù)dy_zh,增加新列df['價格區(qū)間'] = dy_zh(df['close'], cut_points, labels) #查看標簽列,取值范圍前面加上了序號,是便于后面生成表格時按順序排列#df.head()

      使用柱狀圖展示不同價格區(qū)間下漲停個股數(shù)量分布。

      group_price=df.groupby('價格區(qū)間')['trade_date'].count()

      plt.figure(figsize=(12,5))
      colors=['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd','#8c564b']
      fig=plt.bar(group_price.index,group_price.values,color=colors[:5]);
      #自動添加標簽
      def autolabel(fig):
      for f in fig:
      h=f.get_height()
      plt.text(f.get_x()+f.get_width()/2,1.02*h,
      f'{int(h)}',ha='center',va='bottom')
      autolabel(fig)

      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

      漲停板排名

      下面對2016-2021年期間個股出現(xiàn)漲停次數(shù)進行排序,前二十名中有十二個是ST(含*)股,ST股一直是市場短線資金炒作的對象,容易暴漲暴跌,特別是有摘帽預期的個股,在資金的推動下短期可能出現(xiàn)連續(xù)幾十個漲停,當然炒作過后往往也一地雞毛,如*ST天馬。

      def plot_bar(group_data):    plt.figure(figsize=(16,5))    fig=plt.bar(group_data.index,group_data.values);    autolabel(fig)    plt.title('2016-2021漲停板排名前20',size=15);
      group_name=df.groupby('name')['ts_code'].count().sort_values(ascending=False)[:20]plot_bar(group_name)
      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

      剔除*ST/ST/N股后排名

      下面是剔除*ST/ST/N股后的情況,其中誠邁科技在2019年和2020年2月短短一年期間以大量漲停的方式實現(xiàn)了二三十倍的漲幅。

      #分別剔除ST、*ST和新股(N開頭)df_st=df[-(df.name.str.startswith('ST') | df.name.str.startswith('*ST')|df.name.str.startswith('N'))]group_name_st=df_st.groupby('name')['ts_code'].count().sort_values(ascending=False)[:20]plot_bar(group_name_st)
      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

      每日漲停統(tǒng)計

      每日漲停個數(shù)在一定程度上反映了市場的交投熱情,當漲停個股超過100個時,預示著市場賺錢效應較高。

      #使用0.5.11版本的pyechartsfrom pyecharts import Barcount_=df.groupby('trade_date')['trade_date'].count()attr=count_.indexv1=count_.valuesbar=Bar('每日漲停板個數(shù)','2016-2021',title_text_size=15)bar.add('',attr,v1,is_splitline_show=False,is_datazoom_show=True,linewidth=2)bar

      D4 行業(yè)漲停分布

      細分行業(yè)

      tushare pro的stock_basic可以獲取個股所在的細分行業(yè),將該數(shù)據(jù)與漲停數(shù)據(jù)合并,然后按照行業(yè)進行聚合,可以得到各細分行業(yè)的漲停個股分布情況。

      #獲取股票列表stocks=pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')#排除新股stocks=stocks[stocks.list_date<(parse(get_now_date())-timedelta(60)).strftime('%Y%m%d')]dff=pd.merge(df[['trade_date','ts_code','name','close','pct_chg','fc_ratio','fl_ratio']],stocks[['ts_code','name','industry','list_date']])#dff.head()
      (dff.groupby('industry')['name'].count().sort_values(ascending=False)[:10] .plot.bar(figsize=(14,5),rot=0));plt.title('2016-2021漲停板行業(yè)排名前十',size=15);
      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘
      dff['year']=(pd.to_datetime(dff['trade_date'].astype(str))).dt.strftime('%Y')#對每年行業(yè)漲停板個數(shù)排名進行可視化#生成2*3六個子圖plot_pos=list(range(321,327))#每個子圖顏色colors=['#1f77b4','#ff7f0e','#2ca02c','#d62728','#9467bd','#8c564b']fig=plt.figure(figsize=(18,14))fig.suptitle('2016-2021行業(yè)漲停排名前十',size=15)years=sorted(dff['year'].unique())for i in np.arange(len(plot_pos)):    ax=fig.add_subplot(plot_pos[i])    (dff[dff.year==years[i]].groupby('industry')['name']                     .count()                     .sort_values(ascending=False)[:10]                     .plot.bar(rot=0,color=colors[i]));    ax.set_title(years[i])    ax.set_xlabel('')plt.show()
      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

      大類行業(yè)

      上述行業(yè)分類過細,對部分相關細分行業(yè)進行合并,最后得到28個大類行業(yè)。

      new_name=['汽車','電力','有色金融','鋼鐵','農(nóng)林牧漁','醫(yī)藥生物','房地產(chǎn)','交通運輸','煤炭','金融','食品飲料',          '石油','公用事業(yè)','計算機','電子','通信','休閑服務','紡織服裝','商業(yè)貿(mào)易','建筑裝飾','機械設備','輕工制造','化工']old_name=[('汽車配件', '汽車整車','汽車服務','摩托車',),('火力發(fā)電','新型電力', '水力發(fā)電'),('黃金', '鋁','小金屬','鉛鋅','銅',),         ('普鋼','特種鋼','鋼加工',),( '漁業(yè)', '種植業(yè)','林業(yè)','農(nóng)業(yè)綜合','飼料', '農(nóng)藥化肥','橡膠', ),('醫(yī)療保健','生物制藥','醫(yī)藥商業(yè)','中成藥','化學制藥',),         ('房產(chǎn)服務', '區(qū)域地產(chǎn)','全國地產(chǎn)','園區(qū)開發(fā)',),('公路','鐵路','水運', '航空','空運','公共交通','路橋','港口','船舶', '倉儲物流',  ),         ('煤炭開采','焦炭加工',),('證券','保險','多元金融','銀行'),('啤酒','食品', '乳制品', '紅黃酒','白酒','軟飲料',),         ('石油開采','石油加工','石油貿(mào)易'),('供氣供熱','水務','環(huán)境保護', ),         ('互聯(lián)網(wǎng)', '軟件服務', 'IT設備', ),('半導體', '元器件',),('通信設備','電信運營',),( '文教休閑','旅游服務','旅游景點','酒店餐飲','影視音像','出版業(yè)',),         ('染料涂料','服飾','紡織','紡織機械','家居用品'), ('商品城','百貨', '批發(fā)業(yè)', '超市連鎖','電器連鎖', '其他商業(yè)','商貿(mào)代理','廣告包裝'),         ('建筑工程','裝修裝飾','其他建材','水泥'),('專用機械','輕工機械','化工機械','機械基件','運輸設備','機床制造','農(nóng)用機械','工程機械', '電器儀表'),         ('造紙','陶瓷','玻璃', '塑料','礦物制品',),('化工原料','化纖','日用化工')]

      合并成大類板塊后,數(shù)據(jù)顯示,4月23日醫(yī)藥生物板塊漲停個股最多,此外,機械設備、電子、紡織服裝、汽車和休閑服務(含旅游)等板塊最近一周漲停股較多,與近期熱點密切相關,如印度疫情復發(fā)、新能源、五一旅游等。

      #將某些細分行業(yè)合并成大類
      for i in range(len(old_name)):
      for j in old_name[i]:
      dff.replace(j,new_name[i],inplace=True)
      industry_up=pd.DataFrame()
      #獲取最近10日各行業(yè)漲停板數(shù)據(jù)
      for d in dates[-10:]:
      industry_up[d]=dff[dff.trade_date==d].groupby('industry')['name'].count()
      industry_up.fillna(0).sort_values(dates[-1],ascending=False).astype(int)

      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

      使用滾動5日累計板塊漲停個數(shù),可以一定程度反映近期板塊題材的資金的關注情況,排在前面的是汽車、醫(yī)藥生物、機械設備和電子。

      #近期滾動5天行業(yè)漲停個股數(shù)
      (industry_up.fillna(0).T.rolling(5).sum()).T.dropna(axis=1).sort_values(dates[-1],ascending=False)

      D5 個股連板情況

      下面構建函數(shù)統(tǒng)計和分析個股連續(xù)漲停的概率以及獲取某日連板股票池。由于代碼較長,此處省略,完整版見Python金融量化知識星球。

      def up_con_pro(df,ddd):    pass

      連板概率

      ddd=sorted(df.trade_date.unique()[-60:],reverse=True)up_con_pro(df,ddd).round(4).T.head(10)
      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

      數(shù)據(jù)顯示,個股第一次漲停后,第二天連續(xù)漲停的概率接近30%,連續(xù)7-10板的概率接近0。剔除st股后連板的概率更低。

      #剔除st股后
      #up_con_pro(df_st,ddd).round(4).T.head(10)

      up_con_pro(df,ddd).T.describe().round(4)
      #剔除st股#up_con_pro(df_st,ddd).T.describe().round(4)

      獲取某日連板個股

      下面使用get_con_up_stocks獲取指定日期連板的個股名單,如2021年4月23日,錦泓集團、ST巖石、*ST節(jié)能實現(xiàn)四連板。

      #stock_plot為個人畫圖腳本文件stock_plot(result.index[0]).kline_plot(ktype=0)
      「Python量化」股票漲停板探索性分析與數(shù)據(jù)挖掘

      D6 結語

      美國著名投機家杰西·利弗莫爾(《股票作手回憶錄》)說,如果你不能在領頭羊上賺錢,就不可能在股市上賺錢。在A股市場,領頭羊個股往往是以漲停的形式開啟一波大行情,漲停板是反映主力進攻(或撤退)的重要操盤信號。市場上一度流行著“有三必有五,有五必成妖”的漲停股說法。當然從數(shù)據(jù)統(tǒng)計的概率來看,一直連五板及更多的概率是較低的,大部分妖股是連續(xù)漲停后經(jīng)過猛烈調(diào)整和洗盤再繼續(xù)拉升的。本文從量化的角度對A股漲停個股數(shù)據(jù)進行了探索性分析,為讀者通過量化的手段挖掘漲停個股提供參考框架。對于驅動個股漲停的具體反饋回路還有待深入探討,如存在哪些閉合因果關系鏈驅動資金流向某個板塊題材和個股,或者說影響個股漲停和持續(xù)性的關鍵因素是什么?能否通過量化的手段構建漲停板交易策略,歷史回測效果如何?這些問題留給讀者進一步思考。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多