Python的一般财务分析(第1部分)

一篇文章探讨了如何获取有关金融工具的信息。接下来,将发表几篇文章,内容涉及如何初步利用所获得的数据,如何分析和制定策略。资料基于国外来源的出版物和在线平台之一上的课程。

本文将讨论如何计算获利能力,波动率并建立主要指标之一。

import pandas as pd
import yfinance as yf
import numpy as np
import matplotlib.pyplot as plt

sber = yf.download('SBER.ME','2016-01-01')

盈利能力


此值表示一个交易日内股票价值的百分比变化。它不考虑股息和佣金。使用Pandas软件包中的pct_change()函数很容易计算。

通常,他们使用获利能力日志,因为它使您可以更好地了解和调查随时间的变化。

#   `
daily_close = sber[['Adj Close']]

#  
daily_pct_change = daily_close.pct_change()

#  NA   0
daily_pct_change.fillna(0, inplace=True)

print(daily_pct_change.head())

#   
daily_log_returns = np.log(daily_close.pct_change()+1)

print(daily_log_returns.head())

图片

为了从获得的数据中找出每周和/或每月的获利能力,请使用resample()函数。

#   `sber`      
monthly = sber.resample('BM').apply(lambda x: x[-1])

#  
print(monthly.pct_change().tail())

#  `sber`        
quarter = sber.resample("4M").mean()

#  
print(quarter.pct_change().tail())

图片

pct_change()函数使用方便,但是反过来隐藏了如何获取值。可以使用Pandas软件包中的shift()来完成有助于理解该机制的类似计算。每日收盘价除以过去的价格(移位一个),然后从接收的值中减去一个单位。但是有一个小负号-结果的第一个值是NA。

获利能力的计算基于以下公式:

图片

其中,p是价格,t是时刻,r是获利能力。

接下来,构建获利能力分布图并计算主要统计数据:

#  
daily_pct_change = daily_close / daily_close.shift(1) - 1

print(daily_pct_change.head())

图片

#  `daily_pct_c`
daily_pct_change.hist(bins=50)

plt.show()

#  
print(daily_pct_change.describe())

图片

该分布看起来非常对称,并且正态分布在0.00左右。对于其他统计值,使用description()函数。结果,可见平均值略大于零,并且标准偏差几乎为0.02。

累积收益


累计每日收益可用于确定指定时间段内的投资价值。可以按以下代码所示进行计算。

#   
cum_daily_return = (1 + daily_pct_change).cumprod()

print(cum_daily_return.tail())

图片

#    
cum_daily_return.plot(figsize=(12,8))

plt.show()

图片

您可以重新计算每月的收益:

#   
cum_monthly_return = cum_daily_return.resample("M").mean()

print(cum_monthly_return.tail())

图片

在分析股票时,了解如何计算收益非常有价值。但是,与其他股票相比,它甚至更有价值。

拿一些股票(他们的选择完全是随机的)并建立他们的图表。

ticker = ['AFLT.ME','DSKY.ME','IRAO.ME','PIKK.ME', 'PLZL.ME','SBER.ME','ENRU.ME']

stock = yf.download(ticker,'2018-01-01')

#    `daily_close_px`
daily_pct_change = stock['Adj Close'].pct_change()

# 
daily_pct_change.hist(bins=50, sharex=True, figsize=(20,8))

plt.show()

图片

另一个有用的图形是散布矩阵。可以使用scatter_matrix()函数轻松构建它,该函数是pandas库的一部分。Daily_pct_change用作参数,并且设置了“内核密度估计”参数。此外,您可以使用alpha参数设置透明度,并使用figsize参数设置图形的大小。

from pandas.plotting import scatter_matrix

#   `daily_pct_change`  
scatter_matrix(daily_pct_change, diagonal='kde', alpha=0.1,figsize=(20,20))

plt.show()

图片

目前为止就这样了。下一篇文章将介绍计算波动率,平均值以及使用最小二乘法的方法。

All Articles