債券是股票之外另一個重要的投資工具,就長期角度而言,股票與債券是負相關資產,所以 股債配置 是一種常見的資產配置策略。在所有債券當中,美國公債 是最重要的避險資產,因為美國公債是由美國政府作信用擔保,幾乎沒有違約問題,所以美國公債殖利率,同時也可以視為無風險利率,這也是判斷景氣循環的重要指標。當景氣衰退時,投資人偏好風險較低的資產,所以資金會撤出股市、流向債市,當債券價格上漲,債券殖利率下跌;當景氣復甦時,投資人願意承擔更高風險的投資,於是資金會撤離債市、流向股市,使債券價格下跌,債券殖利率上升。
債券 是發行者用來向外界籌資的工具,發行者要定期支付利息給債券持有人,並在到期時償還本金的一種有價證券,是典型的 固定收益 商品。不同單位發行的債券有不同的名稱,政府發行的是 公債,一般企業發行的是 公司債,金融機構則是 金融債券。美國公債 就是指由美國政府發行的債券,依據債券的到期年限,可分為二年內的短期公債、二至十年的中期公債,以及十年以上的長期公債。
債券殖利率 是投資人從買進債券一直持有至到期日為止,這段期間可獲得的實質報酬率。債券價格與債券殖利率呈反向關係,債券價格上漲,殖利率就會下跌;債券價格下跌,殖利率就會上漲。市場上一般將 二年期公債 視為 短天期公債 代表,十年期公債 視為 長天期公債 代表。短天期公債殖利率主要是由市場利率決定,而長天期公債殖利由於到期期限較長,除了市場利率外,還反映了市場對對未來景氣與通膨的預期,因此 美國十年期公債殖利率 被市場視為觀察景氣的重要指標。另外,因美國是目前全世界最強大的國家,美國政府發行的公債幾乎沒有違約風險,因此 美國十年期公債殖利率 也常被視為 無風險利率 的代表。
CAPM 是 資本資產定價模型 (Capital Asset Pricing Model),在投資學中 CAPM 是一個重要的財務模型,它的公式是:
預期報酬率 = 無風險利率 + β 係數 (市場報酬率 - 無風險利率)
其中 市場報酬率 - 無風險利率
的部分又稱為 風險溢酬,以股票市場來說,市場報酬率可以看做是大盤的平均報酬,β 係數考量了個股與系統性風險的關係,β 係數愈大代表該股票相對市場的風險愈大,但獲利的潛能也愈高。當預期報酬率不變,但是無風險利率上升的情況下,投資人願意承擔的風險就大幅降低,當投資人願意承受的風險降低,就會影響市場對於公司股票的估值,使本益比下修。
由於美國十年期公債殖利率經常被視為無風險利率,當美國十年期公債殖利率不斷攀升,受影響最大的就是高估值的科技成長股。根據美國財政部 2022 年上半年的資料顯示,美國十年期公債殖利率從 2021 年底的 1.52% 提升至 2.98%,這段期間的 S&P 500 指數 績效是 -20.58%,而 那斯達克 100 指數 更繳出 -41.87% 的糟糕報酬率;在臺股方面,加權指數 在 2022 年上半年績效為 -20.58%,而 半導體類指數 是 -27.49%。相較於大盤指數,電子、科技類股儼然成為重災區,根據 CPAM 的理論基礎,這也很大程度解釋了為什麼今年電子、科技類股的股價會被大幅修正的原因。
債券殖利率曲線 是由不同天期的債券殖利率與到期期限繪製成的圖表,縱軸代表債券殖利率,橫軸代表債券到期期限。如下圖所示,我們分別畫出了 2021 年 12 月 31 日和 2022 年 6 月 30 日的美國公債殖利率曲線。
Source:U.S. Department of the Treasury
長天期債券由於持有時間較長、風險較高,所以通常長天期債券殖利率會比短天期債券殖利率高,一般正常的殖利率曲線會呈現正斜率狀態。如果短天期債券殖利率大於長天期債券殖利率,殖利率曲線就會呈現負斜率,就是一般所稱的「殖利率倒掛」。債券殖利率倒掛是不尋常現象,暗示市場上對未來景氣的預期已經出現變化,投資人就要就要提高警覺。前面我們提到,一般市場會使用二年期公債為短天期公債的代表;十年期公債為長天期公債的代表,當二年期美國公債殖利率與十年期美國公債殖利率倒掛時,就會引起市場的高度注意。
另一個也經常被衡量殖利率倒掛的指標是「三個月期美國公債殖利率」與「十年期美國公債殖利率」的利差。此處我們以二年期公債作為短天期公債的代表。
根據 FRED 網站提供的圖表資料顯示,自 1999 年後發生二年期美國公債殖利率與十年期美國公債殖利率倒掛後的一年內,都發生美國定義上的經濟衰退,如 2000 年的網路科技泡沫、2008 年的金融海嘯與 2020 年爆發的 COVID-19 疫情。
Source:Federal Reserve Economic Data(FRED)
事實上,自 2022 年 7 月 6 日 截至 2022 年 9 月 9 日為止,已持續兩個月的長短天期美國公債殖利率倒掛現象。美國是全球經濟的火車頭,當美股持續走弱,臺股也不太可能置身事外,因此當領先指標已經發出警訊,投資人就可以適時調整投資策略。由於目前全球經濟衰退疑慮未消,而 Fed 作為全世界金融機構的老大,因此 Fed 的一舉一動就成為全球市場關注的焦點。
曾經成功預測 1987 年美股崩盤的美國投資專家 馬丁.茲威格(Martin Zweig)說過一句名言:「不要和 Fed 抗衡。」Fed(Federal Reserve System) 是 美國聯邦準備理事會,簡稱 聯準會,也就是美國的中央銀行。由於美國基準利率與美國公債殖利率呈現正向關係,所以 Fed 的利率決策會直接影響美國公債殖利率。當 Fed 採取降息措施,會造成美國公債殖利率下降,使美國公債價格上漲;當 Fed 採取升息措施,會造成美國公債殖利率上升,使美國公債價格下跌。
當 2020 年全世界發生 COVID-19 黑天鵝事件,股市卻能馬上 V 型反轉,就是 Fed 採取一連串的降息與量化寬鬆政策,強力救市的結果;然而時過境遷,現在 2022 年全球正處於高通膨環境,Fed 也採取較為鷹派的升息措施。因為 FED 的利率政策對美國公債殖利率有決定性的影響,而美國公債殖利率又是標定資產資本價格的基礎,同時也影響市場對於全球景氣的看法,這也是為什麼 Fed 動向總是受市場矚目的原因。
橡樹資本(Oaktree Capital)共同創辦人 霍華德· 馬克司(Howard Marks)在著作《投資最重要的事》中提到「最重要的事是注意經濟週期」。也許我們沒有避開這次股市的大幅修正,不過掌握市場週期可以關注的重點,我們就可以為下一次景氣循環做好準備。
許多國外財經平台和都提供查詢美國公債殖利率的服務。如 CNBC、Bloomberg、Investing.com 等。
這裡我們直接從 美國財政部 網站的 Daily Treasury Par Yield Curve Rates 頁面,查詢各期別的美國公債殖利率。
美國財政部首頁 > Data > Daily Treasury Par Yield Curve Rates
在「Daily Treasury Par Yield Curve Rates」頁面,在「Select Time Period」下拉式選單可以選擇各年份和「Current Month」的時間區間,然後按下「Apply」後就會列出 1 個月至 30 年期的美國公債殖利率:
按下 「Download CSV」連結,就可以下載該資料的 CSV 檔案。以「Current Month」(2022 年 9 月)為例,CSV 檔案連結如下:
https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv/all/202209?type=daily_treasury_yield_curve&field_tdr_date_value_month=202209&page&_format=csv
我們將以上 URL 路徑及參數為 202209
的部分換成目標日期的年月,就可以取得該年月份各期別的美國公債殖利率資訊。
我們新增一個 UsdtScraperService
表示從美國財政部網站取得資料的服務。使用 Nest CLI 建立 UsdtScraperService
:
$ nest g service scraper/usdt-scraper --flat --no-spec
Nest CLI 會在 src/scraper
目錄下建立 usdt-scraper.service.ts
檔案,並且將 UsdtScraperService
加入至 ScraperModule
的 providers
設定。
開啟 src/scraper/usdt-scraper.service.ts
檔案,在 UsdtScraperService
實作 fetchUsTreasuryYields()
方法,取得取得美國公債殖利率:
import * as csvtojson from 'csvtojson';
import * as numeral from 'numeral';
import { DateTime } from 'luxon';
import { Injectable } from '@nestjs/common';
import { HttpService } from '@nestjs/axios';
import { firstValueFrom } from 'rxjs';
@Injectable()
export class UsdtScraperService {
constructor(private httpService: HttpService) {}
async fetchUsTreasuryYields(date: string) {
const dt = DateTime.fromISO(date);
const month = dt.toFormat('yyyyMM');
const url = `https://home.treasury.gov/resource-center/data-chart-center/interest-rates/daily-treasury-rates.csv/all/${month}?type=daily_treasury_yield_curve&field_tdr_date_value_month=${month}&page&_format=csv`
// 取得回應資料
const responseData = await firstValueFrom(this.httpService.get(url))
.then(response => csvtojson({ noheader: true, output: 'csv' }).fromString(response.data));
// 若尚無資料則回傳 null
const [ fields, ...rows ] = responseData;
if (fields[0] !== 'Date') return null;
const data = rows.map(row => {
// 轉換日期格式
const date = DateTime.fromFormat(row[0], 'MM/dd/yyyy').toISODate()
// 將 string 型別數字轉換成 number
const raw = row.slice(1).map(data => numeral(data).value());
const [
us1m, // 美國 1 個月期公債殖利率
us2m, // 美國 2 個月期公債殖利率
us3m, // 美國 3 個月期公債殖利率
us6m, // 美國 6 個月期公債殖利率
us1y, // 美國 1 年期公債殖利率
us2y, // 美國 2 年期公債殖利率
us3y, // 美國 3 年期公債殖利率
us5y, // 美國 5 年期公債殖利率
us7y, // 美國 7 年期公債殖利率
us10y, // 美國 10 年期公債殖利率
us20y, // 美國 20 年期公債殖利率
us30y, // 美國 30 年期公債殖利率
] = raw;
return { date, us1m, us2m, us3m, us6m, us1y, us2y, us3y, us5y, us7y, us10y, us20y, us30y };
}).find(data => data.date === date); // 取得目標日期的美國公債殖利率
return data;
}
}
在 fetchUsTreasuryYields()
方法中,需要指定 date
參數,表示要取得美國公債殖利率的日期。我們定義回傳的物件欄位包含如下:
date
:日期us1m
:美國 1 個月期公債殖利率us2m
:美國 2 個月期公債殖利率us3m
:美國 3 個月期公債殖利率us6m
:美國 6 個月期公債殖利率us1y
:美國 1 年期公債殖利率us2y
:美國 2 年期公債殖利率us3y
:美國 3 年期公債殖利率us5y
:美國 5 年期公債殖利率us7y
:美國 7 年期公債殖利率us10y
:美國 10 年期公債殖利率us20y
:美國 20 年期公債殖利率us30y
:美國 30 年期公債殖利率完成後,我們只要使用 UsdtScraperService
的 fetchUsTreasuryYields()
方法,就可以按日期取得美國公債殖利率。以日期 2022-07-01
為例:
{
date: '2022-07-01',
us1m: 1.27,
us2m: 1.68,
us3m: 1.73,
us6m: 2.52,
us1y: 2.79,
us2y: 2.84,
us3y: 2.85,
us5y: 2.88,
us7y: 2.92,
us10y: 2.88,
us20y: 3.35,
us30y: 3.11
}
本系列文已正式出版為《Node.js 量化投資全攻略:從資料收集到自動化交易系統建構實戰》。本書新增了全新內容和實用範例,為你提供更深入的學習體驗!歡迎參考選購,開始你的量化投資之旅!
天瓏網路書店連結:https://www.tenlong.com.tw/products/9786263336070