Author Archives: 發財橘子

納瓦爾寶典的讀書心得

因著目前的熱門投資焦點還是AI相關的科技股,我們繼續來從相關的書中,來探討美國的投資高手是怎麼投資科技股。

今天來討論的是納瓦爾寶典這本書

 

 

納瓦爾·拉維肯(Naval Ravikant)是印裔美籍天使投資人、創業家,創辦了AngelList(全球最大新創募資平台),投資過Uber、Twitter等公司。

以下是Gemini分析這本書,針對投資科技股,最值得學習的四大洞見:

 

一、 識別「無許可槓桿」:代碼與媒體 (The Age of Infinite Leverage)

Naval 將槓桿分為三類,這對於挑選科技股至關重要:

  1. 勞動力(Labor): 需要管理,最難規模化。
  2. 資本(Capital): 需要許可,且具備風險。
  3. 代碼與媒體(Code and Media): 這是 「無許可槓桿 ,也是科技股最強大的競爭力。
  • 投資洞見: 優先挑選 「邊際複製成本趨近於零 的公司。
    • 軟體 (SaaS) 與 AI: 寫好一次程式碼,可以同時賣給 1 個人或 100 萬個人,其成本幾乎不變。這就是 Naval 所說的「在睡覺時也能賺錢」的資產。
    • 實戰應用: 觀察公司的「營業槓桿(Operating Leverage)」。當營收增長遠快於成本增長時,這家公司才具備 Naval 式的財富爆發力。

二、 複利的力量:玩長期遊戲 (Play Long-term Games)

Naval 認為,「生活中所有的回報,無論是財富、關係還是知識,都來自於複利。」

  • 投資洞見: 在科技領域,市場通常傾向於 「贏家通吃(Winner-Takes-All) 。
    • 複利需要時間,因此 Naval 主張與「長期的人」共事。應用在投資上,這意味著要尋找具備網路效應(Network Effect)的公司,因為網路效應是複利的加速器。
    • 量化思維: 您在 XScript 中篩選標的時,除了營收成長,更應關注「留存率(Retention)」或「客戶生命週期價值(LTV)」,這些是複利能否持續的關鍵。

A = P(1 + r)^n

註:在科技投資中,r(增長率)由槓桿驅動,而 n(時間)則由護城河決定。

 

三、 專長與護城河:追求「無法被訓練」的技能 (Specific Knowledge)

Naval 提到一個概念:「專長(Specific Knowledge)」是無法透過培訓獲得的,否則社會就能培訓其他人取代你。

  • 投資洞見: 評估科技公司時,看它的核心競爭力是否容易被「自動化」或「外包」。
    • 如果一家公司的產品純粹靠補貼獲客(如早期的外送平台),那不叫專長。
    • 真正的專長在於「獨家數據累積」「極高的轉換成本」。這也是為何 Naval 高度看好 AI 與專有數據結合的原因。

 

四、 判斷力(Judgment)高於努力

「在槓桿時代,一個正確的決策可以帶來千倍的回報。」Naval 認為,投資者的工作不是努力工作,而是具備清晰的判斷力

  • 投資洞見: 不要參與「零和遊戲(Status Games)」,要參與「正和遊戲(Wealth Games)」。
    • 避開雜訊: 科技股常有過度炒作的議題(如某些幣圈項目)。Naval 的準則是:如果一個決定你無法百分之百確定(If you can’t decide, the answer is no),那就不要參與。
    • 專注於決策質量: 對於資深 PM 來說,這意味著要看公司的產品路徑圖(Product Roadmap)是否解決了社會「想要但還不知道如何獲得」的問題。

這本書提醒我們,投資科技股本質上是在投資「規模化」的藝術

Naval 指出,代碼和媒體是不需要他人許可就能規模化的槓桿。在財務報表上,這體現為極高的毛利率

  • 意義: 每增加一個客戶,公司幾乎不需要增加額外的銷貨成本。這排除掉需要大量人力的「勞力密集型」科技業。

2. 營收連續成長:複利遊戲 (Long-term Games)

