iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
自我挑戰組

金融資料科學系列 第 2

定量方法 - 統計概念

  • 分享至 

  • xImage
  •  

介紹

分佈的四個屬性:
1.「集中趨勢」-回報集中
2.「分散度」-收益從中心分散到多遠
3.「偏度」-分佈是對稱的還是不平衡的
4.「峰度」-極端結果的可能性有多大

統計的本質

統計學既可以指數據,也可以指方法。統計方法包括以下幾種:

  • 描述統計:透過總結將數據轉化為訊息
  • 統計推論:根據機率論進行預測

群體和樣本

「總體」是指定群組的所有成員。 「參數」是總體的描述性測量:

  • 尺寸:$N$
  • 平均值:$\mu$
  • 標準差:$\sigma$
  • 變異數:$\sigma^2$
  • 比例:$p$

「樣本」是總體的一個子集。抽樣過程用於嘗試使樣本代表總體。樣本統計量是樣本的描述性測量。

  • 尺寸:$n$
  • 平均值:$\bar{X}$
  • 標準:$S$
  • 變異數:$S^2$
  • 比例:$\hat{p}$

測量尺度

  • 「名目尺度」用於對資料進行分類,但不用於對資料進行排名。一個例子是共同基金的風格(小型股與大盤股)。此等級根據投資策略對基金進行分類,但並未對它們進行排名。
  • 使用“序數尺度”,資料被分類並根據某些特徵進行排序。一個例子包括晨星對共同基金的星級評級。
  • 「間隔尺度」提供排名並確保尺度值之間的差異相等。一個例子是攝氏溫標。不存在真正的零點,因此比率毫無意義。
  • “比率刻度”類似於間隔刻度,但具有真正的零點。這使得比率變得有意義。一個例子是貨幣計量。

資料的頻率分佈和圖形表示

頻率分佈

「頻率分佈」將資料總結為幾個區間,這在處理大型資料集時很有幫助。

建構頻率分佈時
1.首先對資料進行排序並計算「範圍」(最大值-最小值)。
2. 決定所需的「間隔數」$k$,這使得每個間隔的寬度等於$\frac{range}{k}$。
3. 然後,建立一個表格,顯示每個間隔中的觀測值數量,即絕對頻率。每個觀察值只會落在一個區間內,因為區間不會重疊。

可以修改上述方法以使間隔以四捨五入的數字(例如整數)停止和開始。 $k$ 的選擇有些隨意,但應該選擇為最好地總結數據。

「相對頻率」為$\frac{絕對\頻率}{總\數量\觀測值}$

當您從第一個間隔移動到最後一個間隔時,「累積相對頻率」將相對頻率相加。

「頻率分佈」說明了大部分資料的位置並顯示了分佈的形狀。

直方圖

直方圖使用頻率分佈中的資料來建立長條圖。 每個條形的高度代表頻率。如果特定間隔內沒有觀測值,則條形高度將為零。

頻率多邊形與累積頻率分佈

「頻率多邊形」在 x 軸上繪製每個間隔的中點,在 y 軸上繪製絕對頻率。這些點用「線段」連接。

線圖也可以用來說明累積頻率分佈。這顯示了有多少觀測值低於某個值。大多數觀測將位於陡峭的斜坡上。

集中趨勢的衡量標準

集中趨勢的量測顯示資料的中心位置。這些是最常見的統計指標。最常見的集中趨勢量是算術平均數、中位數、眾數、加權平均數和幾何平均數。

算術平均值

「算術平均值」是衡量資料中心位置最常見的方法。它是觀測值的總和除以觀測值的數量。總體平均值和樣本平均值都可以計算。

「總體平均值」是整個總體的算術平均值。所有觀察結果均包含在該參數的計算中。對於擁有 $N$ 成員的總體,總體平均值為:
$$μ=\frac{\sum^N_{i=1}{X_i}}{N}$$

