请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  数理科学 帖子:3352698 新帖:49

通过JQData获取申万行业指数,计算指数的价格相对强

TRADE12发表于:9 月 8 日 00:00回复(1)

      价格相对强度(PRS)也称为相对强度(RS),是衡量在一段时间区间(通常为12个月)内一个股票价格相对于整体股票的强度,它的值在1至99之间,值越大,相对强度越高。PRS在国际投资界被广泛使用。


 

       通常的计算方法:在同一段时间区间内,计算每一只个股的涨幅,按降序排列(rank),根据排名打分,第一名99分,最后一名1分,以此类推。(IPO未满一年的股票,以及长期停牌的股票一般要剔除。)

      长期的大牛股的PRS值一般都大于85。趋势投资或动量投资建议不要买RS值小于60的股票。成长股的RS值一般在80或85以上。

      由于整体股票市场的体量较大,以A股为例, 3680多家的股票, RS值在80以上的个股也有730多家,这对我们选股也是有难度的。

      而从行业分布着手,事情变得相对容易,再者,行业分析也更适合产业政策和实体经济。

      聚宽的JQData提供了被广泛使用的申万行业一级指数的历史数据(finance.SW1_DAILY_PRICE)以及估值数据(finance.SW1_DAILY_VALUATION)。

其具体的api可以参照:


      我们对申万28个一级行业,通过jqdata的获取申万行业一级指数的历史数据(finance.SW1_DAILY_PRICE),按照PRS的计算方法可以得到不同时间区间的PRS的值。

而行业指数RS值在80以上的只有5至6个行业,这给我们分析阶段市场资金的流向以及行业前景的预期很有帮助。

      jqdata的申万一级行业估值数据(finance.SW1_DAILY_VALUATION)则已经直接计算出了28个行业的每日的换手率,PE,PB和分红比率。这给我们分析不同行业的估值水平(PE,PB)和市场偏好(PB)以及市场热点(换手率)提供了有用的数据。

 

      具体的分析方法可以查看我的研究代码。

      通过价格相对强度(RS)研究数据我们可以看到:近3个月来,电子,计算机,国防军工,食品饮料,医药生物的RS值排名最高,这给我们选股指明了方向。

以上这些只是初步的分析,提供一种思路。通过JQdata提供的申万行业的指数的数据,我们还可以进一步计算各个行业的PRS值的曲线,分析变化趋势。还可以计算行业的历史估值区间的数据,来判断当前估值水平在历史估值中的位置。欢迎大家一起讨论!

研究

收起          

*研究          

0          

您需要登录后才能查看源码 ,点击登录

