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

量化交易吧 /  数理科学 帖子:3354535 新帖:32

一张图分析当前市场估值

执着技术派发表于:6 月 4 日 18:06回复(1)

一张图分析当前市场估值¶

买点和卖点、仓位控制对于股票投资来说是非常重要的,有的时候,特别是调仓时,如果能掌握目前市场的估值,可以说是有不小的帮助

1) 我们先得到市场中所有的股票市值和净利润(每一个季度),然后计算他们的和,TTM,及PE值

2) 当然如果要更进一步,可以按行业或指数进行划分,这样的数据会更加完整和有价值

3) 对于市值,也可以更加细分,比如按周读取,或按月读取

# 我们先加载需要用到的库
import pandas as pd
pd.set_option('display.width', None)
pd.set_option('precision', 2)
# 初始化一个query,提取需要用到的数据表
q = query(
    valuation.day,
    valuation.code,
    valuation.market_cap,
    indicator.adjusted_profit,
)
# 初始化一个DataFrame, 用于存储取得的数据
quarter = ['q1', 'q2', 'q3', 'q4']
ap = pd.DataFrame(index=[str(y1)+q1 for y1 in range(2005, 2020) for q1 in quarter])
ap.index.set_names('date', inplace=True)
# 拉取数据,并存储在DataFrame,用于计算和显示
for x in list(ap.index):
    codes = ['000001.XSHE', '000002.XSHE']
    df = get_fundamentals(
        q.filter(
            # indicator.code.in_(codes)
        ), statDate=x )    # type: pd.DataFrame
    if not df.empty:
        ap.loc[x,'market_cap'] = df['market_cap'].sum()
        ap.loc[x,'adjusted_profit'] = df['adjusted_profit'].sum()
        ap.loc[x,'nums'] = len(df)
        print('读取了{}支股票,总的收益是{}'.format(len(df), ap.loc[x,'adjusted_profit']))
        
# 去掉空数据
ap = ap[ap['nums']>0]
读取了1354支股票,总的收益是47942726849.28
读取了1365支股票,总的收益是50829170564.6277
读取了1356支股票,总的收益是41194898543.2423
读取了1351支股票,总的收益是5244156514.715
读取了1350支股票,总的收益是39355170116.73999
读取了1350支股票,总的收益是59284322803.520004
读取了1371支股票,总的收益是82476520387.28
读取了1411支股票,总的收益是105680397023.55391
读取了1434支股票,总的收益是122376587189.435
读取了1455支股票,总的收益是175236488972.21002
读取了1495支股票,总的收益是174617683426.7655
读取了1527支股票,总的收益是323819989521.6841
读取了1549支股票,总的收益是262533725731.47122
读取了1585支股票,总的收益是237940735294.75
读取了1602支股票,总的收益是299212869456.595
读取了1603支股票,总的收益是-39523191583.31
读取了1603支股票,总的收益是187616778018.56622
读取了1601支股票,总的收益是255816393731.5202
读取了1628支股票,总的收益是282369972448.75
读取了1693支股票,总的收益是249894646844.15503
读取了1786支股票,总的收益是331346133176.12756
读取了1870支股票,总的收益是368313504287.97144
读取了1955支股票,总的收益是408493087861.53625
读取了2041支股票,总的收益是379047083362.66
读取了2130支股票,总的收益是460113126481.42993
读取了2208支股票,总的收益是487053151177.99994
读取了2273支股票,总的收益是470294607083.5299
读取了2318支股票,总的收益是353713101583.229
读取了2369支股票,总的收益是481093877645.53
读取了2424支股票,总的收益是483030833104.62
读取了2469支股票,总的收益是457781846482.8199
读取了2472支股票,总的收益是395202025429.74
读取了2471支股票,总的收益是529347563410.39496
读取了2469支股票,总的收益是545324622529.3451
读取了2469支股票,总的收益是554163881811.59
读取了2470支股票,总的收益是445116984737.5099
读取了2518支股票,总的收益是578041407654.07
读取了2521支股票,总的收益是627446064246.428
读取了2550支股票,总的收益是597581963355.1571
读取了2593支股票,总的收益是423819182266.515
读取了2664支股票,总的收益是598744397285.264
读取了2777支股票,总的收益是720201509550.3159
读取了2782支股票,总的收益是538497947540.5
读取了2810支股票,总的收益是348948083319.22
读取了2834支股票,总的收益是597263849855.3575
读取了2870支股票,总的收益是661478569765.3624
读取了2935支股票,总的收益是655544468605.863
读取了3034支股票,总的收益是513336999023.647
读取了3169支股票,总的收益是750392764794.4421
读取了3280支股票,总的收益是808989435668.4523
读取了3383支股票,总的收益是827154912161.1252
读取了3469支股票,总的收益是608212068842.9445
读取了3505支股票,总的收益是870933932335.4661
读取了3528支股票,总的收益是952568911726.374
读取了3551支股票,总的收益是891378791543.3
读取了3563支股票,总的收益是321517638105.94995
读取了3596支股票,总的收益是958488076959.8
# 计算TTM
ap['adjusted_profit_ttm'] = ap['adjusted_profit'] + \
    ap['adjusted_profit'].shift(1) + \
    ap['adjusted_profit'].shift(2) + \
    ap['adjusted_profit'].shift(3)