「樣本平均值」或平均值是樣本的算術平均值。對於具有 n 個觀測值的樣本,樣本平均值為:
$$\bar{X}=\frac{\sum^n_{i=1}{X_i}}{n}$$

「橫斷面資料」是捕捉特定時間點不同單位特徵的觀察結果。例如,富時 100 指數公司的平均股息殖利率是橫斷面平均值。

「時間序列資料」是同一單位在不同時間點的觀察結果。例如,過去 10 年富時 100 指數的平均月末股息殖利率就是時間序列平均值。

算術平均值就像物體的重心。與平均值的偏差總和為零。

$$\sum_{i=1}^n{(X_i−\bar{X})}=0$$

平均值可能會因極端值或“異常值”而產生偏差。例如,3、8、9、10 和 100 的平均值為 26。例如,對於包含 100 個觀測值的樣本,2% 的截尾平均值將是沒有最高值和最低值的算術平均值。使用縮尾平均值時,計算中不會排除任何觀測值,但任何離群值都會調整為上限或下限。

平均值很容易使用,並且使用有關觀測值大小和幅度的所有資訊。由於平均值對極端值敏感,因此可能會產生誤導。

加權平均值

投資組合的回報是根據單一資產的回報計算的加權平均回報,其中應用於每個資產回報的權重是投資於該資產的投資組合的比例。

加權平均公式為:

$$\bar{X_w}=\sum_{i=1}^n{w_iX_i}$$

$w_i$ 是權重

$\sum^n_{i=1}{w_i=1}$

權重小於零是允許的,這代表投資組合中的「空頭資產」。

加權平均值用於計算過去的投資組合或指數回報。它們還可以用於透過權衡各種場景來計算未來的預期回報。

幾何平均值

幾何平均值用於平均一段時間內的比率或計算成長率。它通常用於平均不同時期的投資組合回報。

\開始{方程式*}
G = \sqrt[n]{x_{1}x_{2}...x_{n}} = \sqrt[n]{∏_{i=1}^n{X_i}}
\end{等式*}其中 $X_{i}≥0$ 對於 i=1,2,…,n。

計算幾何平均值時,必須為每個回報加一。對於T持有期收益,幾何平均收益為:

$$R_G=\sqrt[T]{∏_{t=1}^T{(1+R_t)}}−1$$**權重小於零是允許的,這表示a中的「空頭資產」文件夾。

加權平均值用於計算過去的投資組合或指數回報。它們還可以用於透過權衡各種場景來計算未來的預期回報。

幾何平均值

幾何平均值用於平均一段時間內的比率或計算成長率。它通常用於平均不同時期的投資組合回報。

\開始{方程式*}
G = \sqrt[n]{x_{1}x_{2}...x_{n}} = \sqrt[n]{∏_{i=1}^n{X_i}}
\end{等式*}其中 $X_{i}≥0$ 對於 i=1,2,…,n。

計算幾何平均值時,必須為每個回報加一。對於T持有期收益,幾何平均收益為:

$$R_G=\sqrt[T]{∏_{t=1}^T{(1+R_t)}}−1$$

幾何平均值總是小於或等於算術平均值。當所有觀測值具有相同值時,兩者相等。觀測值的較大離散將增加幾何平均值和算術平均值之間的差異。

幾何平均報酬率代表投資在多個時期的複合成長率。相較之下,算術平均值用於衡量單一時期的績效。

調和平均數

調和平均值並不常用,但適用於某些情況。它是倒數平均值的倒數,計算公式如下:
$$\bar{X_H}=\frac{1}{\Big(\frac{1}{n}\Big)\Big(\displaystyle\sum_{i=1}^n{\frac{1}{X_i }}\大)}$$
其中$X_i>0$。

觀測的權重與其大小成反比。如果您希望在幾個時期內投資相同的美元金額時為證券支付平均價格(也稱為「成本平均技術」),那麼這將是合適的。

除非所有觀測值都相同,否則調和平均值始終小於幾何平均值(小於算術平均值)。

