数学知识
最大值、最小值、绝对值
最大值:一组数据中的最大数。 最小值:一组数据中的最小数。 绝对值:数值去掉负号后的数
import numpy as np
import pandas as pd
data = [5, -3, 9, 0, -6]
max_value = np.max(data) # 计算最大值
min_value = np.min(data) # 计算最小值
abs_value = np.abs(data) # 计算绝对值
和、积
求和:将一组数值全部加起来的结果称为求和。 求积:将一组数值全部相乘的结果称为求积。 累和:将一组数值按照顺序逐个相加的结果。例如,对于数列[1, 2, 3, 4, 5],其累和是[1, 1+2, 1+2+3, 1+2+3+4, 1+2+3+4+5],即[1, 3, 6, 10, 15]。 累积:将一组数值按照顺序逐个相乘的结果。例如,对于数列[1, 2, 3, 4, 5],其累积是[1, 12, 123, 1234, 12345],即[1, 2, 6, 24, 120]。
data = [1, 2, 3, 4, 5]
sum_value = np.sum(data) # 计算求和
product = np.prod(data) # 计算积
cumulative_sum = np.cumsum(data) # 计算累和
cumulative_product = np.cumprod(data) # 计算累积
data_series = pd.Series(data)
sum_value_pd = data_series.sum() # 计算求和
product_pd = data_series.prod() # 计算积
cumulative_sum_pd = data_series.cumsum() # 计算累和
cumulative_product_pd = data_series.cumprod() # 计算累积
中位数和分位数
中位数是一组数据的中心点,它将数据集分为两个等量的部分。在排序后的数据集中,如果数据点的数量是奇数,那么中位数就是中间的数;如果数据点的数量是偶数,那么中位数就是中间两个数的平均值。例如,对于数列[1, 3, 5, 7, 9],其中位数是 5。
中位数:一组数据的中心点。 分位数:将数据集分为几个等份的数值点。
data = [1, 3, 5, 7, 9]
median = np.median(data) # 计算中位数
data_series = pd.Series(data)
median_pd = data_series.median() # 计算中位数
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
q1 = np.quantile(data, 0.25) # 第一个四分位数
q2 = np.quantile(data, 0.50) # 第二个四分位数,也是中位数
q3 = np.quantile(data, 0.75) # 第三个四分位数
data_series = pd.Series(data)
q1_pd = data_series.quantile(0.25) # 第一个四分位数
q2_pd = data_series.quantile(0.50) # 第二个四分位数,也是中位数
q3_pd = data_series.quantile(0.75) # 第三个四分位数
平均数
算术平均数:所有数据值的总和除以数据值的数量。 几何平均数:所有数据值乘积的 n 次方根。 移动平均数:计算每个滚动时间窗口的平均值。 指数平均数:给近期的数据赋予更大的权重。
data = [1, 2, 3, 4, 5]
mean_np = np.mean(data) # 算术平均数
data_series = pd.Series(data)
mean_pd = data_series.mean() # 算术平均数
from scipy import stats
gmean = stats.gmean(data) # 几何平均数
rolling_mean = data_series.rolling(window=3).mean() # 移动平均数
ema = data_series.ewm(span=3, adjust=False).mean() # 指数平均数
相关系数
衡量两个数值变量间的线性关系强度和方向。
x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 3, 5, 2, 4])
correlation = np.corrcoef(x, y)[0, 1] # 计算相关系数
df = pd.DataFrame({'x': x, 'y': y})
correlation_pd = df['x'].corr(df['y']) # 计算相关系数
方差和标准差
方差和标准差用于衡量数据集的离散程度或波动性。 方差是衡量一组数值的离散程度,或者说,它是衡量数据点与均值之间差异的平方的平均值。方差越大,数据点的离散程度就越高;方差越小,数据点就越接近均值。 标准差是方差的平方根。与方差一样,标准差也可以衡量数据的离散程度。但是,由于标准差的单位与原数据的单位相同(而方差的单位为原数据单位的平方),在许多情况下,标准差比方差更容易理解和解释。 在量化投资中经常用标准差来衡量风险程度,收益率序列的标准差越大,说明收益的波动性越大,风险越高。
data = [1, 2, 3, 4, 5]
variance = np.var(data) # 计算方差
standard_deviation = np.std(data) # 计算标准差
偏度和峰度
偏度是统计数据分布对称性的度量。正偏度表示数据偏向左(或者说偏向小值),负偏度表示数据偏向右(或者说偏向大值)。偏度为0表示数据两侧的分布对称。 峰度是描述数据分布形状的统计量,特别是描述分布尾部的形状。正峰度表示数据分布比正态分布更陡峭/尖锐,负峰度表示数据分布比正态分布更平坦。峰度为0表示数据分布的形状与正态分布相同。
data = [1, 2, 3, 4, 5]
skewness = stats.skew(data) # 计算偏度
kurtosis = stats.kurtosis(data) # 计算峰度
对数收益率
对数收益率是指在金融领域中,用于衡量资产价格变化的收益率的一种计算方法。它通过将资产价格的变动转换为对数形式来表示,从而避免了收益率计算中可能出现的误差和偏差。对数收益率的计算公式为:
对数收益率 = ln(Pt / Pt-1)
其中,Pt 表示当前时刻的资产价格,Pt-1 表示前一时刻的资产价格。对数收益率的计算结果是一个连续的数值,可以更好地反映资产价格的波动情况。