Mahaney 認為營收是科技股的生命線。

3. 研發費用率 ($R\&D > 10\%$):專長 (Specific Knowledge)

Naval 提到,專長是無法被輕易訓練或取代的技能。

  • 意義: 持續的高研發投入是科技公司建立「技術護城河」的代價,這是將利潤轉化為未來競爭力的表現,防止被後進者自動化或取代。

4. 董監持股佔比:責任 (Accountability)

Naval 強調:「沒有責任,就沒有權利;沒有風險,就沒有回報。」

  • 意義: 確保管理層與股東利益一致 (Skin in the Game)。當公司股價下跌時,管理層感受到的痛苦與你一樣。

5. 營業利益率提升:規模化能力 (Operating Leverage)

這是科技股最迷人的特質, 當營收成長帶動盈餘以更高比例增長時,這家公司才真正擁有了 Naval 所說的「在睡覺時也能賺錢」的機器。

我根據AI的分析,找到了營業利益成長率要大於營收成長率的關鍵篩選標準,以下是對應的腳本

input:n(2,"連續n季符合條件");
value1=getField("營收成長率", "Q");
value2=getField("營業利益成長率", "Q");
if trueall(value2>value1,n)
then ret=1;

透過AI尋找書中及文章中的洞見,並且把它形成自己的選股條件之一,我會持續進行這樣的實驗,有更多心得,再來跟大家報告。

 

精準選股這本書的讀書心得

這兩年,大家注意力常聚焦在像Nvdia這類的大型科技股,要怎麼投資這類的股票呢? 前兩年有看過一本書,是美國一位長期研究網路股的分析師寫的,他的結論是「在不確定的科技世界中,尋找具有大規模潛在市場、強大產品創新力、且營收持續增長的領頭羊,並在市場恐慌導致的股價『脫臼』時大膽買入。 我覺得這段結論,可以做為我們長期投資美股的參考依據。

這本書的原名是:《Nothing But Net: 10 Timeless Stock-Picking Lessons from One of Wall Street’s Top Tech Analysts》,台灣翻譯成“精準選股”。

作者是華爾街頂尖網路股分析師 Mark Mahaney 。他在科技產業擁有超過 25 年的分析經驗,曾任職於摩根士丹利、花旗及 Evercore ISI,並長期蟬聯《機構投資者》排名第一。

這本書並非生硬的財報教科書,是他在經歷過網路泡沫、金融海嘯、科技巨頭崛起( Amazon、Netflix)與隕落(如Yahoo!、AOL)後總結出的實戰法則。

以下是書中的 10 大核心投資洞見與實戰策略:

1. 要勇於認錯 

承認失敗是選股的一環。書中列舉了如 Blue Apron 或 Groupon 的案例,提醒投資者當管理層動盪或客戶價值主張(Value Prop)消失時,必須果斷止損。

2. 即使選對,過程也會很痛苦 (There Will Be Blood… Even When You Pick the Best Stocks)

即使是亞馬遜 (AMZN) 或 Netflix (NFLX),在成長過程中都曾遭遇超過 50% 甚至 80% 的跌幅。波動不代表公司壞了,投資者必須具備心理韌性才能抱住長期贏家。

3. 不要玩「季度賽」 (Don’t Play Quarters)

不要過度反應單一季度的營收或 EPS 微幅不如預期。科技股的價值在於長期趨勢,短期預測營收是否精準到小數點後兩位,對長期獲利幫助不大。

4. 營收成長高於一切 (Revenue Matters More Than Anything)

對於成長型科技股,營收成長率(Top-line growth)比盈餘(Earnings)更重要

  • 關鍵指標: 尋找能連續 5–6 個季度保持 20% 以上營收成長的公司。

5. 產品創新是引擎 (It Don’t Mean a Thing, If It Ain’t Got That Product Swing)

觀察公司是否能持續推出新產品或改進現有服務。如果一家公司停止產品創新(如當年的 Yahoo!),它的生命週期就進入了倒數。

6. TAM(潛在市場規模)越大越好 (TAMs—The Bigger the Better)

