Andy's Gamma

合格的持有人1.2 - 投資需要夢想,但不要妄想

投資前的準備工作

在互聯網時代的今天,買賣證券的難度已經不能和當年《聰明的投資者》寫作的年代同日而語。從當年要和證券經紀打電話下單,到現在只需要在手機APP上點幾下就可以買賣,操作的門檻確實是大大降低。但撥開這些表層的變化,要成作爲一個合格的持有人需要學習和瞭解的事情,卻一點沒有減少,反而因爲可以投資的產品日新月異,層出不窮,讓我們在做出持有決策前,需要做出更加完整深入的研究。無論投資的形式如何改變,投資的本質,依然符合當年格雷厄姆祖師爺的精確概述:

投資行爲是一種基於深入徹底的分析,在確保本金足夠安全的前提下,期望獲得合理回報的買賣操作。

雖然具體的投資產品層出不同,每一次投資決策前的研究分析確實也需要具體問題具體分析,但在觀念篇,有些底層的普適框架還是可以先建立起來。在這些大框架大體系下再去瞭解每一個具體的投資產品,相信會達到事半功倍的效果。

根據我們投資的定義,投資調研是圍繞兩個問題展開的:

下面我們以香港市場為例子,探討在股票和債券投資中,本金安全和合理回報的問題。

合理的回報從哪來?

無論投資股票還是債券,都必須弄清楚三個問題:

先來看債券。債券投資一般都是投政府債。顧名思義,政府債就是借錢給政府(控制人),然後政府會根據財政預算把錢用在各種發展項目,刺激經濟發展,然後通過稅收(收益來源)獲得收益。稅收基本是每年穩定足夠覆蓋債務支出的(這裏描述的主要基於香港特區政府過往表現,其他國家地區的政府可能要具體分析),違約風險不高,現金流基本就是穩定的票息加到期本金。

雖然債券投資也可以投企業債券,特別是某些企業債的票息看起來非常誘人,但相對應的違約風險也是比較高的,投資前需要慎重研究。企業債的控制人就是發行的企業,一般會在發行的時候説明資金的用途,但具體落實到什麽程度就真的無人知曉。收益來源就是企業的營收,在不違約的前提下,現金流也是票息加本金。

然後來看股票。股票的發行方一般都是企業,持有股票就等於持有企業的控制權,可以在股東大會上投票(雖然小股東很少會這麽做)。企業拿到股東的錢,就會進行各種經營活動,產生營業收入。營業收入可以說是第一收益來源。但需要經過層層剋扣(經營成本,利息支出,稅收支出等),最後剩下的净利潤才是股東真正的收益。這些收益一部分以分紅的形式回饋股東,另一部分就繼續留在公司賬上,為未來的業務發展提供資本。這是比較理想的一般情況。持有股票的現金流回報是最不確定的,也就是一般認爲的風險最大。和債券類似的是,股票的現金回報也是股息(分紅現金)和資本回報(股票沒有到期日,但一般有比較活躍的二級市場,可以隨時買賣)。

爲何說股票的回報現金流是最不確定的呢?我們分別從分紅金額和買賣價格兩方面分析。從企業的營收到最後的分紅,需要經歷層層關卡。首先是還清給供應商,員工,服務商等的費用和支出,扣除折舊后剩下的算是營業的利潤。這些利潤還要先付給債權人利息(如果我們是企業債券持有人,我們在這裏可以分錢)還有政府的稅收。這些都分完了,剩下的才是屬於股東的。但并非所有利潤都會以分紅的現金形式回饋股東,根據公司不同的發展需求,不同公司有不同的分紅比例。比較成熟的大公司,擴張需求不大,相對來説分紅比例比較高,但如果需要大量研發投入,或者需要開拓新市場的公司,就可能需要把更多利潤留在公司賬本上了。(分紅比例高低沒有優劣之分,但要符合公司的發展需求,如果出現明顯反常識的情況,就要警惕財務造假的可能)由於市場和競爭環境變幻莫測,即使是專業的分析師也很難預測企業的營收和利潤,所以股息分紅的現金流基本上是不可預測的。