# 计算PE
ap['pe'] = ap['market_cap']*1e8/ap['adjusted_profit_ttm']
ap
.dataframe tbody tr th:only-of-type { vertical-align: middle; } .dataframe tbody tr th { vertical-align: top; } .dataframe thead th { text-align: right; }
market_cap adjusted_profit nums adjusted_profit_ttm pe
date
2005q1 36983.92 4.79e+10 1354.0 NaN NaN
2005q2 33480.79 5.08e+10 1365.0 NaN NaN
2005q3 35550.39 4.12e+10 1356.0 NaN NaN
2005q4 34282.14 5.24e+09 1351.0 1.45e+11 23.61
2006q1 37398.15 3.94e+10 1350.0 1.37e+11 27.37
2006q2 46981.18 5.93e+10 1350.0 1.45e+11 32.38
2006q3 57851.15 8.25e+10 1371.0 1.86e+11 31.04
2006q4 103254.94 1.06e+11 1411.0 2.87e+11 36.00
2007q1 146560.99 1.22e+11 1434.0 3.70e+11 39.63
2007q2 194038.32 1.75e+11 1455.0 4.86e+11 39.94
2007q3 314147.25 1.75e+11 1495.0 5.78e+11 54.36
2007q4 399894.54 3.24e+11 1527.0 7.96e+11 50.23
2008q1 275222.17 2.63e+11 1549.0 9.36e+11 29.40
2008q2 218147.22 2.38e+11 1585.0 9.99e+11 21.84
2008q3 181841.59 2.99e+11 1602.0 1.12e+12 16.19
2008q4 148164.73 -3.95e+10 1603.0 7.60e+11 19.49
2009q1 193897.07 1.88e+11 1603.0 6.85e+11 28.30
2009q2 243838.01 2.56e+11 1601.0 7.03e+11 34.68
2009q3 236714.11 2.82e+11 1628.0 6.86e+11 34.49
2009q4 289654.17 2.50e+11 1693.0 9.76e+11 29.69
2010q1 287381.09 3.31e+11 1786.0 1.12e+12 25.67
2010q2 229159.63 3.68e+11 1870.0 1.23e+12 18.60
2010q3 274552.73 4.08e+11 1955.0 1.36e+12 20.22
2010q4 304075.07 3.79e+11 2041.0 1.49e+12 20.45
2011q1 317753.77 4.60e+11 2130.0 1.62e+12 19.66
2011q2 303606.75 4.87e+11 2208.0 1.73e+12 17.50
2011q3 266011.94 4.70e+11 2273.0 1.80e+12 14.81
2011q4 249183.86 3.54e+11 2318.0 1.77e+12 14.07
2012q1 260454.61 4.81e+11 2369.0 1.79e+12 14.53
2012q2 260287.17 4.83e+11 2424.0 1.79e+12 14.56
2012q3 246041.91 4.58e+11 2469.0 1.78e+12 13.86
2012q4 267188.55 3.95e+11 2472.0 1.82e+12 14.70
2013q1 269131.41 5.29e+11 2471.0 1.87e+12 14.43
2013q2 244325.68 5.45e+11 2469.0 1.93e+12 12.67
2013q3 274527.84 5.54e+11 2469.0 2.02e+12 13.56
2013q4 271910.98 4.45e+11 2470.0 2.07e+12 13.11
2014q1 268362.67 5.78e+11 2518.0 2.12e+12 12.64
2014q2 276519.70 6.27e+11 2521.0 2.20e+12 12.54
2014q3 327755.87 5.98e+11 2550.0 2.25e+12 14.58
2014q4 426951.90 4.24e+11 2593.0 2.23e+12 19.17
2015q1 532769.06 5.99e+11 2664.0 2.25e+12 23.70
2015q2 651331.02 7.20e+11 2777.0 2.34e+12 27.83
2015q3 466437.52 5.38e+11 2782.0 2.28e+12 20.45
2015q4 584040.48 3.49e+11 2810.0 2.21e+12 26.47
2016q1 499189.88 5.97e+11 2834.0 2.20e+12 22.64
2016q2 507551.95 6.61e+11 2870.0 2.15e+12 23.65
2016q3 532315.95 6.56e+11 2935.0 2.26e+12 23.52
2016q4 556520.67 5.13e+11 3034.0 2.43e+12 22.92
2017q1 591997.14 7.50e+11 3169.0 2.58e+12 22.94
2017q2 589523.97 8.09e+11 3280.0 2.73e+12 21.61
2017q3 629064.59 8.27e+11 3383.0 2.90e+12 21.69
2017q4 631467.32 6.08e+11 3469.0 2.99e+12 21.09
2018q1 621318.52 8.71e+11 3505.0 3.12e+12 19.94
2018q2 559209.62 9.53e+11 3528.0 3.26e+12 17.16
2018q3 544721.89 8.91e+11 3551.0 3.32e+12 16.39
2018q4 486844.08 3.22e+11 3563.0 3.04e+12 16.03
2019q1 624362.63 9.58e+11 3596.0 3.12e+12 19.99
# 数据可视化
import matplotlib.pyplot as plt

n=8
ap['pe'].plot()
plt.show()

ap['adjusted_profit_ttm'].plot()
plt.show()

ax = plt.gca()
ax.set_xticks(range(0, len(list(ap.index)), n))
ap['market_cap'].plot()
plt.show()
# 数据平衡一下,可以显示在一张图里
for x in list(ap.columns):
    ap[x] = ap['market_cap'].max() / ap[x].max() * ap[x]

ap.plot()
plt.show()

全部回复

0/140

量化课程

    移动端课程