中位數
中位數是排序清單的中間項。假設有 $n$ 個項目:

  • 如果 $n$ 是奇數,則中位數為第 $(\frac{n+1}{2})$ 項。
  • 如果 $n$ 是偶數,則中位數是第 $(\frac{n}{2})$ 項和第 $(\frac{n+2}{2})$ 項的平均值。

中位數對極值不敏感,因為它只關注位置,而不關注大小。中位數的計算比平均值更複雜(數學上更難處理)。

眾數

眾數是分佈中最常出現的數值。有些發行版具有不只一種模式,而其他發行版則沒有。僅具有一種眾數的分佈稱為單峰分佈。

按區間分組的資料具有模態區間。這是直方圖中最高的長條。

該眾數是唯一可以與名目資料一起使用的集中趨勢量測。

其他位置量測:分位數

四分位數、五分位數、十分位數和百分位數

如果我們按升序排列觀測值,則分位數是一個值,等於或低於該值時可以找到資料的指定部分。

實務上有許多常見的分位數。分佈通常分為四個四分位數、五個五分位數、十個十分位數或一百個百分位數。

$y_{th}$ 百分位數是等於或低於 $y$ 百分比的觀測值的值。

四分位數、五分位數和十分位數的數值是基於百分位數。例如,第 90 個百分位數等於第九個十分位數,第 50 個百分位數等於第二個四分位數。請注意,第 50 個百分位也是中位數。

依升序(從最低到最高)排列的 n 個觀測值清單中 $y_{th}$ 百分位數 ($L_y$) 的位置計算如下:

$$L_y=(n+1)\frac{y}{100}$$
如果 $L_y$ 不是整數,則在兩個值之間進行線性內插。

\begin{equation*}
R_{t} + 1 = \sqrt[t]{(1+R_{1})(1+R_{2})...(1+R_{t})}
\end{equation*}

import pandas as pd

import math
from scipy.stats.mstats import gmean 
import statistics

import csv
from urllib.request import urlopen
from bs4 import BeautifulSoup

import scipy
import scipy.stats as stats
from scipy.stats import norm, kurtosis, skew
# 幾何平均數
d = {'年份': [2021, 2022, 2023], 
     '股票%': [2.69, 11.66, 21.77], 
     '股票收益%':[-7.56, 18.25, 16.18]}
df = pd.DataFrame(data=d)

# 幾何平均回報
share = df['股票%'].tolist()

# 重新定義回報,透過增加 1.0 使其為正值
g_share = list(map(lambda i: i/100+1, share))

gmean(g_share) -1

# 算術平均回報,並將其與股票的幾何平均回報進行對比
df['股票%'].mean()

# 幾何平均收益
g_income = list(map(lambda i: i/100+1, df['股票收益%'].tolist()))
gmean(g_income) - 1

# 算術平均回報率,並將其與股票的幾何平均回報率進行對比
df['股票收益%'].mean()

# 調和平均
share_price = [17, 11.98, 15]

print("調和平均值為 % s " % (statistics.harmonic_mean(share_price)))

分位數:確定或近似百分位數的值(當位置不是整數時)。
\begin{equation*}
L_{y} = (n+1) * \frac{y}{100}
\end{equation*}

# 網路抓取資料

html = urlopen("https://hk.finance.yahoo.com/quote/0050.TW/holdings/")

soup = BeautifulSoup(html, "html.parser")
table = soup.findAll("table")[0]
rows = table.findAll("tr")

with open("0050.csv", "wt+", newline="") as f:
    writer = csv.writer(f)
    for row in rows:
        csv_row = []
        for cell in row.findAll(["td", "th"]):
            csv_row.append(cell.get_text())
        writer.writerow(csv_row)

holdings = pd.read_csv('0050.csv')
 
holdings.head()

# 使用給定的列和所需的百分位建立一個計算 Ly 的函數
def loc_y(column,percentile):
    n = len(column)
    loc = (n+1)*percentile/100
    return loc

上一篇
定量方法 - 貨幣的時間價值
系列文
金融資料科學2
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言