什么是股票的收益率

2019-10-30 14:47:23 浏览数 (1)

学习一时爽,一直学习一直爽,学完再复习下更爽

Hello,大家好,我是 もうり,一个从无到有的技术 语言小白

学完再复习下更爽

什么是股票的收益率

股票收益率是反映股票收益水平的指标。投资者购买股票或债券最关心的是能获得多少收益,衡量一项证券投资收益大小以收益率来表示。反映股票收益率的高低,一般有三个指标

  • 本期股利收益率。是以现行价格购买股票的预期收益率。
  • 持有期收益率。股票没有到期,投资者持有股票的时间有长有短,股票在持有期间的收益率为持有期收益率。
  • 折股后的持有期收益率。股份公司进行折股后,出现股份增加和股价下降的情况。
因此,折股后股票的价格必须调整,所以计算股票的收益率对于金融来说,非常的重要
代码语言:javascript复制
# 案例使用微软的股票
import numpy as np
from pandas_datareader import data as wb
import pandas as pd
代码语言:javascript复制
MSFT = wb.DataReader('MSFT', data_source='iex', start='2015-1-1')#使用iex接口
# 微软
MSFT.head()

open

high

low

close

volume

date

2015-01-02

42.3280

43.0174

42.2191

42.4187

27913852

2015-01-05

42.0649

42.3915

41.9560

42.0241

39673865

2015-01-06

42.0740

42.4087

41.3120

41.4118

36447854

2015-01-07

41.7111

42.1466

41.2666

41.9379

29114061

2015-01-08

42.4096

43.3167

42.3824

43.1716

29645202

代码语言:javascript复制
MSFT.head()

open

high

low

close

volume

date

2015-01-02

42.3280

43.0174

42.2191

42.4187

27913852

2015-01-05

42.0649

42.3915

41.9560

42.0241

39673865

2015-01-06

42.0740

42.4087

41.3120

41.4118

36447854

2015-01-07

41.7111

42.1466

41.2666

41.9379

29114061

2015-01-08

42.4096

43.3167

42.3824

43.1716

29645202

代码语言:javascript复制
MSFT.tail()

open

high

low

close

volume

date

2019-05-03

127.36

129.43

127.25

128.90

24911126

2019-05-06

126.39

128.56

126.11

128.15

24239464

2019-05-07

126.46

127.18

124.22

125.52

36017661

2019-05-08

125.44

126.37

124.75

125.51

28418996

2019-05-09

124.29

125.79

123.57

125.50

27235835

计算证券的收益率

简单收益率

用上一天的收盘价减去今天的收盘价在除以上一天的收盘价

代码语言:javascript复制
MSFT['simple_return'] = (MSFT['close'] / MSFT['close'].shift(1)) - 1
MSFT.head()

open

high

low

close

volume

simple_return

date

2015-01-02

42.3280

43.0174

42.2191

42.4187

27913852

NaN

2015-01-05

42.0649

42.3915

41.9560

42.0241

39673865

-0.009303

2015-01-06

42.0740

42.4087

41.3120

41.4118

36447854

-0.014570

2015-01-07

41.7111

42.1466

41.2666

41.9379

29114061

0.012704

2015-01-08

42.4096

43.3167

42.3824

43.1716

29645202

0.029417

代码语言:javascript复制
import matplotlib.pyplot as plt
MSFT['simple_return'].plot(figsize=(8, 5))
plt.show()

在这里插入图片描述

代码语言:javascript复制
# 平均收益率
sim_return_d = MSFT['simple_return'].mean()
sim_return_d
代码语言:javascript复制
0.0011047908541084086
代码语言:javascript复制
# 对于一天的平均收益率小太的 来计算一年的
# 一年有大约250交易日,去除周末和节假日
sim_return_y = MSFT['log_return'].mean() * 250
print (str(round(sim_return_y, 5) * 100)   ' %')
代码语言:javascript复制
24.788 %
也就是买微软的股票一年可以获利本金的24.788%
对数收益率(除了简单收益率,还有对数收益率)
代码语言:javascript复制
MSFT['log_return'] = np.log(MSFT['close'] / MSFT['close'].shift(1))
MSFT.head()

open

high

low

close

volume

simple_return

log_return

date

2015-01-02

42.3280

43.0174

42.2191

42.4187

27913852

NaN

NaN

2015-01-05

42.0649

42.3915

41.9560

42.0241

39673865

-0.009303

-0.009346

2015-01-06

42.0740

42.4087

41.3120

41.4118

36447854

-0.014570

-0.014677

2015-01-07

41.7111

42.1466

41.2666

41.9379

29114061

0.012704

0.012624

2015-01-08

42.4096

43.3167

42.3824

43.1716

29645202

0.029417

0.028993

代码语言:javascript复制
MSFT['log_return'].plot(figsize=(8, 5))
plt.show()

在这里插入图片描述

代码语言:javascript复制
log_return_d = MSFT['log_return'].mean()
log_return_d
代码语言:javascript复制
0.0009915141278122766
代码语言:javascript复制
log_return_y = MSFT['log_return'].mean() * 250
log_return_y
代码语言:javascript复制
0.24787853195306914
代码语言:javascript复制
print (str(round(log_return_y, 5) * 100)   ' %')
代码语言:javascript复制
24.788 %

有时这两个收益率比较的接近

对于大多数人不可能只买一只股票,下面来计算多支股票

代码语言:javascript复制
# 英国石油公司(BP) 福特汽车公司(F) 埃克森美孚公司(XOM) 有限责任公司(LNC)苹果(AAPL)
tickers = ['BP', 'F', 'XOM', 'LNC', 'AAPL']
mydata = pd.DataFrame()
for t in tickers:
    mydata[t] = wb.DataReader(t, data_source='iex', start='2015-1-1')['close']
代码语言:javascript复制
mydata.head()

BP

F

XOM

LNC

AAPL

date

2015-01-02

29.0451

11.7974

77.6966

52.6303

101.1385

2015-01-05

27.5060

11.3366

75.5707

51.0080

98.2893

2015-01-06

27.3003

11.2291

75.1689

49.3764

98.2985

2015-01-07

27.3688

11.5517

75.9306

50.0639

99.6769

2015-01-08

27.9860

11.8435

77.1944

51.2138

103.5067

代码语言:javascript复制
mydata.iloc[0]
代码语言:javascript复制
BP       29.0451
F        11.7974
XOM      77.6966
LNC      52.6303
AAPL    101.1385
Name: 2015-01-02, dtype: float64

由于第一行完全不一样,对于有经验的人会将第一行全部变为同一个数

mydata / mydata.iloc[0] * 100 将所有数据除以第一个数据乘以100

代码语言:javascript复制
(mydata / mydata.iloc[0] * 100).plot(figsize = (15, 6));
plt.show()

个人觉得波动挺大的,果然股票有风险 苹果在2018下半年股票暴跌

投资需谨慎

0 人点赞