優質公司必須處於一個巨大的「潛在市場規模 (Total Addressable Market)」中。例如 Amazon 從書商擴展到雲端 (AWS) 與廣告,就是不斷擴大其 TAM 的過程。

7. 追隨「客戶價值」,而非財報數字 (Follow the Value Prop, Not the Money)

如果產品真的幫用戶省了錢、省了時間或帶來快樂(例如 Netflix 提供的性價比),錢自然會隨之而來。

8. 管理層最重要  

觀察 CEO 是否具備願景、技術背景以及對產品的熱情。創辦人領導的公司通常比職業經理人領導的公司更有創新動力。

9. 估值是「藝術」而非「科學」 (Valuation Is in the Eye of the Tech Stockholder)

科技股很難用傳統的 P/E (本益比) 來衡量。他建議使用 P/S (股價營收比)EV/EBITDA,並結合成長率來判斷估值是否合理(例如:P/E 低於其成長率)。

10. 尋找「脫臼」的高品質股 (Hunt for DHQs—Dislocated High-Quality Stocks)

這是全書最精華的實戰建議。

  • DHQ 定義: 當一家基本面(營收成長、市場地位、創新能力)依然強勁的公司,因為市場情緒、總經因素或暫時性的雜訊導致股價從高點回落 20-30% 時,就是最好的買點。

Mark Mahaney 的核心哲學是:「在不確定的科技世界中,尋找具有大規模 TAM、強大產品創新力、且營收持續增長的領頭羊,並在市場恐慌導致的股價『脫臼』時大膽買入。」

 

我請Gemini針對上述的洞見,幫我制定美股的選股腳本,它的回答如下

要將 Mark Mahaney 的「科技股投資十誡」轉化為 XScript 程式碼,我們需要將感性的投資洞見量化為理性的篩選條件。

以下為您開發兩組核心腳本:一組針對 「營收高成長性」,另一組針對 「DHQ(高品質脫臼股)」


1. 營收持續高成長篩選 (Revenue Persistence Screen)

邏輯基礎: Mahaney 強調營收成長比盈餘更重要,理想標的應具備連續 4-6 季 20% 以上的增長。

// 腳本名稱:營收高速增長持久賽
// 適用對象:尋找處於擴張期的科技領頭羊

input: RevGrowthLimit(20, "營收年增率門檻(%)");
input: Quarters(4, "持續季度數");

// 檢查過去 N 季的單季營收年增率是否都達標
variable: i(0), isPersistent(true);

isPersistent = true;
for i = 0 to Quarters - 1 begin
if GetField("營收年增率", "Q")[i] < RevGrowthLimit then
isPersistent = false;
end;

// 加上成交量過濾,確保流動性
if isPersistent and V > 500 then ret = 1;

outputfield(1, GetField("營收年增率", "Q"), 2, "最新一季營收年增率");
outputfield(2, GetField("營業利益率", "Q"), 2, "最新一季營益率");


2. DHQ 尋找高品質「脫臼」股 (Dislocated High-Quality Hunter)

邏輯基礎: 當高品質公司(高成長、有獲利能力)因為市場因素導致股價從高點回落 20-30% 時,是最好的進場點。

// 腳本名稱:DHQ 高品質脫臼股篩選
// 邏輯:基本面強勁 + 股價近期大幅回檔

input: DropFromHigh(20, "回檔幅度門檻(%)");
input: GrowthThreshold(20, "基本面營收增長門檻(%)");
input: LookbackPeriod(240, "回溯最高價的天數(約一年)");

// 1. 計算股價是否「脫臼」 (Dislocated)
variable: highPrice(0);
highPrice = Highest(GetField("最高價", "D"), LookbackPeriod);

condition1 = Close < highPrice * (1 - DropFromHigh / 100);

// 2. 判斷是否為「高品質」 (High-Quality)
// 營收年增率高 且 營業利益率為正 (代表有實質獲利能力,非純燒錢)
condition2 = GetField("營收年增率", "Q") >= GrowthThreshold;
condition3 = GetField("營業利益率", "Q") > 0;

