1月29日,由于有人造谣央行将紧缩流动性,造成全市场大跌;而在下午央行紧急辟谣后,市场有一个明显的回升,故而大多数股票都呈现先下跌,后反弹。
本文旨在探讨,央行紧缩流动性对市值不同的股票的影响、对估值不同的股票的影响,以及对不同行业的股票的影响。
结论:
1)市值因子并不对流动性敏感;
2)高估值对流动性紧缩更加敏感,毕竟流动性紧缩会带动贴现率的上升,从而对高估值股票不利。
3)出现谣言时,国防军工下跌最大,银行下跌最小;辟谣之后,消费者服务反弹最大,银行反弹最小。这是不是意味着可以配点银行股?
代码:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 正常显示中文
import warnings# filter warnings
warnings.filterwarnings('ignore')
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']# 以黑体字体显示中文
mpl.rcParams['axes.unicode_minus']=False# 解决图像中负号显示为方块的问题
data = pd.read_excel('市值与下跌幅度.xlsx')
data['下跌幅度'] = (data['最低价'] - data['开盘价'])/data['开盘价']
data['反弹幅度'] = (data['收盘价'] - data['最低价'])/data['最低价']
df1 = pd.qcut(data['自由流通市值'],80,labels=list(range(1,81)))
df1.name='cat'
data1 = pd.concat([data,df1],axis=1)
data_yield = data1.groupby('cat',sort=False).agg({'下跌幅度':'mean','反弹幅度':'mean'})
plt.figure()
plt.plot(list(data_yield['反弹幅度']),label='反弹幅度')
plt.plot(list(data_yield['下跌幅度']),label='下跌幅度')
plt.legend()
图:市值,横轴值越大,市值越大
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 正常显示中文
import warnings# filter warnings
warnings.filterwarnings('ignore')
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']# 以黑体字体显示中文
mpl.rcParams['axes.unicode_minus']=False# 解决图像中负号显示为方块的问题
data = pd.read_excel('市值与下跌幅度.xlsx',sheet_name='Sheet2')
data1 = data[data['市盈率(TTM)']>0]
data1 = data1[data1['市盈率(TTM)']<400]
print(data1)
df1 = pd.qcut(data1['市盈率(TTM)'],60,labels=list(range(1,61)))
#数字越大,PE越大,估值越高;60组,一组50支股票
df1.name='cat'
data1['下跌幅度'] = (data1['最低价'] - data1['开盘价'])/data1['开盘价']
data1['反弹幅度'] = (data1['收盘价'] - data1['最低价'])/data1['最低价']
data1 = pd.concat([data1,df1],axis=1)
data_yield = data1.groupby('cat',sort=False).agg({'下跌幅度':'mean','反弹幅度':'mean'})
plt.figure()
plt.plot(list(data_yield['反弹幅度']),label='反弹幅度')
plt.plot(list(data_yield['下跌幅度']),label='下跌幅度')
plt.legend()
图:PE,横轴越大,PE越大
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import plot,savefig
# 正常显示中文
import warnings# filter warnings
warnings.filterwarnings('ignore')
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']# 以黑体字体显示中文
mpl.rcParams['axes.unicode_minus']=False# 解决图像中负号显示为方块的问题
data = pd.read_excel('行业.xls')
data.columns = ['证券代码', '证券名称', '行业', '最低价', '开盘价', '收盘价']
data['下跌幅度'] = (data['最低价'] - data['开盘价'])/data['开盘价']
data['反弹幅度'] = (data['收盘价'] - data['最低价'])/data['最低价']
df = data.groupby('行业',sort=False).agg({'下跌幅度':'mean','反弹幅度':'mean'})
plt.figure(figsize=(9,6))
plt.bar(x=df.index,height=df['下跌幅度'])
plt.tick_params('x',labelcolor='k',rotation=75)
plt.savefig('行业1.jpg')
plt.figure(figsize=(9,6))
plt.bar(x=df.index,height=df['反弹幅度'])
plt.tick_params('x',labelcolor='k',rotation=75)
plt.savefig('行业2.jpg')