那股票買賣的價格呢?我們能不能趁著低價買入,高價賣出呢?從現在往回看很容易,但從現在向前看幾乎是不可能的。股票的價格基於價值,也就是企業的市場競爭力,直接體現在創造利潤的能力。但價格和價值的偏離可以非常誇張,當中包含各種市場博弈,供需平衡還有投資的氛圍和情緒(大家對於未來的預期是悲觀還是樂觀的),所以價格變化的預測包含各種複雜的因素。很難可以相信,我們普通投資者,可以通過這個獲得盈利而不是虧損。

合理回報知多少

既然我們知道債券的回報主要來源於利息,股票的回報主要來源與利潤,那作爲香港的投資者,我們還是想知道,到底利息回報和長期的利潤回報應有的期望值。

債券的合理回報

雖然政府債券是我們借錢給政府,但到底政府要給多少利息,并不是我們説了算,也不是政府説了算,而是市場説了算,也就政府債券的票息,會根據發行時的市場利率決定。發行後,債券價格也會跟著利率的走勢變化,但如果我們是一直持有到期(最長一般是10年),那外部利率的變化和我們持有人關係不大,最終的收益率就是票息率。

我嘗試從香港金管局的公開數據API看近几年的政府債券(5年期)收益率變化,作爲參考,我也畫了銀行拆借利率(6個月,因爲政府債一般都是半年派息)來對比。從下圖可以看到兩者的走勢非常相似,但政府作爲最强的信用代表,利息肯定要比銀行還要低一點,所以長期政府債券投資的合理回報應該在年化2%左右。如果是類似銀行等高信譽的企業債券,大致可以期望2.6%的年化收益。

Code

import requests import pandas as pd import matplotlib.pyplot as plt

# GOV bond yield data url = "https://api.hkma.gov.hk/public/market-data-and-statistics/monthly-statistical-bulletin/gov-bond/instit-bond-price-yield-periodaverage?segment=Benchmark" data = requests.get(url).json()['result']['records'] df = pd.DataFrame(data) df['end_of_month'] = pd.to_datetime(df['end_of_month']) df = df[['end_of_month','ind_pricing_5y']].set_index('end_of_month') mean_yield= df['ind_pricing_5y'].mean()

# GOV bond yield plot plt.figure(figsize=(10,6)) plt.plot(df, marker='o', label="Gov Bond 5Y Yield (%)") plt.axhline(mean_yield, color='r', linestyle='--', label=f'Average yield: {mean_yield:.2f}') plt.title("Hong Kong Government Bond Yield 5Y (Monthly, 2018-2026)") plt.xlabel("Date") plt.ylabel("Yield (%)") plt.legend() plt.grid(True)

# HIBOR data url = "https://api.hkma.gov.hk/public/market-data-and-statistics/monthly-statistical-bulletin/er-ir/hk-interbank-ir-periodaverage?segment=hibor.fixing" data = requests.get(url).json()['result']['records'] df = pd.DataFrame(data) df['end_of_month'] = pd.to_datetime(df['end_of_month']) df = df[['end_of_month','ir_6m']].set_index('end_of_month') mean_yield= df['ir_6m'].mean()

# HIBOR plot plt.figure(figsize=(10,6)) plt.plot(df, marker='o', label="HIBOR 12M (%)") plt.axhline(mean_yield, color='r', linestyle='--', label=f'Average yield: {mean_yield:.2f}') plt.title("Hong Kong Interbank Offered Rate 6M (Monthly, 2018-2026)") plt.xlabel("Date") plt.ylabel("Yield (%)") plt.legend() plt.grid(True)

plt.show()

qualified_holder_1_2_3_0

qualified_holder_1_2_3_1

股票的合理回報

股票市場的收益來源是企業創造的利潤,這些利潤就是企業創造的價值,也就是體現在国内生产总值(GDP)的增長(兩者高度相關但并非完全一致)。穿越市場周期,經濟周期,股市的長期回報率應該依托在GDP增長率之上。有一種看法說,股票盈利分兩種,一種把股市當作賭場,你贏對手的錢,另一種把股市當作市場,你分走了企業的錢。作爲長期持有人,我們本來就沒想著要賺對手的錢,只想著分企業的賺到錢就好。但無奈一進入市場就發現,對手的錢“容易賺呀”。辛辛苦苦等四五年賺了年化5%,人家抓漲停(A股特色),一天賺了我兩年的錢,誰看了不眼紅。如果確實覺得想賺對手的錢,那下面的内容對你可能幫助不大。但如果你還是堅定地想跟著我慢慢地分企業的錢,雖然對比起那些快錢,確實有點心理不平衡,但無奈這就是現實,這才是合理的“穩穩的幸福”。