// 3. 排除趨勢徹底轉壞的情況 (例如跌破年線太遠可能基本面出大事)
// 我們尋找的是「脫臼」而非「骨折」,加入移動平均線參考
condition4 = Close > Average(Close, 240) * 0.85;

if condition1 and condition2 and condition3 and condition4 then ret = 1;

outputfield(1, (Close/highPrice - 1) * 100, 2, "較一年高點跌幅%");
outputfield(2, GetField("營收年增率", "Q"), 2, "營收年增率");

 

3. 科技股估值平衡篩選 (EV/Revenue vs. Growth)

邏輯基礎: Mahaney 建議使用 P/S 或 EV/Revenue。我們可以篩選「成長性高於估值倍數」的標的(類似科技股的 PEG 概念)。

// 腳本名稱:科技股性價比篩選
// 邏輯:營收年增率 / 股價營收比 (PSR) > 門檻

input: PSR_Limit(10, "股價營收比上限");
input: RatioThreshold(2, "營收成長對比PSR的倍數");

variable: psr(0), revGrowth(0);

psr = GetField("股價營收比", "D");
revGrowth = GetField("營收年增率", "Q");

// 確保營收增長是 PSR 的 N 倍以上 (例如成長 30%,PSR 只有 5,比例為 6)
if psr < PSR_Limit and psr > 0 then begin
if (revGrowth / psr) > RatioThreshold then ret = 1;
end;

outputfield(1, psr, 2, "PSR");
outputfield(2, revGrowth, 2, "營收年增率");
outputfield(3, revGrowth / psr, 2, "性價比評分");


 

補充說明

  1. 對美股: 由於 Mark Mahaney 主要分析對象是美股,若您在 XQ 中使用這些腳本,建議直接應用在 「美股清單」 標的。
  2. 產業過濾: 建議在選股中心先勾選 「軟體服務」「半導體」「網路通信」,因為這些邏輯(尤其是營收高於盈餘)在傳產或金融股並不適用。

  3. 質化觀察: XScript 雖然能篩選出「脫臼股」,但 Mahaney 強調的 「管理層」「產品創新」 仍需結合您平台上的新聞與產業報告來做最後定奪。

以上都是Gemini給的文字,我一個字都沒有修改,有想法後透過AI把想法變成XS的腳本, 似乎愈來愈可行,有興趣的朋友可以一試。

 

細產業整體來自營運的現金流量的意義

一個產業,整體來自營運的現金流量,代表這個產業整體的永續力,也代表這個產業創造現金的能力,長期追蹤這個數字,可以了解這個產業目前所處的狀態。

要追蹤這個數字,在XQ中自訂指標的腳本如下

Group: _group();//宣告群組
var: _i(0), _size(0);
_group = GetSymbolGroup("成份股");//指定群組的商品
// 檢查是否有資料
_size = GroupSize(_group);
if _size = 0 then return;
// 迴圈運算前,初始化變數
value1 = 0;
value2 = 0;
value3=0;
// 迴圈計算每一檔成份股數值
for _i = 1 to _size begin //大迴圈會跑遍每一檔成份股
if CheckSymbolField(_group[_i], "Close") then begin //確認股票當天有資料
// 實際要計算的內容===開始===
// STEP 1 換期時數值歸零
if GetSymbolFieldDate(_group[_i], "來自營運之現金流量", "Q") > value1 then begin //如果成份股有人提前公佈數值,目前計算的都歸零
value1 = GetSymbolFieldDate(_group[_i], "來自營運之現金流量", "Q");
value2 = 0;
value3 = 0;
end;
// STEP 2 同樣期別時,數值計算
if GetSymbolFieldDate(_group[_i], "來自營運之現金流量", "Q") = value1 then begin //依最新的資料期別進行統計
value2 = value2 + 1;
value3 = value3 + GetSymbolField(_group[_i], "來自營運之現金流量", "Q");
end;
// 實際要計算的內容===結束===
end; 
end;
// 要繪製的指標
// 
plot(1, value3, "整體來自營運之現金流量");

 

