<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 主題龍頭類 > 來源:https://uqer.io/community/share/54c3348ff9f06c276f651a49 本代碼用于挖掘主題的龍頭股 + 先由通聯提供的有關主題的API獲得所有主題ID,儲存為文檔`20140601_20150123theme_list.txt` + 由API函數`DataAPI.ThemeTickersGet`獲得所有各個主題對應個股 + 由相關個股的日漲幅和市值,計算主題的每天收益 + 滾動計算主題5天的漲幅,找到主題漲幅最高的時間區間 + 在這個時間區間內,計算主題相關個股的漲幅 + 找到漲幅最高的個股,即為該主題的龍頭股 ```py datetime.today() datetime.datetime(2015, 1, 24, 13, 28, 42, 799154) ``` 讀取主題id文件,獲得所有主題的相關個股,儲存在`info`中 ```py f1 = read('20140601_20150123theme_list.txt') #從這個文檔中讀取所有的主題id themeId_list = f1.split(',') tk2id = lambda x:x+'.XSHG' if x[0]=='6' else x+'.XSHE' #由于ThemeTickersGet對于數據量有限制,一次調用1000個主題數據 num_up = 1000 #每一次調取多少個主題的信息 thm_tk_dic = {} #儲存每個主題包含的個股 tk_list = set([]) #tk_list儲存了所有相關個股 num = len(themeId_list)/num_up #一次調取num_up個主題,要調用num次 beginDate = '20140601' #開始時間 endDate = '20150123' #結束時間 if num>0: info = pd.DataFrame({}) for i in range(num): info_sub = DataAPI.ThemeTickersGet(beginDate=beginDate,endDate=endDate,themeID=themeId_list[i*num_up:(i+1)*num_up]) #獲取主題相關的個股 info = pd.concat([info,info_sub]) #將數據連接 info_sub = DataAPI.ThemeTickersGet(beginDate=beginDate,endDate=endDate,themeID=themeId_list[(i+1)*num_up:]) info = pd.concat([info,info_sub]) else: info = DataAPI.ThemeTickersGet(beginDate=beginDate,endDate=endDate,themeID=themeId_list) ``` 將主題與個股對應,`thm_tk_dic`儲存了每個主題對應的個股,`key`是主題名稱,`value`是與主題相關的個股列表 ```py info = info[['themeName','ticker','secShortName']] #只取這幾列數據 group_info = info.groupby('themeName') #根據主題名稱分類 for theme,group in group_info: theme_tk = group['ticker'].tolist() if len(theme_tk[0])!=6: continue if len(theme_tk)>10: thm_tk_dic[theme] = theme_tk #獲得某個主題下相關的個股 tk_list |= set(theme_tk) #所有的個股 ``` 利用`DataAPI.SecIDGet`獲得個股對應的名稱,便于最后展示 ? ```py #獲得個股代碼與名稱的對應 tk_list = list(tk_list) num_name = len(tk_list)/1000 if num_name>0: tk_name_pd = pd.DataFrame({}) for i in range(num_name): sub = DataAPI.SecIDGet(ticker=tk_list[1000*i:1000*(i+1)],field='secShortName') #獲取證券簡稱 tk_name_pd = pd.concat([tk_name_pd,sub]) sub = DataAPI.SecIDGet(ticker=tk_list[1000*(i+1):],field='secShortName') tk_name_pd = pd.concat([tk_name_pd,sub]) else: tk_name_pd = DataAPI.SecIDGet(ticker=tk_list,field='secShortName') tk_name_dic = dict(zip(tk_name_pd.ticker,tk_name_pd.secShortName)) #獲得個股代碼與名字對應的字典,便于最后展示 ``` 獲得所有股票在一段日期內的日行情數據,便于計算個股每日漲幅和主題漲幅 ```py #由于API對訪問量有限制,每次只能調取50個股票的日線數據,故采用限制每次調用次數,循環調用的方法 len_stk = 50 #每次調用len_stk只個股 num_stk = len(tk_list)/len_stk #要調用num_stk次 #獲得tk_list中所有個股的日線信息 if num_stk>0: mkt_stk_info = pd.DataFrame({}) for i in range(num_stk): info = DataAPI.MktEqudGet(ticker=tk_list[i*len_stk:(i+1)*len_stk],beginDate=beginDate,endDate=endDate,field=['ticker','preClosePrice','closePrice','marketValue']) mkt_stk_info = pd.concat([mkt_stk_info,info]) info = DataAPI.MktEqudGet(ticker=tk_list[(i+1)*len_stk:],beginDate=beginDate,endDate=endDate,field=['ticker','preClosePrice','closePrice','marketValue']) mkt_stk_info = pd.concat([mkt_stk_info,info]) else: mkt_stk_info = DataAPI.MktEqudGet(ticker=tk_list,beginDate=beginDate,endDate=endDate,field=['ticker','preClosePrice','closePrice','marketValue']) mkt_stk_info = mkt_stk_info[['ticker','tradeDate','preClosePrice','closePrice','marketValue']] ``` 計算主題每日漲幅 ```py thm_date_inc_dic = {} #記錄了每個主題每天的漲幅,key是日期,value是主題漲幅 for key in thm_tk_dic.keys(): thm_date_inc_dic[key] = {} for theme,stocks in thm_tk_dic.items(): mkt_info = mkt_stk_info[mkt_stk_info['ticker'].isin(stocks) ] mkt_info['increase'] = (mkt_info['closePrice']-mkt_info['preClosePrice'])/mkt_info['preClosePrice'] #計算主題漲幅 gp_date = mkt_info.groupby('tradeDate') for date,group in gp_date: thm_inc = sum(group['marketValue']*group['increase'])/sum(group['marketValue']) #某天的主題收益 thm_date_inc_dic[theme][date] = thm_inc ``` 計算主題滾動5日的漲幅之和,找到主題漲幅最大的時間區間 ```py thm_date_inc_pd = pd.DataFrame(thm_date_inc_dic) #生成dataframe,index是日期,columns是主題名稱 window = 5 #統計5天的主題收益之和 thm_5d_inc_pd = pd.rolling_sum(thm_date_inc_pd,window=window) #計算滾動和 id_max_list_begin = thm_5d_inc_pd.dropna().values.argmax(axis=0) #由于最初的window-1行值為NA,舍棄之后得到的下標便是最大和的開始下標 pl2date = lambda x,:list(thm_5d_inc_pd.index)[x:x+window] #由開始下標獲得這段時間區間,即獲得[2014-06-03,2014-06-04,...]這樣的列表 date_list = map(pl2date,id_max_list_begin) max_date_periods = {} #儲存每個主題獲得最高收益的時間區間 for i in range(len(date_list)): theme = thm_date_inc_pd.columns[i] #主題名稱 date = date_list[i] #對應的時間區間 max_date_periods[theme] = date ``` 計算在上述時間區間內個股的漲幅,漲幅最大的即為該主題的龍頭股 ```py thm_leadStk_dic = {} #記錄每個主題的龍頭股 for theme,stock_list in thm_tk_dic.items(): date_list = max_date_periods[theme] flt_thm_stk_info = mkt_stk_info[(mkt_stk_info['ticker'].isin(stock_list)) & (mkt_stk_info['tradeDate'].isin(date_list))] #獲取這些個股在這段時期內的日線數據 grouped = flt_thm_stk_info.groupby('ticker') stk_inc_dic = {} for stk,group in grouped: stk_inc = (group['closePrice'].iloc[-1]-group['preClosePrice'].iloc[0])/group['preClosePrice'].iloc[0] #獲取個股在這段時間內的收益 stk_inc_dic[stk] = stk_inc thm_leadStk_dic[theme] = sorted(stk_inc_dic.keys(),key=lambda x:stk_inc_dic[x],reverse = True)[0] #排序,獲得該主題的龍頭股 ``` 將主題和龍頭股寫成`dataframe`形式,便于展示 ```py thm_leadStk_pd = pd.DataFrame.from_dict(thm_leadStk_dic,orient='index').reset_index() #由字典生成dataframe thm_leadStk_pd.rename(columns={0:'ticker'},inplace=True) #重命名,便于下一步merge lead_tk_list = list(thm_leadStk_pd['ticker']) tk2nm = lambda x:tk_name_dic[x] #tk2nm = lambda x: lead_name_list = map(tk2nm,lead_tk_list) name_pd = pd.DataFrame({'shortname':lead_name_list}) answer = pd.concat([thm_leadStk_pd,name_pd],axis=1) answer.rename(columns={'index':u'主題名稱','ticker':u'個股代碼','shortname':u'個股簡稱'},inplace=True) #重命名 answer ``` | | 主題名稱 | 個股代碼 | 個股簡稱 | | --- | --- | | 0 | 金融機具股 | 601818 | 光大銀行 | | 1 | 銀聯 | 601818 | 光大銀行 | | 2 | 公路運輸股 | 601939 | 建設銀行 | | 3 | 小額貸款股 | 601818 | 光大銀行 | | 4 | LBS股 | 600118 | 中國衛星 | | 5 | 智能電表 | 300085 | 銀之杰 | | 6 | 國資整合 | 601299 | 中國北車 | | 7 | 硝酸銨股 | 002217 | *ST合泰 | | 8 | 鎳氫電池股 | 600549 | 廈門鎢業 | | 9 | 國產手機 | 600050 | 中國聯通 | | 10 | 浦東新區 | 601901 | 方正證券 | | 11 | 特高壓 | 000709 | 河北鋼鐵 | | 12 | 特高壓股 | 300265 | 通光線纜 | | 13 | 數字地圖 | 600717 | 天津港 | | 14 | 白色石墨烯股 | 000009 | 中國寶安 | | 15 | 淘寶 | 000002 | 萬科A | | 16 | 電子支付 | 002095 | 生意寶 | | 17 | PE(化工) | 600028 | 中國石化 | | 18 | 核電主設備股 | 300411 | 金盾股份 | | 19 | 獸藥 | 000826 | 桑德環境 | | 20 | 滬港通股 | 601099 | 太平洋 | | 21 | 甲基叔丁基醚股 | 000151 | 中成股份 | | 22 | 體育文化 | 601901 | 方正證券 | | 23 | 品牌服裝 | 002503 | 搜于特 | | 24 | 多晶硅股 | 600151 | 航天機電 | | 25 | 丁二醇股 | 000151 | 中成股份 | | 26 | TVOS股 | 300079 | 數碼視訊 | | 27 | 光電子材料 | 002261 | 拓維信息 | | 28 | 珠海航展 | 600990 | 四創電子 | | 29 | 農用機械股 | 300159 | 新研股份 | | ... | ... | ... | ... | | 1301 | 德州本地股 | 601106 | 中國一重 | | 1302 | 制冷劑股 | 000550 | 江鈴汽車 | | 1303 | 微信股 | 600109 | 國金證券 | | 1304 | 保健品 | 600530 | 交大昂立 | | 1305 | 抗寒 | 600188 | 兗州煤業 | | 1306 | 社保股 | 002501 | 利源精制 | | 1307 | 神舟十號 | 601988 | 中國銀行 | | 1308 | WAPI | 002439 | 啟明星辰 | | 1309 | 光電子材料股 | 002261 | 拓維信息 | | 1310 | 廣東自貿區股 | 600185 | 格力地產 | | 1311 | 空調股 | 300411 | 金盾股份 | | 1312 | 德州本地 | 601106 | 中國一重 | | 1313 | 雅安地震 | 002314 | 雅致股份 | | 1314 | 新疆建設股 | 000562 | 宏源證券 | | 1315 | 甲醇股 | 600188 | 兗州煤業 | | 1316 | 陜甘寧區 | 600185 | 格力地產 | | 1317 | 電解鋁 | 601600 | 中國鋁業 | | 1318 | 電子信息股 | 000901 | 航天科技 | | 1319 | 油氣 | 601857 | 中國石油 | | 1320 | 機床 | 603011 | 合鍛股份 | | 1321 | 人工智能 | 002230 | 科大訊飛 | | 1322 | 機制紙 | 000488 | 晨鳴紙業 | | 1323 | 鋁股 | 600595 | 中孚實業 | | 1324 | 金屬新材料股 | 600888 | 新疆眾和 | | 1325 | 指紋識別 | 300248 | 新開普 | | 1326 | 小米概念 | 000333 | 美的集團 | | 1327 | 地溝油檢測 | 600028 | 中國石化 | | 1328 | 江蘇沿海地區 | 000425 | 徐工機械 | | 1329 | 電線電纜 | 002692 | 遠程電纜 | | 1330 | 風電股 | 600163 | 福建南紙 | ``` 1331 rows × 3 columns ``` ```py datetime.today() datetime.datetime(2015, 1, 24, 13, 33, 44, 786650) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看