一般選擇代表香港市場的指數,大家都會想到“恆生指數”,作爲規模最大,發行歷史最悠久的指數基金,盈富基金(2800)是我認爲可以作爲香港股市風向標的代表資產。我嘗試從香港統計局的網頁獲取香港歷年的GDP數據(最早可以到2000年)和從雅虎財經獲取盈富基金的歷史價格(已股息復權,auto_adjust=True,最早到2008年)。由於股市價格包含對未來的預期,所以兩者的走勢還是有點不同步的。但從長期來看,香港的GDP增長大概在4%,股市的年度回報率平均值在6%左右。

Code

import yfinance as yf

url = "https://www.censtatd.gov.hk/api/get.php?id=310-34101&lang=en¶m=N4KABGBEDGBukC4yghSBBAwgFQJIDVdsBNRMAbQF1wwBfAGhsgGd4kVVIAhdAZV0wBxACIAFUWXI1UUYgHtiAfQCMAEwAOigKSLmkaWGoQGTdQFMATgEs5qshzTMALgEMLTspABMABh-L9Y0Y0KzskSABmZR8AWgiAFmiA4KgAGxcAOwBzTzMM-VogA" headers = { "User-Agent": "Mozilla/5.0", "Accept": "application/json" } response = requests.get(url, headers=headers) data = response.json()['dataSet'] df = pd.DataFrame(data)

df.index = pd.to_datetime(df['period']) mean_growth = df['figure'].mean()

plt.figure(figsize=(10,6)) plt.plot(df["figure"], marker="o", label = 'Annual GDP Change') plt.axhline(mean_growth, color='r', linestyle='--', label=f'Average growth: {mean_growth:.2f}') plt.title("Hong Kong GDP Change") plt.xlabel("Year") plt.ylabel("GDP Change (%)") plt.legend() plt.grid(True)

ticker = "2800.HK" price_df = yf.download(ticker, period='max', auto_adjust=True) adj_close_ts = price_df["Close"].iloc[:, 0] window = 252 annual_ret = adj_close_ts.rolling(window).apply(lambda ts: ts.iloc[-1]/ts.iloc[0]-1) mean_growth = annual_ret.mean()

plt.figure(figsize=(10,6)) plt.plot(annual_ret, label = '2800 Annual Return') plt.axhline(mean_growth, color='r', linestyle='--', label=f'Average growth: {mean_growth:.2%}') plt.title("Tracker Fund Annual Return") plt.xlabel("Year") plt.ylabel("Annual return (%)") plt.legend() plt.grid(True)

plt.show()

c:\Users\andyh\AppData\Local\Python313\Lib\site-packages\yfinance\scrapers\history.py:204: Pandas4Warning: Timestamp.utcnow is deprecated and will be removed in a future version. Use Timestamp.now('UTC') instead. dt_now = pd.Timestamp.utcnow() [*********************100%***********************] 1 of 1 completed

qualified_holder_1_2_5_1

qualified_holder_1_2_5_2

本金安全就是保本?

大家都知道的投資常識:想要獲得投資回報,就需要承擔相應的投資風險。回到研究本金安全性的問題上,我們研究的重點就是弄清楚有什麽風險因素,會導致我們本金損失。不同產品的風險因素千奇百怪,一般的普通投資者不容易完全研究清楚。所以投資機構作爲專業人士,其實在發行產品前,都要做出非常清晰的風險披露。以上面的盈富基金爲例,她的產品資料概要就用差不多兩頁半的篇幅介紹了整整十六項風險因素,有興趣的讀者可以看看(鏈接文件第三頁開始)。上面寫的風險都是投資機構們在歷史上,用真金白銀的損失買回來的經驗,雖然要全部搞清楚確實需要不低的門檻,但認認真真過一遍,絕對是投資學習非常有價值的一次經驗。