# 申万行业指数import pandas as pdfrom jqdata import *import datetime
lastTD = get_trade_days(count=2)[-1] # 最近一个交易日print(f'最近一个交易日: {str(lastTD)}')beforeLastTD = get_trade_days(count=3)[-2] # 前一个交易日print(f'前一个交易日: {str(beforeLastTD)}')
最近一个交易日: 2019-09-06
前一个交易日: 2019-09-05
class Industry():""" 通过计算阶段时间的申万一级行业指数的涨幅,发现指数的价格相对强度(PRS);        通过获取申万一级行业的换手率, 发现市场热点,估值水平则分应投资者对不同行业的喜好程度。    """def __init__(self, industry_type='sw_l1', Date=lastTD):self.industry_type = industry_typeself.Date = Datedef industry_name(self): # 行业代码和名称'''Q:为什么有些申万行业代码没有成分股?            A:申万的行业代码在14年2月21有一次比较大改动,新增了11个行业代码:            ['801710','801720','801730','801740','801750','801760','801770',            '801780','801790','801880','801890'],弃用了6个行业代码:['801060',            '801070','801090','801100','801190','801220']            所以新增行业代码在2014-02-21之前没有成分股,弃用的行业代码在2014-02-21之后没有成分股。        '''industry_name = get_industries(self.industry_type)inds = []for i in industry_name.index.tolist():if len(get_industry_stocks(i)):inds.append(i)df_inds = industry_name[industry_name.index.isin(inds)]df_inds = df_inds[['name']]return df_inds#     def __str__(self):#         return f'sw_l1 industry_code list: {self.industry_name()}'def RS_industry_swl1(self): # 申万一级行业指数的价格相对强度(PRS)RS = pd.DataFrame()for periods in [20, 60, 120]: # 这里的交易时间间隔可以根据需要自定义start_date = get_trade_days(count=periods)[0]print(start_date)df = finance.run_query(query(finance.SW1_DAILY_PRICE ).filter(finance.SW1_DAILY_PRICE.code.in_(self.industry_name().index.tolist()),  finance.SW1_DAILY_PRICE.date >= start_date,  ).order_by(finance.SW1_DAILY_PRICE.date.desc()))df = df.set_index('code')print(len(df))# df.dropna()df = df[['name', 'change_pct']]rt = df.groupby(by='code').sum()rt['rank'] = rt['change_pct'].rank(ascending=False)rt['rs'] = round(100*(1 - rt['rank']/len(rt)), 2)rt = rt.rename(columns={'change_pct': f'rt_{str(periods)}'})rt = rt.rename(columns={'rs': f'rs_{str(periods)}'})RS = pd.concat([RS, rt, self.industry_name()['name']], axis=1, sort=True)RS = RS.sort_values(by='rs_20', ascending=False)#RS = pd.concat([RS, self.industry_name()['name']], axis=1, sort=True),return RSdef industry_swl1_valuation(self): # 申万一级行业的估值""" 这里的时间通过while循环直到取得数据为止,不然数据为空!!!        """tradedate = datetime.date.today()     #print(tradedate)i = 0while True:df = finance.run_query(query(finance.SW1_DAILY_VALUATION ).filter(finance.SW1_DAILY_VALUATION.code.in_(self.industry_name().index.tolist()),  finance.SW1_DAILY_VALUATION.date == tradedate ,  ).order_by(finance.SW1_DAILY_VALUATION.date.desc()))df = df[['date', 'code', 'name', 'turnover_ratio', 'pe', 'pb', 'dividend_ratio']]df = df.set_index('code')df = df.sort_values(by='turnover_ratio', ascending=False)if len(df) != 0:breakelse:i += 1           # print(i)tradedate = get_trade_days(count=5)[-i]print(tradedate)return df# if __name__ == '__main__':#     inds = Industry('sw_l1')#     indus_name =inds.industry_name()#     print(f'申万一级行业代码及名称, 一共有{str(len(indus_name))}个:')#     print(indus_name)#     print('申万一级行业的估值,换手率等:')#     val_inds = inds.industry_swl1_valuation()#     print(val_inds)#     # 可以将数据保存为csv文件,方便进一步分析查看#     print('申万一级行业指数的价格相对强度(PRS):')#     RS_inds = inds.RS_industry_swl1()#     print(RS_inds)#     # 可以将数据保存为csv文件,方便进一步分析查看
inds = Industry('sw_l1')indus_name =inds.industry_name()print(f'申万一级行业代码及名称, 一共有{str(len(indus_name))}个:')indus_name
申万一级行业代码及名称, 一共有28个:

.dataframe tbody tr th:only-of-type {        vertical-align: middle;    }    .dataframe tbody tr th {        vertical-align: top;    }    .dataframe thead th {        text-align: right;    }


name
801740国防军工I
801020采掘I
801110家用电器I
801160公用事业I
801770通信I
801010农林牧渔I
801120食品饮料I
801750计算机I
801050有色金属I
801890机械设备I
801170交通运输I
801710建筑材料I
801780银行I
801040钢铁I
801130纺织服装I
801880汽车I
801180房地产I
801230综合I
801760传媒I
801200商业贸易I
801140轻工制造I
801720建筑装饰I
801080电子I
801790非银金融I
801030化工I
801210休闲服务I
801730电气设备I
801150医药生物I
print('申万一级行业的估值,换手率等:')val_inds = inds.industry_swl1_valuation()val_inds# 可以将数据保存为csv文件,方便进一步分析查看
申万一级行业的估值,换手率等:
2019-09-06

.dataframe tbody tr th:only-of-type {        vertical-align: middle;    }    .dataframe tbody tr th {        vertical-align: top;    }    .dataframe thead th {        text-align: right;    }


datenameturnover_ratiopepbdividend_ratio
code





