威廉·達頓 (William M. Dutton) 的投資哲學

By | 2026-04-17

William Dutton 在 1992 年被晨星(Morningstar)選為「年度最佳基金經理人」。他操盤的 Skyline Special Equities Fund 是一檔非常經典的「小型價值股(Small-Cap Value)」基金,但他又比傳統價值投資人多了幾分對「成長與動能」的渴望。

以下為您整理他的核心投資哲學,並將他這套精緻的「低估值 + 毛利改善 + 小型成長」法則,轉化為符合 XQ 系統限制與知識庫欄位規範的 XScript 量化選股腳本。

💡 威廉·達頓 (William M. Dutton) 經歷與投資哲學

過往經歷:

William Dutton 從 1980 年代就開始在市場中打滾。他的投資風格被定義為「買進具備成長潛力、但目前股價表現不佳的公司(Buy Under-performing Companies with Growth Potential)」。他最特別的一點是「賣出紀律」:傳統價值派喜歡買進後死抱不放,但 Dutton 一旦發現股價達到「公平估值(Fair Valuation)」,他會立刻獲利了結,因此他的平均持股時間通常不到兩年。

核心投資哲學(選股六大法則):

  1. 鎖定小型股池 (Small-Cap Universe)
    他專注於總市值介於 1 億至 20 億美元之間的小型股,因為這裡最容易產生無效率的定價錯誤。
  2. 絕對的便宜 (Deep Discount on P/E)
    他要求股票的「過去四季本益比」與「預估本益比」,都必須低於市場平均值至少 20% 以上。
  3. 成長潛力 (Growth Potential)
    他不是買垃圾,他要求公司未來的盈餘成長率至少達 10% 以上,或者營收成長率必須擊敗市場平均。
  4. 毛利率的實質改善 (Improving Gross Margins)
    這是他非常犀利的一把濾網!他要求公司的「毛利率必須正在提升」。這證明公司不僅僅是營收在成長,其產品在市場上的競爭力與定價權也在增強。
  5. 強健的償債能力 (Strong Interest Coverage)
    他要求公司的「營業利益」必須遠大於「利息支出」(利息支出除以營業利益低於 50%)。這代表公司的債務壓力極低,財務體質非常強悍。

⚙️ XScript 邏輯解構 (Type A: 選股腳本 – 達頓小型價值與毛利改善策略)

為了在 XQ 中完美還原 William Dutton 的選股六大法則,我們建立一個**「低市值 + 低本益比 + 營收高成長 + 毛利率年增 + 低負債」**的模型:

  1. 小型股甜蜜點 (Small-Cap)
    • 限制 總市值(億) 大於 0 且 < 200.0 億。
  2. 打折的估值 (Discounted P/E)
    • 為了模擬「低於市場平均 20%」,我們嚴格要求 本益比 大於 0 且 < 15.0 倍。
  3. 雙位數成長動能 (Double-Digit Growth)
    • 營收動能:月營收年增率 > 10.0%。
    • 獲利防呆:每股稅後淨利(元) > 0。
  4. 核心亮點:毛利率提升 (Margin Expansion)
    • 我們讀取當季的 營業毛利率,並要求它必須大於去年同期(即 grossMargin > grossMarginLast),證明產品競爭力正在增強。
  5. 強健的財務體質 (Financial Health)
    • 負債比率 < 40.0% 作為低利息負擔與財務健康的代理指標。
  6. 流動性防呆 (Liquidity)
    • 限制 成交量 > 1000 張。

XScript 程式碼  

// 腳本類型:Type A 選股腳本 (Screener)
// 策略名稱:William Dutton 小型價值與毛利改善策略
// 策略邏輯:專注中小型股,尋找本益比偏低、營收雙位數成長,且「毛利率較去年同期提升」的優質潛力股

// 確保長天期歷史資料讀取足夠 (讀取去年同期毛利率需要)
SetTotalBar(60);

// 變數宣告鐵律:無底線、無系統保留字 daily、預設給定初始值
var: marketCap(0), peRatio(0), revYoy(0), epsCurrent(0);
var: grossMargin(0), grossMarginLast(0), debtRatio(0), volToday(0);

// 嚴格依照 Data Dictionary 與知識庫規範讀取資料
marketCap = GetField("總市值(億)", "D"); // 規模指標:鎖定小型股
peRatio = GetField("本益比", "D"); // 估值指標:低於市場平均的便宜價格
revYoy = GetField("月營收年增率", "M"); // 成長指標:10% 以上的營收成長
epsCurrent = GetField("每股稅後淨利(元)", "Q"); // 獲利防呆:實質獲利
grossMargin = GetField("營業毛利率", "Q"); // 品質指標:當季毛利率
grossMarginLast = GetField("營業毛利率", "Q")[4]; // 品質指標:去年同期毛利率 (Dutton 的核心濾網)
debtRatio = GetField("負債比率", "Q"); // 財務指標:低負債,確保利息覆蓋率高
volToday = GetField("成交量", "D"); // 流動性指標

// 核心量化綜合判斷:單一等號、完整邏輯包覆
// 條件說明:
// 1. marketCap > 0.0 and marketCap < 200.0 (鎖定具備錯誤定價潛力的小型股)
// 2. peRatio > 0.0 and peRatio < 15.0 (價值投資精神,拒絕昂貴估值)
// 3. revYoy > 10.0 (具備雙位數的實質成長潛力)
// 4. grossMargin > grossMarginLast (核心靈魂:毛利率較去年同期提升,證明產品競爭力增強)
// 5. debtRatio < 40.0 (財務體質強健,不怕升息循環)
// 6. epsCurrent > 0.0 (本業有實質獲利)
// 7. volToday > 1000 (確保進出流動性)
if marketCap > 0.0 and marketCap < 200.0 
and peRatio > 0.0 and peRatio < 15.0 
and revYoy > 10.0 
and grossMargin > grossMarginLast 
and debtRatio < 40.0 
and epsCurrent > 0.0 
and volToday > 1000 then begin

// 觸發條件成立
ret = 1;

// Type A 選股腳本專屬:輸出九宮格檢驗欄位 (警示腳本絕對禁用)
OutputField1(grossMargin, "當季毛利率(%)");
OutputField2(grossMarginLast, "去年同期毛利率(%)");
OutputField3(peRatio, "本益比");
OutputField4(revYoy, "月營收年增率(%)");
OutputField5(marketCap, "總市值(億)");
end;

持有90天的回測報告