刪繁就簡,我們這一節暫時只聚焦於市場風險,也就是價格波動導致的損失。真正進入市場后就會明白,這種波動不僅是財務衝擊,更是精神壓力,那種彷徨,悔恨,自我懷疑,焦慮但又無力的感覺,是成爲合格的持有人必須承受,也必須付出的代價。關於這一點的討論,我非常推薦《致富心態》中“天下沒有白吃的午餐”。(當然,整本書其實寫的都非常有趣又深度,强烈推薦)

債券市場的風險

由於香港的債券市場其實不算活躍(相比股市),加上香港特區政府財政上也是量入爲出的保守風格,政府債券的價格波動不大。但其實除了價格波動,債券更大的風險是一般不容看觀察到的違約風險,就是借出去的錢要不回來了。雖然一般我們看到比較穩定的政府很少有違約的情況,但是一旦出現違約情況,損失可就是本金的全部,之前大陸流行過一段時間的P2P借貸,就有出現過這種暴雷的情況,2008的次貸危機,本質也是債券違約導致的市場崩盤。這種不出事則已,一出事就是大事的風險,在做任何投資以前,都必須慎重研究。去哪找參考資料?發行材料,任何證券都必須披露的,政府債券都不例外(但篇幅長過地球半徑倒也是真的)!

股票市場的風險

公司股票和公司債券都是持有人分享公司營業收入的憑證。只不過債券持有人分錢的順序靠前,而且金額固定,所以一般價值相對穩定。而股票持有人則是分營收最後剩下的,有好有壞。經營狀況好的時候可能剩下很多,不好的時候不僅一點好處分不到,甚至還剩下一屁股虧損,這時候往往就會反映到市場價格波動上面。股票一般都是沒有到期日,可以一直持有到公司退出市場(破產,退市,并購,私有化等)。香港的股票市場比較活躍,持有人除了把股票賣給公司本身以外,也可以在交易所轉讓給其他投資者,重新佈置合理的資產配置。

在《聰明的投資者》寫作的年代,在股市的投資標的基本上就是股票。所以格雷厄姆祖師爺推薦我們在不同的行業選出大概10到20支股票長期持有,來獲取市場的長期平均收益,大致就是道瓊斯指數的收益。但經過這麽多年的發展,當時要靠自己配置的指數化投資思路,現在已經可以通過共同基金,交易所買賣基金(ETF)一步到位地實現了。作爲香港市場的配置,直接投資於盈富基金(2800,還輪不到我來業配)我認識是最省時省力的選擇。下面我也是主要用盈富基金來做例子,用實際發生過的歷史數據,來建立市場波動的基本概念。

回報的不確定性

上面看到盈富基金的年度回報平均值大概6%,但也能看到歷年來上下波動非常大。這裏我們把這些回報匯總起來,得到的統計分佈情況如下

Code

def ret_density_plot(window=252, title = 'Annual Return'): annual_ret = adj_close_ts.rolling(window).apply(lambda ts: ts.iloc[-1]/ts.iloc[0])**(252/window) annual_ret -= 1 plt.figure(figsize=(10,6)) plt.hist(annual_ret, bins=50, density=True, label = '2800 Annual Return', alpha=0.5) mean_growth = annual_ret.mean() plt.axvline(mean_growth, color='g', linestyle='--', label=f'Average growth: {mean_growth:.2%}') loss_prob = (annual_ret<0).mean() plt.axvline(0, color='r', linestyle='--', label=f'Loss probability: {loss_prob:.2%}') max_loss= annual_ret.min() plt.axvline(max_loss, color='b', linestyle='--', label=f'Maximum loss: {max_loss:.2%}') plt.title(title) plt.xlabel("Annual Return") plt.ylabel("Density") plt.legend() plt.grid(True)

ret_density_plot(252)

qualified_holder_1_2_10_0