以下是一些這個指標跟細產業股價指數的對照圖

 

從平均殖利率找細產業超買與超賣區

一個相對成熟的行業,市場對它的估值有一定的標準,這個標準,會體現在整體的殖利率上。整體殖利率高到一定程度,會進入超賣區,股價進入築底區,相反的,整體殖利率太低,資金會離開,尋找CP值更高的行業。

用來追踨細產業殖利率長期走勢的自訂指標,腳本如下

Group: _group();
var: _i(0), _size(0);

var: _Health(0);

_group = GetSymbolGroup("成份股");

// 檢查是否有資料
// 
_size = GroupSize(_group);
if _size = 0 then return;

// 迴圈運算前,初始化變數
//

value1 = 0;
value2 = 0;
value3=0;
// 迴圈計算每一檔成份股數值
// 
for _i = 1 to _size begin //大迴圈會跑遍每一檔成份股
if CheckSymbolField(_group[_i], "Close") then begin //確認股票當天有資料

// 實際要計算的內容===開始===
//getSymbolFielDDate("請填入正確的商品ID", "殖利率", "D")

// STEP 1 換期時數值歸零
if GetSymbolFieldDate(_group[_i], "殖利率", "D") > value1 then begin //如果成份股有人提前公佈數值,目前計算的都歸零
value1 = GetSymbolFieldDate(_group[_i], "殖利率", "D");
value2 = 0;
value3 = 0;
end;

// STEP 2 同樣期別時,數值計算
if GetSymbolFieldDate(_group[_i], "殖利率", "D") = value1 then begin //依最新的資料期別進行統計
value2 = value2 + 1;
value3 = value3 + GetSymbolField(_group[_i], "殖利率", "D");
end;
value4=value3/value2;




// 實際要計算的內容===結束===
//

end; 
end;

// 要繪製的指標
// 
plot(1, value4, "平均殖利率");

 

以下是一些細產業的相關圖形,供大家參考

不同的行業市場給的合理平均殖利率會不一樣,景氣循環股跟內需型股,這個指標會較具參考意義

 

從細產業整體營業利益看產業目前的狀態

一個細產業所有成份股的本業獲利加總,很能說明這個產業目前的發展情況,當整體產業是在虧錢,通常會加速淘汰賽,往往是另一波產業新格局的起點。當一個產業整體獲利創長期以來的新高,代表這個產業有了新應用,新市場。

下面這個腳本是用Group語法寫出來的自訂指標腳本,

Group: _group();//宣告群組
var: _i(0), _size(0);
_group = GetSymbolGroup("成份股");//指定群組的商品
// 檢查是否有資料
_size = GroupSize(_group);
if _size = 0 then return;
// 迴圈運算前,初始化變數
value1 = 0;
value2 = 0;
value3=0;
// 迴圈計算每一檔成份股數值
for _i = 1 to _size begin //大迴圈會跑遍每一檔成份股
if CheckSymbolField(_group[_i], "Close") then begin //確認股票當天有資料
// 實際要計算的內容===開始===
// STEP 1 換期時數值歸零
if GetSymbolFieldDate(_group[_i], "營業利益", "Q") > value1 then begin //如果成份股有人提前公佈數值,目前計算的都歸零
value1 = GetSymbolFieldDate(_group[_i], "營業利益", "Q");
value2 = 0;
value3 = 0;
end;
// STEP 2 同樣期別時,數值計算
if GetSymbolFieldDate(_group[_i], "營業利益", "Q") = value1 then begin //依最新的資料期別進行統計
value2 = value2 + 1;
value3 = value3 + GetSymbolField(_group[_i], "營業利益", "Q");
value4=average(value3,4);
end;
// 實際要計算的內容===結束===
end; 
end;
// 要繪製的指標
// 
plot(1, value3, "整體營業利益");
plot(2,value4,"4季移動平均");

 

應用在細產業指標上,可以畫出每個細產業指標的整體營收。

以下是一些細產業跟整體營收的對照圖,供參考

 

研發費用與產業輪動的關係