8017702019-09-06通信4.204139.842.760.45
8017502019-09-06计算机3.679357.513.920.36
8010802019-09-06电子3.587437.943.140.65
8010102019-09-06农林牧渔2.295940.173.880.92
8017402019-09-06国防军工2.209363.942.740.28
8017602019-09-06传媒1.781437.102.230.79
8010502019-09-06有色金属1.743438.482.080.71
8018902019-09-06机械设备1.552426.612.061.03
8011502019-09-06医药生物1.471935.593.340.76
8011402019-09-06轻工制造1.348022.621.691.12
8017302019-09-06电气设备1.317232.632.140.83
8017902019-09-06非银金融1.306917.221.971.75
8011102019-09-06家用电器1.277416.123.232.52
8011202019-09-06食品饮料1.271432.856.781.33
8012302019-09-06综合1.226627.941.670.35
8018802019-09-06汽车1.156818.241.572.16
8012102019-09-06休闲服务1.139434.273.840.67
8012002019-09-06商业贸易1.058117.961.471.46
8010302019-09-06化工1.042419.481.831.84
8017102019-09-06建筑材料0.957811.411.712.45
8011302019-09-06纺织服装0.908723.551.801.77
8011802019-09-06房地产0.73359.191.303.06
8011602019-09-06公用事业0.642320.221.521.85
8011702019-09-06交通运输0.623217.981.501.61
8017202019-09-06建筑装饰0.584710.071.031.77
8010202019-09-06采掘0.373213.601.192.07
8010402019-09-06钢铁0.35127.320.934.31
8017802019-09-06银行0.14786.660.793.73
print('申万一级行业指数的价格相对强度(PRS):')RS_inds = inds.RS_industry_swl1()#可以将数据保存为csv文件,方便进一步分析查看RS_inds
申万一级行业指数的价格相对强度(PRS):
2019-08-12
560
2019-06-17
1680
2019-03-18
3360

.dataframe tbody tr th:only-of-type {        vertical-align: middle;    }    .dataframe tbody tr th {        vertical-align: top;    }    .dataframe thead th {        text-align: right;    }


rt_20rankrs_20namert_60rankrs_60namert_120rankrs_120name
80108020.341.096.43电子I26.891.096.43电子I13.053.089.29电子I
80175020.212.092.86计算机I16.043.089.29计算机I7.238.071.43计算机I
80174016.103.089.29国防军工I17.682.092.86国防军工I12.524.085.71国防军工I
80177014.954.085.71通信I4.6712.057.14通信I-3.4914.050.00通信I
80176014.045.082.14传媒I6.709.067.86传媒I-12.1826.07.14传媒I
80112012.706.078.57食品饮料I14.115.082.14食品饮料I30.261.096.43食品饮料I
80115011.677.075.00医药生物I14.254.085.71医药生物I6.929.067.86医药生物I
80111010.648.071.43家用电器I8.258.071.43家用电器I9.685.082.14家用电器I
8017309.849.067.86电气设备I5.5010.064.29电气设备I-7.8720.028.57电气设备I
8017909.7110.064.29非银金融I11.077.075.00非银金融I7.717.075.00非银金融I
8017109.6211.060.71建筑材料I2.7817.039.29建筑材料I1.4410.064.29建筑材料I
8018809.3712.057.14汽车I4.1014.050.00汽车I-4.2016.042.86汽车I
8010309.1913.053.57化工I5.4911.060.71化工I-3.5115.046.43化工I
8012308.6314.050.00综合I1.5120.028.57综合I-9.0123.017.86综合I
8018908.3815.046.43机械设备I4.4713.053.57机械设备I-4.8517.039.29机械设备I
8011708.1716.042.86交通运输I3.7215.046.43交通运输I0.2012.057.14交通运输I
8011408.1317.039.29轻工制造I2.3618.035.71轻工制造I-8.2722.021.43轻工制造I
8012108.0218.035.71休闲服务I11.756.078.57休闲服务I15.852.092.86休闲服务I
8011307.1919.032.14纺织服装I0.7721.025.00纺织服装I-10.0825.010.71纺织服装I
8012006.9720.028.57商业贸易I0.1022.021.43商业贸易I-7.8821.025.00商业贸易I
8017206.6921.025.00建筑装饰I-1.6325.010.71建筑装饰I-13.0027.03.57建筑装饰I
8010206.5222.021.43采掘I-1.7326.07.14采掘I-6.2319.032.14采掘I
8010404.9523.017.86钢铁I-5.9128.00.00钢铁I-21.1528.00.00钢铁I
8011604.8524.014.29公用事业I1.5419.032.14公用事业I-5.7518.035.71公用事业I
8011804.5225.010.71房地产I-3.6627.03.57房地产I-9.8624.014.29房地产I
8010504.2226.07.14有色金属I-0.3223.017.86有色金属I-3.1113.053.57有色金属I
8010103.1127.03.57农林牧渔I3.2216.042.86农林牧渔I7.936.078.57农林牧渔I
8017801.9728.00.00银行I-0.7324.014.29银行I0.7211.060.71银行I

全部回复

0/140

量化课程

    移动端课程