雖然平均值確實在0的右側,但落在0左側的區域依然非常明顯,大約占了總面積的37%。也就是在持有10年的過程中,大概有3到4年我們會經歷年度虧損。雖然前途確實是光明的,但道路也太曲折了。特別是剛開始持有的前幾年如果不幸是熊市(特別是看到大牛市進入市場的,可能很快就要經歷反轉了),持有體驗會非常糟糕,可能熬不過三年就割肉離場了。更可怕的是,萬一剛好在最頂部的時候入場,一年以後最大可能損失有53%,也就是本金的一大半,絕大部分人在這種情況下都會對股市徹底失去耐心和信心,無論長期回報如何豐厚,都幾乎不可能等到這個“長期”到來的一天了。

Code

price_ts = adj_close_ts.loc['2008-01-01':] running_max = price_ts.cummax() drawdown = price_ts/ running_max - 1.0 max_dd = drawdown.min() end_date = drawdown.idxmin() bottom = price_ts.loc[end_date] start_date = price_ts.loc[:end_date].idxmax() peak = price_ts.loc[start_date]

plt.figure(figsize=(10,6)) plt.plot(price_ts, label = '2800 Price') plt.axvline(start_date, color='r', linestyle='--', label=f'Peak of {peak:.2f} at {start_date:%Y-%m-%d}') loss_prob = (annual_ret<0).mean() plt.axvline(end_date, color='r', linestyle='--', label=f'Down to {bottom:.2f} at {end_date:%Y-%m-%d} loss {-max_dd:.2%}') # plt.title(title) plt.xlabel("Annual Return") plt.ylabel("Density") plt.legend() plt.grid(True)

qualified_holder_1_2_12_0

另外一個可以展示持有過程痛苦的指標是回撤,簡單來説,就是最不幸的投資時機(最高點入場,最低點離場)產生的回報。由於屬於非常極端的情況,屬於事後分析,即使我們想複製(比如說有人搞了個追求最大損失的投資比賽),也很難做到。歷史上有兩段超過50%回撤的行情,一個是08年的金融危機,另一個是21年的新冠疫情,在如此絕望中還能保持對未來的希望嗎?這是對一個真正的持有人非常嚴格的一次考驗。

面對不確定性的解決方案

上面展示了股票市場的兩面性。一方面市場波動非常大,不確定性很高,但另一方面又展示了豐厚的平均回報,讓人又愛又恨。對於普通的投資者,在投資方面投入有限的情況下,是否有簡單實用的辦法盡量規避風險,爭取收益呢?還真有,就四個字,長期持有!(另外一個面對不確定性的賢者之石“分散投資”在我們投資指數基金的時候已經自動激活了。)

還是基於盈富基金的歷史數據説話(看下圖)。當我們把持有年限從一年拉長,當我們持有三年以後,虧損的概率從之前的37%驟降到26%,如果拉長到10年,僅有1.2%的概率會獲得虧損,這就是長期持有的力量。這種力量的來源一個是經濟周期的起起伏伏,雖然曲折,但整體還是向上的,不過需要一定的時間來實現。從統計的角度來看,不同年份的收益相關性很低(這也是爲何單純基於價格的預測很難有效),經過足夠長時間的持有,相當於在時間維度上進行分散(另外一個很推薦的利用時間分散投資的操作叫定投,後面章節會細説),這樣能保持均值的情況下減低方差。

Code

for i in [3, 5, 10]: ret_density_plot(window=window*i, title=f'Annual Return {i}Y')

qualified_holder_1_2_14_0

qualified_holder_1_2_14_1

qualified_holder_1_2_14_2

細心的讀者可能會發現,怎麽一年的平均收益是5.9%,到了10年卻只剩下3.8%了。這是因爲十年的收益不是加在一起,而是乘在一起的。什麽意思呢?就是假如有兩年的回報分別是+20%和-20%,平均值應該是0,但0.8*1.2=0.96,實際上兩年後我們會得到4%的虧損。統計上的平均數一般都是加法平均,不能綫性外推出更長持有年限的回報。用回報的幾何平均數能一定程度減輕這個影響,或者直接映射到對數坐標來看價格變化,這時候的回報就可以加起來(有時候我也會看對數回報,也就是用r=ln(P1/P0) 代替 r=P1/P01.) 這裏的討論就點到爲止。

#合格的持有人 #回報 #投資 #長期持有 #風險