產業整體的研發費用,代表細產業的競爭狀態,持續堆高的研發費用,是一種淘汰賽,市佔率大的公司有利,研發費用也代表一個產業的景氣更迭,長期維持一定程度研發費用的產業,如果連續兩季研發費用創新高,往往代表產業有了應用,這常常是產業開始走向新方向的訊號。

產業整體研發費用的自訂指標,樣本如下

Group: _group();//宣告群組
var: _i(0), _size(0);
_group = GetSymbolGroup("成份股");//指定群組的商品
// 檢查是否有資料
_size = GroupSize(_group);
if _size = 0 then return;
// 迴圈運算前,初始化變數
value1 = 0;
value2 = 0;
value3=0;
// 迴圈計算每一檔成份股數值
for _i = 1 to _size begin //大迴圈會跑遍每一檔成份股
if CheckSymbolField(_group[_i], "Close") then begin //確認股票當天有資料
// 實際要計算的內容===開始===
// STEP 1 換期時數值歸零
if GetSymbolFieldDate(_group[_i], "研發費用", "Q") > value1 then begin //如果成份股有人提前公佈數值,目前計算的都歸零
value1 = GetSymbolFieldDate(_group[_i], "研發費用", "Q");
value2 = 0;
value3 = 0;
end;

// STEP 2 同樣期別時,數值計算
if GetSymbolFieldDate(_group[_i], "研發費用", "Q") = value1 then begin //依最新的資料期別進行統計
value2 = value2 + 1;
value3 = value3 + GetSymbolField(_group[_i], "研發費用", "Q");
end;
// 實際要計算的內容===結束===
end; 
end;
// 要繪製的指標
// 
plot(1, value3, "整體研發費用");

 

 

研發費用是季資料,所以要跟季線搭在一起對照著看,如下圖

這是很典型研發費用一直在加碼進行淘汰賽的行業

這是研發費用突然創長期新高後產業有了新方向的Sample

 

對產業景氣更敏感的偵測工具: 產業整體營收月增率

產業整體營收月增率,如果連續數月上昇,代表整體景氣很明確的處於復甦狀態,連續數月下跌,代表整體產業進入衰退期,大部份的時候,月營收月增率總是漲漲跌跌,所以連續性的上漲或下跌,就變的很值得注意。

整體產業月營收的畫指標腳本樣本如下

input: _calcType(1, "計算方式", inputkind:=Dict(["加權平均",1],["簡單平均",2]), quickedit:=true);
Group: _group();
var: _i(0), _size(0), _lastestMonth(0);

var: _sumEarning(0), _earningCount(0), _avgEarning(0);
var: _sumWeightedEarning(0),_sumCapital(0);

_group = GetSymbolGroup("成份股");

// 檢查是否有資料
// 
_size = GroupSize(_group);
if _size = 0 then return;

// 迴圈運算前,初始化變數
// 
_sumEarning = 0;
_sumWeightedEarning = 0;
_sumCapital = 0;
_lastestMonth = 0;
_earningCount = 0;

// 迴圈計算每一檔成份股數值
// 
for _i = 1 to _size begin //大迴圈會跑遍每一檔成份股
if CheckSymbolField(_group[_i], "Close") then begin //確認股票當天有資料

// 實際要計算的內容===開始===
//

// STEP 1 換期時數值歸零
if GetSymbolFieldDate(_group[_i], "月營收月增率", "M") > _lastestMonth then begin //如果成份股有人提前公佈數值,目前計算的都歸零
_lastestMonth = GetSymbolFieldDate(_group[_i], "月營收月增率", "M");
_earningCount = 0;
_sumEarning = 0;
_sumWeightedEarning = 0;
_sumCapital = 0;
end;

// STEP 2 同樣期別時,數值計算
if GetSymbolFieldDate(_group[_i], "月營收月增率", "M") = _lastestMonth then begin //依最新的資料期別進行統計
_earningCount = _earningCount + 1;
_sumEarning = _sumEarning + GetSymbolField(_group[_i], "月營收月增率", "M");
_sumCapital = _sumCapital + GetSymbolField(_group[_i], "股本(億)", "D");
_sumWeightedEarning = _sumWeightedEarning + GetSymbolField(_group[_i], "股本(億)", "D") * GetSymbolField(_group[_i], "月營收月增率", "M");
end;

// 實際要計算的內容===結束===
//

end; 
end;

if _calcType = 2 then
_avgEarning = _sumEarning / _earningCount
else
_avgEarning = _sumWeightedEarning / _sumCapital;

// 要繪製的指標
// 
plot(1, _avgEarning, "月營收月增率");

 

把這個腳本應用到細產業指標裡,呈現的畫面如下圖

這個指標對景氣循環股是有其參考價值

 

 

 

用細產業合計月營收年增率來抓景氣方向

同一個細行業合計月營收年增率,長期追蹤,可以看出一個產業,目前處於那一個景氣循環的階段,甚或是產業生命週期的那一個階段,其股價敏感度,比合計營收的長期走勢圖還高。

計算一個細產業的月營收年增率的寫法,sample如下

input: _calcType(1, "計算方式", inputkind:=Dict(["加權平均",1],["簡單平均",2]), quickedit:=true);
Group: _group();
var: _i(0), _size(0), _lastestMonth(0);

var: _sumEarning(0), _earningCount(0), _avgEarning(0);
var: _sumWeightedEarning(0),_sumCapital(0);

_group = GetSymbolGroup("成份股");

// 檢查是否有資料
// 
_size = GroupSize(_group);
if _size = 0 then return;

// 迴圈運算前,初始化變數
// 
_sumEarning = 0;
_sumWeightedEarning = 0;
_sumCapital = 0;
_lastestMonth = 0;
_earningCount = 0;

// 迴圈計算每一檔成份股數值
// 
for _i = 1 to _size begin //大迴圈會跑遍每一檔成份股
if CheckSymbolField(_group[_i], "Close") then begin //確認股票當天有資料

// 實際要計算的內容===開始===
//

// STEP 1 換期時數值歸零
if GetSymbolFieldDate(_group[_i], "月營收年增率", "M") > _lastestMonth then begin //如果成份股有人提前公佈數值,目前計算的都歸零
_lastestMonth = GetSymbolFieldDate(_group[_i], "月營收年增率", "M");
_earningCount = 0;
_sumEarning = 0;
_sumWeightedEarning = 0;
_sumCapital = 0;
end;

// STEP 2 同樣期別時,數值計算
if GetSymbolFieldDate(_group[_i], "月營收年增率", "M") = _lastestMonth then begin //依最新的資料期別進行統計
_earningCount = _earningCount + 1;
_sumEarning = _sumEarning + GetSymbolField(_group[_i], "月營收年增率", "M");
_sumCapital = _sumCapital + GetSymbolField(_group[_i], "股本(億)", "D");
_sumWeightedEarning = _sumWeightedEarning + GetSymbolField(_group[_i], "股本(億)", "D") * GetSymbolField(_group[_i], "月營收年增率", "M");
end;

// 實際要計算的內容===結束===
//

end; 
end;

if _calcType = 2 then
_avgEarning = _sumEarning / _earningCount
else
_avgEarning = _sumWeightedEarning / _sumCapital;

// 要繪製的指標
// 
plot(1, _avgEarning, "月營收年增率");

 

在這裡有用到calcType這個語法,來切換營收指標的計算是用股本加權平均還是簡單平均

這個指標用在景氣循環股,可以掌握整個產業是否已開始復甦

以上圖的平板鋼為例,月營收連續多個月回升之後,股價會有所反映

上圖是用加權平均,從這張圖來看,記憶體似乎可以密切觀察

用細產業平均本益比看行業景氣位置

特定行業成份股的平均本益比,代表市場如何看待這個產業的未來。 前景一片看好,本益比就高,對前景很悲觀,本益比會偏低,當整體本益比開始出現反轉時,往往就是市場對該產業看法反轉的時候。

以銅箔基板產業為例,如下圖

當市場對這個行業維持一般看法時,本益比都差不多維持在20以下,一旦突破20,往往代表市場對該行業轉趨樂觀。 相反的,如果股價創新高,但本益比其實是往下走,代表市場對其未來前景並沒有那麼的樂觀。

下面是細行業本益比的腳本,供大家參考

Group: _group();
var: _i(0), _size(0);

_group = GetSymbolGroup("成份股");

// 檢查是否有資料
// 
_size = GroupSize(_group);
if _size = 0 then return;

// 迴圈運算前,初始化變數
//

value1 = 0;
value2 = 0;
value3=0;
// 迴圈計算每一檔成份股數值
// 
for _i = 1 to _size begin //大迴圈會跑遍每一檔成份股
if CheckSymbolField(_group[_i], "Close") then begin //確認股票當天有資料

// 實際要計算的內容===開始===
//getSymbolFieldDate("請填入正確的商品ID", "本益比", "D")

// STEP 1 換期時數值歸零
if GetSymbolFieldDate(_group[_i], "本益比", "D") > value1 then begin //如果成份股有人提前公佈數值,目前計算的都歸零
value1 = GetSymbolFieldDate(_group[_i], "本益比", "D");
value2 = 0;
value3 = 0;
end;

// STEP 2 同樣期別時,數值計算
if GetSymbolFieldDate(_group[_i], "本益比", "D") = value1 then begin //依最新的資料期別進行統計
value2 = value2 + 1;
value3 = value3 + GetSymbolField(_group[_i], "本益比", "D");
end;
value4=value3/value2;

// 實際要計算的內容===結束===
//

end; 
end;

// 要繪製的指標
// 
plot(1, value4, "平均本益比");

 

大家可以自行比對其他細行業指標跟本益比的長期走勢,會有自己的心得

整體資本支出對產業未來前景的預測力

資本支出對於特定行業的長期景氣,有一定的預測能力,我們可以透過XQ 的自訂指標,畫出細產業價格與資本支出的長期對照圖。

腳本一樣是從先前其他類以的自訂指標,例如整體存貨的腳本,直接複製,然後把欄位名稱改成資本支出金額即可

 

Group: _group();//宣告群組
var: _i(0), _size(0);
var: _Health(0);
_group = GetSymbolGroup("成份股");//指定群組的商品
// 檢查是否有資料
_size = GroupSize(_group);
if _size = 0 then return;
// 迴圈運算前,初始化變數
value1 = 0;
value2 = 0;
value3=0;
// 迴圈計算每一檔成份股數值
for _i = 1 to _size begin //大迴圈會跑遍每一檔成份股
if CheckSymbolField(_group[_i], "Close") then begin //確認股票當天有資料
// 實際要計算的內容===開始===
// STEP 1 換期時數值歸零
if GetSymbolFieldDate(_group[_i], "資本支出金額", "Q") > value1 then begin //如果成份股有人提前公佈數值,目前計算的都歸零
value1 = GetSymbolFieldDate(_group[_i], "資本支出金額", "Q");
value2 = 0;
value3 = 0;
end;

// STEP 2 同樣期別時,數值計算
if GetSymbolFieldDate(_group[_i], "資本支出金額", "Q") = value1 then begin //依最新的資料期別進行統計
value2 = value2 + 1;
value3 = value3 + GetSymbolField(_group[_i], "資本支出金額", "Q");
end;
// 實際要計算的內容===結束===
end; 
end;
// 要繪製的指標
// 
plot(1, value3, "整體資本支出金額");

這個腳本應用在產業時要特定注意,如果這個細產業,台灣佔比不高,海外同業資本支出金額可能對產業影響更大,這個指標就未必具有參考意義

 

像重電業及電線電纜這種行業就非常明顯,業者集體擴大資本支出往往代表的是市場需求的變化,而隨著資本支出的成果轉變成營收時,也容易帶動股價的上漲。

 

另外像被動元件族群,台灣佔全球市佔高,集體資本支出,在長期低迷後的連續成長,通常就代表業者對產業未來轉趨樂觀

資本支出跟預收款一樣,往往代表未來的營收變化,都是值得參考的數據