<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>PEG &#8211; FinLab</title>
	<atom:link href="https://www.finlab.tw/tag/peg/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.finlab.tw</link>
	<description>深入淺出的量化投資，讓你在在茫茫股海中，找到專屬於自己的投資方法</description>
	<lastBuildDate>Fri, 07 Jul 2023 12:31:10 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.9</generator>

<image>
	<url>https://www.finlab.tw/wp-content/uploads/2020/07/favicon.png</url>
	<title>PEG &#8211; FinLab</title>
	<link>https://www.finlab.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">179699571</site>	<item>
		<title>美股探險記第4課:美股選股池分類器使用教學｜本益成長比最適合用在哪些產業？</title>
		<link>https://www.finlab.tw/us_stock_industry_peg/</link>
					<comments>https://www.finlab.tw/us_stock_industry_peg/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Fri, 07 Jul 2023 03:49:18 +0000</pubDate>
				<category><![CDATA[VIP文章]]></category>
		<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[Python新手教學]]></category>
		<category><![CDATA[股票策略]]></category>
		<category><![CDATA[PEG]]></category>
		<category><![CDATA[VIP限定]]></category>
		<category><![CDATA[產業分析]]></category>
		<category><![CDATA[美股]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=5424</guid>

					<description><![CDATA[美股該如何選股？如果你有實際開發過美股策略，會發現一件很奇怪的事，那就是台股有用的策略，在美股幾乎都失效。除了 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">美股該如何選股？如果你有實際開發過美股策略，會發現一件很奇怪的事，那就是台股有用的策略，在美股幾乎都失效。除了高效率市場的因素，我想還有一個關鍵假設，那就是選股池的影響性。<br>我們知道每個產業適用的指標不同，像本益比指標可能就不適合在獲利起伏很大的行業，例如原物料、營造，而在獲利穩定比較高的產業較具指標意義。<br>如果沒縮小選股池，針對特定產業找出指標，那就像在大海撈針，會對基本面選股有很大的影響美國是全球最大的資本市場，上市交易的標地很多，達上萬檔，細產業也分散到上百個，不像台股集中在製造業與電子業，就算台股沒分類，也很容易找到通用全市場的指標，但美股直接全市場選股，很容易因產業一致性的缺乏，導致許多雜訊出來，例如挑本益比低於10倍的股票，在A產業偏低，但在B產業是偏高，不可混為一談。</p>



<figure class="wp-block-image"><img src="https://pineapple-centaur-13d.notion.site/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F7215288f-c611-4162-8b08-4def11a666a9%2Fnewplot_(12).png?id=3c3e1f3c-9626-4a5c-8cba-dec340bc7a7c&amp;table=block&amp;spaceId=9ed484a1-504e-442b-b113-ec69267e5d7a&amp;width=2000&amp;userId=&amp;cache=v2" alt="https%3A%2F%2Fs3 us west 2.amazonaws.com%2Fsecure.notion static.com%2F7215288f c611 4162 8b08 4def11a666a9%2Fnewplot (12)" title="美股探險記第1課:為什麼要投資美股？ 5"/><figcaption>台股製造業數據</figcaption></figure>



<p class="has-medium-font-size">為解決選股池的問題，FinLab Package 在 0.4.5 的版本開發了<a href="https://doc.finlab.tw/reference/data/#finlab.data.us_universe" target="_blank" rel="noopener">美股選股池控制</a>的功能，利用短短的程式碼，就能對美股做不同層級的分類，接下來會向大家介紹如何使用此功能，並找出本益成長比最適合用在哪些產業？</p>



<h2>美股選股池分類</h2>



<p class="has-medium-font-size">此功能的用途在當呼叫&nbsp;<code>data.get</code>&nbsp;或是&nbsp;<code>data.indicator</code>&nbsp;時，返回美股產業相關類股。<br>和台股不同的地方在美股因標的範圍較大，有4個篩選變數可以控制，預設都是全選。<br>細節請見<a href="https://doc.finlab.tw/reference/data/#finlab.data.us_universe" target="_blank" rel="noopener">美股選股池控制</a>的功能。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="824" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-上午8.31.30-1024x824.png" alt="截圖 2023 07 07 上午8.31.30" class="wp-image-5425" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-上午8.31.30-1024x824.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-上午8.31.30-300x241.png 300w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-上午8.31.30-768x618.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-上午8.31.30.png 1446w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第4課:美股選股池分類器使用教學｜本益成長比最適合用在哪些產業？ 1"></figure>



<h3>參數說明</h3>



<ul class="has-medium-font-size"><li>market：證券種類，採取模糊比對。<br>若設定為 Common Stock ，則會篩選出美國國內上市企業與 ADR (海外存託憑證:外國公司在美國二次上市) 的普通股，不會選到一些流動性比較低的特別股。<br>若想排除 ADR，則可以設定為 Domestic Common Stock，就只會選到美國國內上市企業。</li><li>sector：產業主板塊，可視為比較粗略的產業分類。像是美股有許多高科技公司很吸引人，若想選定標的在科技股，將此參數設定為 Technology 。</li><li>industry：細產業，可視為比較細的產業分類，由於細產業很多，不方便一一列在文件上，我們可在<a href="https://ai.finlab.tw/database#%E7%BE%8E%E8%82%A1%E4%BC%81%E6%A5%AD%E5%9F%BA%E6%9C%AC%E8%B3%87%E8%A8%8A" target="_blank" rel="noopener">美股企業基本資訊</a>的資裡中找到資料，利用以下程式碼取得細產業索引： <code>set(data.get('us_tickers')['industry'])</code>。像是美股科技股中的軟體公司很吸引人，若想選定標的在軟體股，將此參數設定為 Software &#8211; Application 。</li><li>exchange：交易所。不同的交易所有不同的主流標地及規範。偏愛科技股或新創的，可選NASDAQ。<br>紐約證券交易所（New York Stock Exchange，簡稱NYSE）和納斯達克交易所（NASDAQ）是美國主要的證券交易所，它們在以下幾個方面存在差異：<br>1.交易模式：紐約交易所採用傳統的“交易員制”模式，即交易員在交易所的交易廳內進行股票交易。而納斯達克交易所採用電子交易系統，投資者通過計算機網絡進行交易。<br>2.有吸引力的上市公司類型：紐約交易所主要是大型傳統企業，如跨國公司和傳統產業公司。納斯達克交易所則更有吸引力的科技、生物技術和高成長性公司。<br>3.上市要求：紐約證券交易所對上市公司的要求較為嚴格，包括市值、財務狀況、歷史業績等方面的要求。納斯達克交易較多成長型公司，其上市要求相對較低。<br>4.交易時間：紐約交易所的交易時間為周一至週五上午9:30至下午4:00（美國東部時間）。納斯達克交易所的交易時間也是周一至週五上午9:30至下午4:00 :00，但還提供了一些延長交易時間的選項。<br>5.許多市場地位：紐約交易所是世界上最大、最多的股票交易所之一，吸引了許多大型企業和國際投資者。納斯達克交易所在科技股領域具有越來越大的影響力，吸引了新興市場科技公司和高科技投資者。</li></ul>



<h3>使用範例</h3>



<p class="has-medium-font-size">以下為幾個常用範例，幫助我們將資料限縮在特定範圍，限縮之後，就能針對本質較相近的股票做後續研究。</p>



<h3>限定在美股普通股中的科技類股</h3>



<pre class="wp-block-code"><code lang="python" class="language-python"><a href="https://doc.finlab.tw/reference/data/#__codelineno-0-1" target="_blank" rel="noopener"></a>with us_universe('Common Stock', ['Technology']):
<a href="https://doc.finlab.tw/reference/data/#__codelineno-0-2" target="_blank" rel="noopener"></a>    close_subset = data.get('us_price:close')
<a href="https://doc.finlab.tw/reference/data/#__codelineno-0-3" target="_blank" rel="noopener"></a>    print(close_subset)
</code></pre>



<figure class="wp-block-table has-medium-font-size"><table><thead><tr><th>date</th><th>AAOI</th><th>AAPL</th><th>..</th><th>ABCO</th><th>NVDA</th></tr></thead><tbody><tr><td>2017-01-03</td><td>39.65</td><td>38.3</td><td>..</td><td>7.8</td><td>17.55</td></tr><tr><td>2017-01-04</td><td>39.85</td><td>38.85</td><td>..</td><td>8.34</td><td>17.5</td></tr><tr><td>2017-01-05</td><td>39.25</td><td>38.1</td><td>..</td><td>8.25</td><td>17.3</td></tr><tr><td>2017-01-06</td><td>39</td><td>37.85</td><td>..</td><td>8.2</td><td>17.3</td></tr><tr><td>2017-01-09</td><td>38.2</td><td>37.2</td><td>..</td><td>7.88</td><td>16.6</td></tr></tbody></table></figure>



<h3>限定在美股特別股中的基礎原物料和能源類股</h3>



<pre class="wp-block-code"><code lang="python" class="language-python"><a href="https://doc.finlab.tw/reference/data/#__codelineno-1-1" target="_blank" rel="noopener"></a>with data.us_universe('Preferred Stock', ['Basic Materials','Energy']):
<a href="https://doc.finlab.tw/reference/data/#__codelineno-1-2" target="_blank" rel="noopener"></a>    close_subset = data.get('us_price:close')
<a href="https://doc.finlab.tw/reference/data/#__codelineno-1-3" target="_blank" rel="noopener"></a>    print(close_subset)
</code></pre>



<figure class="wp-block-table has-medium-font-size"><table><thead><tr><th>date</th><th>AEUA</th><th>ALIN-PA</th><th>..</th><th>ALIN-PB</th><th>ALIN-PE</th></tr></thead><tbody><tr><td>2017-01-03</td><td>39.65</td><td>38.3</td><td>..</td><td>7.8</td><td>17.55</td></tr><tr><td>2017-01-04</td><td>39.85</td><td>38.85</td><td>..</td><td>8.34</td><td>17.5</td></tr><tr><td>2017-01-05</td><td>39.25</td><td>38.1</td><td>..</td><td>8.25</td><td>17.3</td></tr><tr><td>2017-01-06</td><td>39</td><td>37.85</td><td>..</td><td>8.2</td><td>17.3</td></tr><tr><td>2017-01-09</td><td>38.2</td><td>37.2</td><td>..</td><td>7.88</td><td>16.6</td></tr></tbody></table></figure>



<h3>限定在美股 NASDAQ 交易所普通股中的軟體類股</h3>



<pre class="wp-block-code"><code lang="python" class="language-python"><a href="https://doc.finlab.tw/reference/data/#__codelineno-2-1" target="_blank" rel="noopener"></a>with data.us_universe('Common Stock', industry='Software', exchange='NASDAQ'):
<a href="https://doc.finlab.tw/reference/data/#__codelineno-2-2" target="_blank" rel="noopener"></a>    close_subset = data.get('us_price:close')
<a href="https://doc.finlab.tw/reference/data/#__codelineno-2-3" target="_blank" rel="noopener"></a>    print(close_subset)
</code></pre>



<figure class="wp-block-table has-medium-font-size"><table><thead><tr><th>date</th><th>ACIW</th><th>ACVA</th><th>..</th><th>ZI</th><th>ZS</th></tr></thead><tbody><tr><td>2017-01-03</td><td>39.65</td><td>38.3</td><td>..</td><td>7.8</td><td>17.55</td></tr><tr><td>2017-01-04</td><td>39.85</td><td>38.85</td><td>..</td><td>8.34</td><td>17.5</td></tr><tr><td>2017-01-05</td><td>39.25</td><td>38.1</td><td>..</td><td>8.25</td><td>17.3</td></tr><tr><td>2017-01-06</td><td>39</td><td>37.85</td><td>..</td><td>8.2</td><td>17.3</td></tr><tr><td>2017-01-09</td><td>38.2</td><td>37.2</td><td>..</td><td>7.88</td><td>16.6</td></tr></tbody></table></figure>



<h3>檢視有哪些細產業可選擇</h3>



<pre class="wp-block-code"><code lang="python" class="language-python"><a href="https://doc.finlab.tw/reference/data/#__codelineno-3-1" target="_blank" rel="noopener"></a>print(set(data.get('us_tickers')['industry']))
</code></pre>



<pre class="wp-block-code"><code class=""><a href="https://doc.finlab.tw/reference/data/#__codelineno-4-1" target="_blank" rel="noopener"></a>{'Advertising Agencies',
<a href="https://doc.finlab.tw/reference/data/#__codelineno-4-2" target="_blank" rel="noopener"></a> 'Aerospace &amp; Defense',
<a href="https://doc.finlab.tw/reference/data/#__codelineno-4-3" target="_blank" rel="noopener"></a> 'Agricultural Inputs',
<a href="https://doc.finlab.tw/reference/data/#__codelineno-4-4" target="_blank" rel="noopener"></a> 'Airlines',
<a href="https://doc.finlab.tw/reference/data/#__codelineno-4-5" target="_blank" rel="noopener"></a> 'Airports &amp; Air Services',
<a href="https://doc.finlab.tw/reference/data/#__codelineno-4-6" target="_blank" rel="noopener"></a> 'Aluminum',
<a href="https://doc.finlab.tw/reference/data/#__codelineno-4-7" target="_blank" rel="noopener"></a> ...}</code></pre>



<h2><span style="font-size: 49.4px;">本益成長比最適合用在哪些產業？</span></h2>



<h3>全市場回測</h3>



<p class="has-medium-font-size">我們來寫一個簡單的本益成長比(PEG)當範例，條件說明如下</p>



<ul class="has-medium-font-size"><li>本益比 &gt; 0：公司近一年獲利要是正數</li><li>營業利益成長率 &gt; 20：公司的獲利能力具一定水準，不是低利潤產業</li><li>營業利益成長率 &gt; 營收成長率：本業獲利成長大於營收成長，代表公司的銷貨是重質不重量。</li><li>篩選出來後，用本益成長比做排序選出本益成長比最低的前10名，若您不了解本益成長比的定義，可參考這篇文章「<a href="https://www.finlab.tw/finlab-tw-stock-peg-strategy/">進化後的本益比｜本益成長比選股策略</a>」。</li><li>每週再平衡。</li><li>停損為10%。<br></li></ul>



<h3>程式碼</h3>



<pre class="wp-block-code"><code lang="python" class="language-python">from finlab import data
from finlab.backtest import sim

本益比 = data.get('us_daily_metrics_all:pe')
營收= data.get('us_fundamental_all:revenue')
營業利益 = data.get('us_fundamental_all:opinc')

def 成長率(s):
    return ((s-s.shift(4)) / s.shift(4).abs()) * 100

營收成長率 = 成長率(營收)
營業利益成長率 = 成長率(營業利益)
peg = (本益比/營業利益成長率)

cond1 = 本益比 &gt; 0
cond2 = 營業利益成長率 &gt; 20
cond3 = 營業利益成長率 &gt; 營收成長率

cond_all = cond1 &amp; cond2 &amp; cond3
position = peg*cond_all
position = position[position &gt; 0].is_smallest(10)

report = sim(resample='W', position=position, fee_ratio=0, tax_ratio=0, stop_loss=0.1, name='美股本益成長比')
report.display()</code></pre>



<h3>回測結果</h3>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="536" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.06.34-1024x536.png" alt="截圖 2023 07 07 下午8.06.34" class="wp-image-5438" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.06.34-1024x536.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.06.34-300x157.png 300w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.06.34-768x402.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.06.34-1536x804.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.06.34.png 1930w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第4課:美股選股池分類器使用教學｜本益成長比最適合用在哪些產業？ 2"></figure>



<p class="has-medium-font-size">以這麼簡單的條件而言，發現效果相當不錯，接下來我們用選股池分類器來針對不同的板塊做回測。</p>



<h2>板塊分組回測</h2>



<p class="has-medium-font-size">將不同的板塊名稱輸入進選股池分類器，執行迴圈。並使用「<a href="https://doc.finlab.tw/reference/optimize/#finlab.optimize.combinations.ReportCollection" target="_blank" rel="noopener">回測組合比較報告</a>」的功能來比較不同板塊的回測結果。</p>



<h3>程式碼</h3>



<pre class="wp-block-code"><code lang="python" class="language-python">from finlab import data
from finlab.backtest import sim
from finlab.optimize.combinations import ReportCollection

dataset = {}

for ind in ['Basic Materials','Communication Services','Consumer Cyclical','Consumer Defensive','Energy','Financial Services','Healthcare','Industrials','Real Estate','Technology','Utilities']:
    with data.us_universe(sector=ind):

        本益比 = data.get('us_daily_metrics:pe')
        營收= data.get('us_fundamental:revenue')
        營業利益 = data.get('us_fundamental:opinc')


        def 成長率(s):
            return ((s-s.shift(4)) / s.shift(4).abs()) * 100

        營收成長率 = 成長率(營收)
        營業利益成長率 = 成長率(營業利益)
        peg = (本益比/營業利益成長率)

        cond1 = 本益比 > 0
        cond2 = 營業利益成長率 > 20
        cond3 = 營業利益成長率 > 營收成長率

        cond_all = cond1 &amp; cond2 &amp; cond3
        position = peg*cond_all
        position = position[position > 0].is_smallest(10)

        report = sim(resample='W', position=position, fee_ratio=0, tax_ratio=0, stop_loss=0.1, name='美股本益成長比', upload=False)
        dataset[ind] = report


indicators=['daily_mean','daily_sharpe','max_drawdown']
report_collection = ReportCollection(dataset)
# 策略分組指標報告
report_collection.plot_creturns().show()
report_collection.plot_stats('bar',indicators=indicators).show()
report_collection.plot_stats('heatmap',indicators=indicators)</code></pre>



<h3>回測結果</h3>



<p class="has-medium-font-size">可以發現「科技股」的報酬率一支獨秀，報酬率的前3名板塊與後3名的差距非常大。<br>綜合評分以「報酬率、夏普率、最大回撤幅度」分級平均計算，前3名依序是「<strong>Consumer Cyclical</strong>、<strong>Financial Services</strong>、<strong>Technology</strong>」。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="521" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午7.59.31-1024x521.png" alt="截圖 2023 07 07 下午7.59.31" class="wp-image-5439" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午7.59.31-1024x521.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午7.59.31-300x153.png 300w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午7.59.31-768x391.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午7.59.31-1536x782.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午7.59.31-2048x1042.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第4課:美股選股池分類器使用教學｜本益成長比最適合用在哪些產業？ 3"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="926" height="1024" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.08.57-926x1024.png" alt="截圖 2023 07 07 下午8.08.57" class="wp-image-5440" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.08.57-926x1024.png 926w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.08.57-271x300.png 271w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.08.57-768x849.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.08.57-1389x1536.png 1389w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.08.57.png 1447w" sizes="(max-width: 926px) 100vw, 926px" title="美股探險記第4課:美股選股池分類器使用教學｜本益成長比最適合用在哪些產業？ 4"></figure>



<h2>最終策略</h2>



<p class="has-medium-font-size">將策略範圍的選股池限定在「<strong>Consumer Cyclical</strong>、<strong>Financial Services</strong>、<strong>Technology</strong>」這三個使用本益成長比策略表現較好的板塊，為什麼不要只限定在第一名的產業就好？原因在適當產業多元化，能避免過度集中在特定產業循環的風險，在產業逆風年，個股很難有表現，但如果有做產業分散，就比較有機會抵抗單一產業的逆風時刻。</p>



<h3>程式碼</h3>



<p class="has-medium-font-size">每個產業選10檔股票，再將這3個產業的選股結果合併。</p>



<pre class="wp-block-code"><code lang="python" class="language-python">from finlab import data
from finlab.backtest import sim
import pandas as pd

def sector_postion(sector):
    with data.us_universe(sector=sector):
        本益比 = data.get('us_daily_metrics:pe')
        營收= data.get('us_fundamental:revenue')
        營業利益 = data.get('us_fundamental:opinc')

        def 成長率(s):
            return ((s-s.shift(4)) / s.shift(4).abs()) * 100

        營收成長率 = 成長率(營收)
        營業利益成長率 = 成長率(營業利益)
        peg = (本益比/營業利益成長率)

        cond1 = 本益比 > 0
        cond2 = 營業利益成長率 > 20
        cond3 = 營業利益成長率 > 營收成長率

        cond_all = cond1 &amp; cond2 &amp; cond3
        position = peg*cond_all
        position = position[position > 0].is_smallest(10)
        return position


positions = pd.concat([sector_postion(sector) for sector in ['Consumer Cyclical','Financial Services','Technology']],axis=1)
report = sim(position=positions, resample='W', fee_ratio=0, tax_ratio=0, stop_loss=0.1, name='美股本益成長比', live_performance_start='2021-06-01')</code></pre>



<h3>回測結果</h3>



<figure class="wp-block-image size-large"><img loading="lazy" width="912" height="1024" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.26.05-912x1024.png" alt="截圖 2023 07 07 下午8.26.05" class="wp-image-5441" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.26.05-912x1024.png 912w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.26.05-267x300.png 267w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.26.05-768x862.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-07-下午8.26.05.png 1127w" sizes="(max-width: 912px) 100vw, 912px" title="美股探險記第4課:美股選股池分類器使用教學｜本益成長比最適合用在哪些產業？ 5"></figure>



<p class="has-medium-font-size">撋報酬率降低一些，但夏普率和最大回撤幅度與原先的結果相比則有明顯提升。<br>還在為優化策略所苦嗎？你絕對不能錯過 <a href="https://doc.finlab.tw/reference/data/#finlab.data.us_universe" target="_blank" rel="noopener">美股選股池控制</a> 這個好用功能，趕緊來試試吧！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/us_stock_industry_peg/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5424</post-id>	</item>
		<item>
		<title>低波動本益成長比策略 &#124; MAE_MFE 機器學習選股</title>
		<link>https://www.finlab.tw/low_volatility_stratgy_by_mae_mfe_ml/</link>
					<comments>https://www.finlab.tw/low_volatility_stratgy_by_mae_mfe_ml/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Mon, 07 Nov 2022 23:33:00 +0000</pubDate>
				<category><![CDATA[AI看股票]]></category>
		<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[VIP文章]]></category>
		<category><![CDATA[基本面分析]]></category>
		<category><![CDATA[技術面]]></category>
		<category><![CDATA[籌碼面]]></category>
		<category><![CDATA[選股策略]]></category>
		<category><![CDATA[Kmeans]]></category>
		<category><![CDATA[MAE_MFE]]></category>
		<category><![CDATA[PEG]]></category>
		<category><![CDATA[scikit-learn]]></category>
		<category><![CDATA[VIP限定]]></category>
		<category><![CDATA[低波動]]></category>
		<category><![CDATA[台股]]></category>
		<category><![CDATA[本益成長比]]></category>
		<category><![CDATA[機器學習]]></category>
		<category><![CDATA[決策樹]]></category>
		<category><![CDATA[混淆矩陣]]></category>
		<category><![CDATA[融資使用率]]></category>
		<category><![CDATA[進場波動]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=3687</guid>

					<description><![CDATA[有時我們有了初始策略輪廓，寫出來發現年化報酬率不錯，但夏普率不高、最大回撤率過大，若拿去實戰，持有歷程會遇上信心考驗，績效跳動範圍也大。有沒有辦法讓策略能夠報酬率更高、波動更低？

本篇範例會利用基礎的機器學習演算法 Kmeans 分群 mae_mfe 指標，製作決策樹使用的 Labels，優化原本的"本益成長比"策略，示範 scikit-learn 搭配 finlab 模組是多麼強大又簡單！]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">有時我們有了初始策略輪廓，寫出來發現年化報酬率不錯，但夏普率不高、最大回撤率過大，若拿去實戰，持有歷程會遇上信心考驗，績效跳動範圍也大。有沒有辦法讓策略能夠報酬率更高、波動更低？ 但選股條件那麼多，單因子策略不停去 try error 組合很沒效率，這時就是&#8221;機器學習選股&#8221;的優勢，高效分析影響性大的特徵。<br>很多人對如何將機器學習應用到投資領域很有興趣，但實作要怎麼設計？用報酬率當Label真的好嗎？太難的演算法又看不懂或難消化，到底怎麼辦？<br>本篇範例會利用基礎的機器學習演算法 Kmeans 分群 mae_mfe 指標，製作決策樹使用的 Labels，優化原本的&#8221;本益成長比&#8221;策略，示範 scikit-learn 搭配 finlab 模組是多麼強大又簡單！</p>



<h2>選定待優化的策略</h2>



<p class="has-medium-font-size"><a href="https://www.finlab.tw/finlab-tw-stock-peg-strategy/">進化後的本益比｜本益成長比選股策略</a> 一文中用簡單的單因子回歸產生一個簡潔卻有效的選股策略。為了製造比較多的回測樣本，我們將之前的策略調成每月選取20檔標的。<br><strong>留意本篇的測試資料結果可能隨著資料集增長而產生差異，回測僅供參考。</strong><br>回測年化報酬率23%是不錯的水準，夏普率勉強優於大盤的0.9，但最大回撤率蠻高的，報酬率曲線震盪有點劇烈，好幾次回檔30%，實戰的持有過程肯定會備受考驗，可以加上哪些條件解決波動的問題呢？</p>



<pre class="wp-block-code"><code lang="python" class="language-python">from finlab import data
from finlab.backtest import sim

pe = data.get('price_earning_ratio:本益比')
rev = data.get('monthly_revenue:當月營收')
rev_ma3 = rev.average(3)
rev_ma12 = rev.average(12)
營業利益成長率 = data.get('fundamental_features:營業利益成長率').deadline()
peg = (pe/營業利益成長率)
cond1 = rev_ma3/rev_ma12 &gt; 1.1
cond2 = rev/rev.shift(1) &gt; 0.9

cond_all = cond1 &amp; cond2
result = peg*(cond_all)
position = result[result&gt;0].is_smallest(20).reindex(rev.index_str_to_date().index, method='ffill')


report = sim(position=position,name="本益成長比", fee_ratio=1.425/1000/3,upload=True,mae_mfe_window=30,position_limit=0.05)
report.display()</code></pre>



<figure class="wp-container-2 wp-block-gallery-1 wp-block-gallery has-nested-images columns-default is-cropped">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="645" data-id="4735" src="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.19.18-1024x645.png" alt="截圖 2022 10 30 下午9.19.18" class="wp-image-4735" srcset="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.19.18-1024x645.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.19.18-300x189.png 300w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.19.18-768x483.png 768w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.19.18.png 1390w" sizes="(max-width: 1024px) 100vw, 1024px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 6"></figure>
</figure>



<p class="has-medium-font-size"><br></p>



<h2>製作波動性 Labels </h2>



<p class="has-medium-font-size">給對的學習目標很重要！選擇比努力更重要！<br>一般機器學習選股策略使用報酬率做 label ，但演算法只會判斷報酬率的賺賠高低，並沒有辦法學習波動特性，若給定的 label 一開始就有所限制，再怎麼學也是無法跳脫只追求高報酬的風險。 </p>



<h3>MAE &amp; MFE</h3>



<p class="has-medium-font-size"><a href="https://www.finlab.tw/display_mae_mfe_analysis/">揭開策略的波動面紗｜MAE&amp;MFE分析圖組使用指南</a> 一文中解釋了 MAE 與 MFE 的可幫助我們分析策略波動和基本應用，我們可以輕鬆由FinLab模組中的<a href="https://doc.finlab.tw/reference/analysis/#finlab.analysis.Report.get_trades" target="_blank" rel="noopener"> <code>report.get_trades()</code></a> 取得策略標的持有歷程的 MAE 與 MFE 與其他交易資料。<a href="https://doc.finlab.tw/reference/analysis/#finlab.analysis.Report.display_mae_mfe_analysis" target="_blank" rel="noopener"> <code>report.display_mae_mfe_analysis()</code></a> 則可顯示波動率分析圖組，幫助我們觀察波動分佈。</p>



<figure class="wp-container-4 wp-block-gallery-3 wp-block-gallery has-nested-images columns-default is-cropped">
<figure class="wp-block-image size-large"><img loading="lazy" width="1200" height="1200" data-id="4729" src="https://www.finlab.tw/wp-content/uploads/2022/10/newplot-1.png" alt="newplot 1" class="wp-image-4729" srcset="https://www.finlab.tw/wp-content/uploads/2022/10/newplot-1.png 1200w, https://www.finlab.tw/wp-content/uploads/2022/10/newplot-1-300x300.png 300w, https://www.finlab.tw/wp-content/uploads/2022/10/newplot-1-1024x1024.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/10/newplot-1-150x150.png 150w, https://www.finlab.tw/wp-content/uploads/2022/10/newplot-1-768x768.png 768w, https://www.finlab.tw/wp-content/uploads/2022/10/newplot-1-600x600.png 600w" sizes="(max-width: 1200px) 100vw, 1200px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 7"></figure>
</figure>



<p class="has-medium-font-size"><br>從上圖中的 GMFE / MAE 子圖可以發現波動分佈分為三塊：</p>



<ul class="has-medium-font-size"><li>最多聚集的一塊是在左下角小賺小賠的標的。</li><li>策略獲利的標的有些是「高 GMFE 低 MAE (往上高波動、往下低波動)」，給我們帶來極高獲利，這在趨勢策略較常出現，是我們想保留的。</li><li>虧損的標的大多是 「低 GMFE 高 MAE  (往下高波動、往上低波動)」的族群，有些標的持有紀錄還有 -50% 以上不利跌幅，這些會影響到策略的波動穩定度，是我們想淘汰的拖油瓶。</li></ul>



<p class="has-medium-font-size">若能用MAE &amp; MFE 取代報酬率作為 label，就可以讓模型學習判斷波動度與報酬率，若三個分群有特徵共通性，那之後做機器學習可能可找到有效分類 「高 GMFE 低 MAE 」 與 「低 GMFE 高 MAE」的特徵。</p>



<h3>Kmeans 分群</h3>



<p class="has-medium-font-size">如何界定「高 GMFE 低 MAE 」與 「低 GMFE 高 MAE 」 ？<br>這時<a href="https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html" target="_blank" rel="noopener">非監督學習演算法Kmeans</a>就可以粉墨登場，幫我們去做分群的動作，讓模型自動幫我們藉由 GMFE 低 MAE 兩項特徵分出三個群集。<br><strong>注意分群給的數字具有隨機性！</strong>比如「高 GMFE 低 MAE 」可能分類標註為1，下次執行跳為2。<br>在模型訓練前，因用有少數大幅獲利與多數群集分太開，先使用 <code>from sklearn.preprocessing import StandardScaler</code> 將資料做正規化，將資料傳入 Kmeans 分群，並將結果繪圖呈現分佈。<br>我們把預設值 y_pred 放入原本的 trade dataframe，設為 group，就完成 label 標記了，輸出結果可以發現 Kmeans 成功幫我們分出三個顏色區塊。</p>



<pre class="wp-block-code"><code lang="python" class="language-python">import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

from sklearn.preprocessing import StandardScaler

def scale_data(data):
    scaler = StandardScaler().fit(data)
    X_scaled = scaler.transform(data)
    return X_scaled

scale_mae = scale_data(trades['mae'].values.reshape(-1, 1))
scale_gmfe = scale_data(trades['gmfe'].values.reshape(-1, 1))


plt.figure(figsize = (8, 8))
random_state = 100
X = np.hstack((scale_mae,scale_gmfe))
y_pred = KMeans(n_clusters=3,random_state=random_state).fit_predict(X)

scatter = plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.legend(*scatter.legend_elements())
plt.title("mae_gmfe kmeans")
plt.xlabel("mae")
plt.ylabel("gmfe")</code></pre>



<figure class="wp-block-image size-full"><img loading="lazy" width="942" height="855" src="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.00.52.png" alt="截圖 2022 10 30 下午9.00.52" class="wp-image-4731" srcset="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.00.52.png 942w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.00.52-300x272.png 300w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.00.52-768x697.png 768w" sizes="(max-width: 942px) 100vw, 942px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 8"></figure>



<p class="has-medium-font-size">為了讓模型更專注於「高 GMFE 低 MAE 」與 「低 GMFE 高 MAE 」 的學習，只保留 group 為1、2 (藍綠點) 的部分，我們把白點的區塊視為不影響大局的雜訊，藍色和綠色的點才是影響策略波動的關鍵</p>



<pre class="wp-block-code"><code lang="python" class="language-python">cluster_trades = trades.copy()
cluster_trades['group'] = y_pred
cluster_trades['stock_id'] = cluster_trades['stock_id'].apply(lambda s:s[:s.index(' ')])
ana_targets = cluster_trades[cluster_trades['group'].isin([1,2])]
ana_targets = ana_targets.reset_index().set_index(['stock_id', 'entry_sig_date'])</code></pre>



<p class="has-medium-font-size"></p>



<h2>決策樹-探索低波動因子</h2>



<p class="has-medium-font-size">標注完了 label 後，就可以進行下一步，尋找有沒有選股條件能辨識label ，這就要換監督式學習登場。這部分的程式主要參考 <a href="https://hahow.in/courses/5b9d3a6dca498a001e917383/discussions" target="_blank" rel="noopener">Python 理財：打造自己的 AI 股票理專課程</a>  單元 3-7-隨機森林選股策略實作，因資料量級較小，把隨機森林換成決策樹。</p>



<h3>製作 Features</h3>



<p class="has-medium-font-size">將想測試的資料或可能的低波動因子並成 dataframe 準備進入模型訓練，特徵可以使用 <a href="https://ai.finlab.tw/database" target="_blank" rel="noopener">Finlab 資料庫</a> 取得，並將資料以 2019 年為分界點，切成訓練及測試資料集。</p>



<figure class="wp-block-image"><img alt=""/></figure>



<h3>模型測試結果</h3>



<p class="has-medium-font-size">將資料集套入 sklearn 決策樹，驗證目標為label=1的集群(低 GMFE 高 MAE )，若找到機率越高，能有效躲避波動。<br>測試結果放入 <a href="https://www.ycc.idv.tw/confusion-matrix.html" target="_blank" rel="noopener">confusion-matrix</a> 驗證結果，抓出「低 GMFE 高 MAE 」的準確度達75%，預測45(34+11) 次內有34次正確。<br>指標意義詳見～<a href="https://medium.com/nlp-tsupei/precision-recall-f1-score%E7%B0%A1%E5%96%AE%E4%BB%8B%E7%B4%B9-f87baa82a47" target="_blank" rel="noopener">Precision, Recall, F1-score簡單介紹</a>。<br></p>



<pre class="wp-block-code"><code lang="python" class="language-python">import pandas as pd
from sklearn import metrics
from sklearn.tree import DecisionTreeClassifier

label = ana_targets[ana_targets['mae']&gt; ana_targets['gmfe']]['group'].values[0]
features_name = list(features.keys())
cf = DecisionTreeClassifier(max_depth=3)
cf.fit(dataset_train[features_name], dataset_train['group'] ==label)


prediction = cf.predict(dataset_test[features_name])
confusion_matrix = metrics.confusion_matrix(dataset_test['group'] == label, prediction)
tn, fp, fn, tp = confusion_matrix.ravel()
confusion_matrix = np.array([[tp, fp],[fn, tn]])


print('f1 score:',metrics.f1_score(dataset_test['group'] == label, prediction))
print('precision score(p):',metrics.precision_score(dataset_test['group'] == label, prediction))
print('recall score(p):',metrics.recall_score(dataset_test['group'] == label, prediction))


plt.figure(figsize=(10, 6))
sns.set(font_scale=2)

ax = sns.heatmap(confusion_matrix, annot=True, cmap='Blues')
ax.set_title('Confusion Matrix with labels\n\n');
ax.set_xlabel('Actual Values')
ax.set_ylabel('Predicted Values');

## Ticket labels - List must be in alphabetical order
ax.xaxis.set_ticklabels(['True','False'])
ax.yaxis.set_ticklabels(['True','False'])

## Display the visualization of the Confusion Matrix.
plt.show()
</code></pre>



<figure class="wp-container-6 wp-block-gallery-5 wp-block-gallery has-nested-images columns-default is-cropped">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="954" data-id="4866" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-13-下午7.16.34-1024x954.png" alt="截圖 2022 11 13 下午7.16.34" class="wp-image-4866" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-13-下午7.16.34-1024x954.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-13-下午7.16.34-300x280.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-13-下午7.16.34-768x716.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-13-下午7.16.34.png 1422w" sizes="(max-width: 1024px) 100vw, 1024px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 9"></figure>
</figure>



<p></p>



<h3>因子重要性</h3>



<p class="has-medium-font-size"><code>from sklearn.tree import plot_tree</code>  可繪製出決策樹的機器學習選股決策流程，最上頭的X[8]為&#8217;融資使用率&#8217;，使用33.6當數值分界點，X序列等同features_name排序。<br><code>cf.feature_importances_</code>  可得知重要因子的影響性分數。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="751" src="https://www.finlab.tw/wp-content/uploads/2022/10/下載-1-1024x751.png" alt="下載 1" class="wp-image-4733" srcset="https://www.finlab.tw/wp-content/uploads/2022/10/下載-1-1024x751.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/10/下載-1-300x220.png 300w, https://www.finlab.tw/wp-content/uploads/2022/10/下載-1-768x563.png 768w, https://www.finlab.tw/wp-content/uploads/2022/10/下載-1.png 1130w" sizes="(max-width: 1024px) 100vw, 1024px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 10"><figcaption>決策樹分類流程</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="409" src="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.10.47-1024x409.png" alt="截圖 2022 10 30 下午9.10.47" class="wp-image-4734" srcset="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.10.47-1024x409.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.10.47-300x120.png 300w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.10.47-768x307.png 768w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.10.47-1536x613.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.10.47.png 2034w" sizes="(max-width: 1024px) 100vw, 1024px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 11"></figure>



<p class="has-medium-font-size"></p>



<h3>優化測試</h3>



<p class="has-medium-font-size">參考 features_name 、 plot_tree 設定條件數值，加入條件到原本的策略，檢測能否優化。<br>檔數、部位上限、週期設定不變，只加上選股條件。數據會因資料集擴增而有差異，僅供參考。</p>



<h4 class="has-medium-font-size">低融資使用率</h4>



<p class="has-medium-font-size">加入 (融資使用率 &lt;= 34) 條件。</p>



<figure class="wp-container-8 wp-block-gallery-7 wp-block-gallery has-nested-images columns-default is-cropped">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="690" data-id="4737" src="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.26.22-1024x690.png" alt="截圖 2022 10 30 下午9.26.22" class="wp-image-4737" srcset="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.26.22-1024x690.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.26.22-300x202.png 300w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.26.22-768x518.png 768w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.26.22.png 1383w" sizes="(max-width: 1024px) 100vw, 1024px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 12"></figure>
</figure>



<h4 class="has-medium-font-size">低進場波動率</h4>



<p class="has-medium-font-size">加入 ( entry_volatility &lt;= 0.032) 條件。</p>



<figure class="wp-container-10 wp-block-gallery-9 wp-block-gallery has-nested-images columns-default is-cropped">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="701" data-id="4738" src="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.29.17-1024x701.png" alt="截圖 2022 10 30 下午9.29.17" class="wp-image-4738" srcset="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.29.17-1024x701.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.29.17-300x205.png 300w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.29.17-768x526.png 768w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.29.17.png 1385w" sizes="(max-width: 1024px) 100vw, 1024px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 13"></figure>
</figure>



<h4 class="has-medium-font-size"> </h4>



<h4 class="has-medium-font-size">低融資使用率 ＆ 低進場波動率<br></h4>



<figure class="wp-container-12 wp-block-gallery-11 wp-block-gallery has-nested-images columns-default is-cropped">
<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="692" data-id="4736" src="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.24.29-1024x692.png" alt="截圖 2022 10 30 下午9.24.29" class="wp-image-4736" srcset="https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.24.29-1024x692.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.24.29-300x203.png 300w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.24.29-768x519.png 768w, https://www.finlab.tw/wp-content/uploads/2022/10/截圖-2022-10-30-下午9.24.29.png 1387w" sizes="(max-width: 1024px) 100vw, 1024px" title="低波動本益成長比策略 | MAE_MFE 機器學習選股 14"></figure>
</figure>



<h4 class="has-medium-font-size"><br></h4>



<h3>回測分析</h3>



<p class="has-medium-font-size">單因子中「低融資使用率」效果最強，明顯提升「夏普率」，「最大回撤率」則變動不大。可能代表原本的策略蠻多虧損或大幅低檔震盪的源在選到高融資使用率的股票，這類股票通常是市場的大波動熱門股，持有者偏向短線操作，很不穩定。<br><br>「低進場波動度」雖然讓「年化報酬率」減少，但是「夏普率」和「最大回撤率」提升效果比「低融資使用率」更優。低進場波動度代表買入時波動穩定，比較不會碰上已漲一大段的飛天股之後的乖離過大修正，若之後要加上停損條件，也比較不會在持有初期頻繁停損被洗出場。<br><br>「低融資使用率」若與「低進場波動度」因子結合，「夏普率」 從原先策略的 0.9 拉升到1.5，「最大回撤率」降到 -17% 的水準，明顯優化回撤波動。幾乎每一年回測都是正報酬穩定度明顯提升。</p>



<h2>結論</h2>



<p class="has-medium-font-size">這樣的優化策略思路是不是很有趣呢？藉由多元 label 的設定，讓機器學習能考慮多方面去強化策略，只用 scikit learn 最基本的機器學習演算法，非監督式學習與監督式的雙流分工，就能讓優化策略的流程省時省力，趕緊來試試用機器學習選股讓策略更上一層樓吧～<br><a href="https://colab.research.google.com/drive/1Sag1kIoHY2TDXJWWbugRIz1Mq8BcCi2f?usp=sharing" target="_blank" rel="noopener">colab 範例檔</a><br><a href="https://ai.finlab.tw/strategyview/?uid=TJN4FDuqrwU8DML7DAjUYFIMutp2&amp;sid=%E4%BD%8E%E6%B3%A2%E5%8B%95%E6%9C%AC%E7%9B%8A%E6%88%90%E9%95%B7%E6%AF%94" target="_blank" rel="noopener">低波動本益成長比策略部署</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/low_volatility_stratgy_by_mae_mfe_ml/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3687</post-id>	</item>
		<item>
		<title>七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！</title>
		<link>https://www.finlab.tw/peg/</link>
					<comments>https://www.finlab.tw/peg/#comments</comments>
		
		<dc:creator><![CDATA[阿榤]]></dc:creator>
		<pubDate>Sat, 22 Jan 2022 13:11:42 +0000</pubDate>
				<category><![CDATA[選股策略]]></category>
		<category><![CDATA[VIP文章]]></category>
		<category><![CDATA[基本面分析]]></category>
		<category><![CDATA[股票策略]]></category>
		<category><![CDATA[PEG]]></category>
		<category><![CDATA[VIP限定]]></category>
		<category><![CDATA[成長股]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=3077</guid>

					<description><![CDATA[前情提要 本益成長比(簡稱:PEG)是本益比(簡稱:PE)的延伸，將公司未來獲利成長因素納入考量，解決PE對成 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h1>前情提要</h1>



<p>本益成長比(簡稱:PEG)是本益比(簡稱:PE)的延伸，將公司未來獲利成長因素納入考量，解決PE對成長股反應過慢、估值過高的問題。</p>



<p>在<a href="https://www.finlab.tw/finlab-tw-stock-peg-strategy/" class="rank-math-link">進化後的本益成長比</a>這篇文章中我們說明了PEG的概念，並帶大家實作和小幅度更改了PEG的公式獲得更好的回測績效。<strong>這次我將詳細的介紹PEG，提出數十種不同方式計算PEG，並找出最適合的那一個!</strong></p>



<h1>什麼是PEG?</h1>



<p>在開始之前，讓我先帶大家認識一下本益成長比PEG!<br>1992年，PEG於《祖魯法則》一書被英國傳奇投資人吉姆·史萊特(Jim Slater)所提出，震撼當時的英國金融界。PEG也隨後被美國傳奇基金經理人彼得·林區(Peter Lynch)大力推崇，而後廣為人知。</p>



<h2>有PE了，為什麼還需要PEG?</h2>



<p>可能大家會想，不是有PE了嗎，為何還需要什麼PEG?<br>試想，今天你發現了阿榤公司搭上了產業浪潮，獲利將以每年翻5倍的速度急遽成長，而目前的股價8塊，EPS為0.2元。這樣算下來本益比為40倍! 這時你心想:「天啊，40倍的本益比誰買得下去?」</p>



<p>但仔細想想，聰明的你發現阿榤公司明年EPS會成長5倍，那明年的本益比不就剩下8倍嗎? 因此雖然目前40倍的本益比看似昂貴，你還是買了阿榤公司的股票，進而把該公司的本益比進一步往上推。</p>



<p>市場上也是如此，<strong>成長幅度越大、前景越看好的那些成長股，當下的本益比往往都是高的嚇人。</strong></p>



<p>投資人漸漸發現PE適合拿來衡量穩健的績優股、景氣循環股等等，卻不適合成長股。為了找出方法來衡量成長股，PEG就此應運而生。</p>



<h2>PEG的公式</h2>



<p>根據超越祖魯法則一書，PEG公式如下:</p>



<blockquote class="wp-block-quote"><p><strong>本益成長比(PEG) = 預估本益比 / 預估盈餘成長率</strong></p><p><strong>預估本益比 = 現在股價 / 未來一年EPS</strong></p><p><strong>預估盈餘成長率=未來一年EPS / 過去一年EPS</strong></p></blockquote>



<p>以下為Jim Slater對PEG的看法:</p>



<blockquote class="wp-block-quote"><p>PEG&gt;1: 不需要關注</p><p>1&gt;PEG&gt;0.75: 可以考慮</p><p><strong>PEG&lt;0.75: 值得好好下功夫檢驗一番</strong></p></blockquote>



<p>以阿榤公司為例:</p>



<p>預估本益比是8倍，盈餘成長率為500%，計算出的PEG=8/500=0.016。</p>



<p>阿榤公司的本益比高達40倍，PEG卻只有0.016。在一般投資人眼中非常昂貴的公司，加入了成長性的考量後卻變得十分便宜，這就是PE跟PEG的差異。<strong>PEG的出現讓我們得以將公司的成長幅度進行量化，算出更準確的估值。</strong></p>



<h2>PEG定義</h2>



<p>科普完畢進入正題! </p>



<p>PEG=預估本益比/成長率，而預估本益比=股價/預估EPS。<br>加上股價是已知資訊，因此廣義上的PEG只有以下部分能進行調整:</p>



<ul><li><strong>明年預估EPS</strong></li><li><strong>預估成長率</strong></li></ul>



<p>只要這兩個算出來，PEG就有了。<strong>因此當我們用不同的方法去計算預估EPS和預估成長率，就會得到不一樣的PEG，其效度也不同。</strong></p>



<p>舉<a href="https://www.finlab.tw/finlab-tw-stock-peg-strategy/" class="rank-math-link">上一篇</a>提過的例子，原始的PEG公式中使用稅後盈餘成長率作為預估成長率，雖然直觀卻常帶有一次性獲利的雜訊，因此我們將其改為營業利益成長率，最後也得到了較好的效果。</p>



<p>這次我經由上網查找、看書、發想等方式，<strong>蒐集了7種計算預估EPS、預估成長率的方式，總共會得出7&#215;7=49種不同的PEG指標。同時我會藉由回測，告訴大家如何從49種PEG中找出有效的PEG的方式。</strong></p>



<h1>實驗開始</h1>



<h2>切分資料集</h2>



<p>首先進行資料及的切分! 我希望讓兩組資料集都經歷過市場的多空循環，這樣挑出來的參數較具有參考性 。</p>



<p>因此這邊將資料集切割如下:</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="1019" height="195" src="https://www.finlab.tw/wp-content/uploads/2022/01/image.png" alt="image" class="wp-image-3093" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image.png 1019w, https://www.finlab.tw/wp-content/uploads/2022/01/image-300x57.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-768x147.png 768w" sizes="(max-width: 1019px) 100vw, 1019px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 15"></figure>



<p>以下所有步驟除了最終model測試除外，都使用training dataset，以盡量避免overfitting的狀況發生。</p>



<h2>單用PEG回測</h2>



<p>篩出PEG值在市場中前10%小的股票持有，並在訓練集中進行回測。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="414" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-32-1024x414.png" alt="image 32" class="wp-image-3229" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-32-1024x414.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/01/image-32-300x121.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-32-768x310.png 768w, https://www.finlab.tw/wp-content/uploads/2022/01/image-32.png 1233w" sizes="(max-width: 1024px) 100vw, 1024px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 16"><figcaption><strong>單用PEG的回測結果</strong></figcaption></figure>



<p>可以發現效果差強人意，績效近乎等同大盤，有些年甚至跑輸大盤。做到這裡我也不禁想，難道PEG其實是個水貨，一點用處都沒有嗎?</p>



<p><strong>進一步詳細檢查持股，發現持股有很多是因為業外收入認列導致EPS暴增，而進一步導致PEG極低的情況。</strong>這種業外暴增的情形並不符合當初設計PEG的本意，因此需要進一步思考如何過濾掉這種情況。</p>



<h2>搭配濾網設計</h2>



<p>PEG是為了找出低估的成長股，若單純使用PEG作為選股條件，會把機會財、業外認列等造成的「假性」成長一併列入，導致回測結果失真。</p>



<p>那該如何檢驗業內是否成長呢? 最直觀的就是月營收了。<strong>因此我在回測系統中設計了月營收的濾網，藉由月營收確保本業有持續增長。</strong></p>



<p>下列是5種月營收轉強的濾網表現(上半為績效、下半為持股數目):</p>



<ul><li>月營收短MA &gt; 長MA</li></ul>



<figure class="wp-block-image size-full"><img loading="lazy" width="641" height="191" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-19.png" alt="image 19" class="wp-image-3119" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-19.png 641w, https://www.finlab.tw/wp-content/uploads/2022/01/image-19-300x89.png 300w" sizes="(max-width: 641px) 100vw, 641px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 17"></figure>



<figure class="wp-block-image size-full"><img loading="lazy" width="636" height="100" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-20.png" alt="image 20" class="wp-image-3121" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-20.png 636w, https://www.finlab.tw/wp-content/uploads/2022/01/image-20-300x47.png 300w" sizes="(max-width: 636px) 100vw, 636px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 18"></figure>



<ul><li>月營收MA連續上升</li></ul>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-2.png" alt="image 2" class="wp-image-3096" width="624" height="213" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-2.png 643w, https://www.finlab.tw/wp-content/uploads/2022/01/image-2-300x102.png 300w" sizes="(max-width: 624px) 100vw, 624px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 19"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="150" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-22-1024x150.png" alt="image 22" class="wp-image-3125" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-22-1024x150.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/01/image-22-300x44.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-22-768x113.png 768w, https://www.finlab.tw/wp-content/uploads/2022/01/image-22.png 1030w" sizes="(max-width: 1024px) 100vw, 1024px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 20"></figure>



<ul><li>月營收YOY短MA &gt; 長MA</li></ul>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="298" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-26-1024x298.png" alt="image 26" class="wp-image-3131" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-26-1024x298.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/01/image-26-300x87.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-26-768x224.png 768w, https://www.finlab.tw/wp-content/uploads/2022/01/image-26.png 1030w" sizes="(max-width: 1024px) 100vw, 1024px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 21"></figure>



<figure class="wp-block-image size-full"><img loading="lazy" width="1007" height="156" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-23.png" alt="image 23" class="wp-image-3127" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-23.png 1007w, https://www.finlab.tw/wp-content/uploads/2022/01/image-23-300x46.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-23-768x119.png 768w" sizes="(max-width: 1007px) 100vw, 1007px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 22"></figure>



<ul><li>月營收YOY連續上升</li></ul>



<figure class="wp-block-image size-full"><img loading="lazy" width="648" height="213" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-4.png" alt="image 4" class="wp-image-3098" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-4.png 648w, https://www.finlab.tw/wp-content/uploads/2022/01/image-4-300x99.png 300w" sizes="(max-width: 648px) 100vw, 648px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 23"></figure>



<figure class="wp-block-image size-full"><img loading="lazy" width="1022" height="156" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-24.png" alt="image 24" class="wp-image-3128" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-24.png 1022w, https://www.finlab.tw/wp-content/uploads/2022/01/image-24-300x46.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-24-768x117.png 768w" sizes="(max-width: 1022px) 100vw, 1022px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 24"></figure>



<ul><li>月營收MOM連續上升</li></ul>



<figure class="wp-block-image size-full"><img loading="lazy" width="644" height="213" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-5.png" alt="image 5" class="wp-image-3099" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-5.png 644w, https://www.finlab.tw/wp-content/uploads/2022/01/image-5-300x99.png 300w" sizes="(max-width: 644px) 100vw, 644px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 25"></figure>



<figure class="wp-block-image size-full"><img loading="lazy" width="1006" height="155" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-25.png" alt="image 25" class="wp-image-3129" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-25.png 1006w, https://www.finlab.tw/wp-content/uploads/2022/01/image-25-300x46.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-25-768x118.png 768w" sizes="(max-width: 1006px) 100vw, 1006px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 26"></figure>



<p>除了最後一個濾網之外，其他的濾網表現都不錯，所以還需要進行下一步篩選。謹記著加入月營收濾網的目的並非提升績效，而只是為了確保本業在增長，因此不篩掉過多的股票才是我們的第一要務。</p>



<p><mark class="has-inline-color has-black-color"><strong>綜合上述所說，最後決定使用「<span style="font-size: revert">月營收YOY短MA &gt; 長MA</span>」作為濾網，能在保留大部分股票的同時獲得不錯的績效。</strong></mark></p>



<h3>PEG跟月營收配嗎?</h3>



<p>我猜大家可能還在想，PEG真的不能單獨回測，一定得搭配月營收嗎?</p>



<p>為了證明我一開始的猜想，我分別用剛提過的五種月營收濾網作為基準，用PEG、月營收、PEG+月營收這三種方式去跑模擬績效。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="611" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-33-1024x611.png" alt="image 33" class="wp-image-3230" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-33-1024x611.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/01/image-33-300x179.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-33-768x458.png 768w, https://www.finlab.tw/wp-content/uploads/2022/01/image-33.png 1095w" sizes="(max-width: 1024px) 100vw, 1024px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 27"><figcaption><strong>PEG與月營收濾網搭配效果</strong></figcaption></figure>



<p>可以發現除了「月營收MOM連續上升」該濾網本身效度不足外，<strong>其他四種月營收濾網，PEG+MONTH(深藍色)的績效表現都大幅上升，</strong><span class="has-inline-color has-vivid-red-color"><strong>足以證明PEG和月營收的結合具有非常強的化學效應</strong>!</span></p>



<h2>PEG 設計</h2>



<p>只要有明年預估的EPS、預估成長率，就能算出PEG，因此大家都可以建構出自己的PEG。</p>



<p>以下是我建構其中一種PEG的範例:</p>



<pre class="wp-block-code"><code lang="python" class="language-python">from finlab import data

# 讀取股票收盤價、EPS
close = data.get('etl:adj_close')
EPS = data.get('fundamental_features:每股稅後淨利')
# 用最近4季的EPS總合/最近8季~最近四季的EPS總合，來算EPS成長率
EPS成長率 = EPS.rolling(4).sum()/EPS.shift(4).rolling(4).sum()-1
# 用EPS成長率*近四季EPS，推算接下來一年的預估EPS
預估EPS = EPS*EPS成長率
# 將EPS成長率轉成以%為單位，方便計算PEG
EPS成長率 = (EPS成長率-1)*100
#計算PEG
預估本益比 = close/預估EPS
peg = 預估本益比/EPS成長率
</code></pre>



<p>因為算法的可能性太多種我就不一一贅述，歡迎大家自行發揮想像空間，發明越多種的PEG算法越好。</p>



<p>註: PEG不適用EPS、成長率為負的股票，在回測前要記得進行處理。</p>



<h3>PEG選擇</h3>



<p>接下來我會說明如何從一拖拉庫PEG挑出理想的PEG!</p>



<p>假設現在我們已經有了許多種PEG的算法，接下來可以使用不同的PEG算法計算報酬並作圖如下，<strong>x軸是用該PEG分類後的策略報酬，y軸則是不同的PEG指標。</strong></p>



<figure class="wp-block-image size-full"><img src="https://www.finlab.tw/wp-content/uploads/2022/01/2022-01-19-2.png" alt="2022 01 19 2" class="wp-image-3147" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 28"><figcaption><strong>PEG分區報酬熱力圖</strong></figcaption></figure>



<p>以綠色方框處舉例，<strong>使用了近四季EPS作為明年預估EPS、年複合EPS成長率作為預估成長率來計算PEG。0%~20%的格子代表PEG前20%小的股票搭配月營收濾網的報酬，以此類推。</strong>顏色越淺代表報酬越高。</p>



<p>可以看出綠色方框處的PEG算法效度很差，因為無論PEG值是大是小，報酬都沒有顯著的改變(顏色幾乎完全沒有變化)。相較之下，<strong><span class="has-inline-color has-vivid-red-color">紅色方框處就是一個十分優秀的PEG算法，隨著PEG越大報酬逐漸縮小，因此顏色也隨著由淺至深。</span></strong></p>



<p>如果比較細心的同學會發現，以全市場股票分群來說，每個row的顏色平均應該會差不多，但是圖中綠色框中的顏色普遍偏深，而紅色框普遍偏淺，代表分群以外，還有其他的因素在影響績效表現。</p>



<p>這是因為在進行PEG分群之前，會先將負PEG的股票刪除，而負值的原因可能是預估EPS或成長率為負。</p>



<p><strong>若是一個好的PEG算法，就能比較正確的預估成長率和EPS，進而只刪除缺乏成長性的股票，使整體績效進步</strong>; 反之若該算法不佳，就容易把高成長性的股票在分群之前就剔除掉，進而導致整個row的績效都不好(顏色偏深)。</p>



<h3>定義數學式: PEG_importance</h3>



<p>我們雖能透過肉眼大致看出PEG算法的好壞，但要具體分辨哪種PEG算法最好，還是需要經由定義數學式來達成。</p>



<p>首先我對熱力圖中的每一個row(代表一種PEG算法)作圖，x軸是分群rank的上限，y軸則是該分群的平均報酬，以綠色方框處作圖如下。</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="485" height="329" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-35.png" alt="image 35" class="wp-image-3235" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-35.png 485w, https://www.finlab.tw/wp-content/uploads/2022/01/image-35-300x204.png 300w" sizes="(max-width: 485px) 100vw, 485px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 29"></figure>



<p>以圈起來的紅點為例，其坐標為(0.8,1.22)，代表PEG數值60%~80%的股票平均報酬為1.22。<strong>接下來我對這五個點做linear regression(圖中藍線)，這條線的斜率說明了分群後的股票與報酬之間的相關性</strong>，當斜率的絕對值越大，代表著分群後的股票與報酬之間有明顯的相關性(正、負相關都有可能)。</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="486" height="326" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-36.png" alt="image 36" class="wp-image-3237" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-36.png 486w, https://www.finlab.tw/wp-content/uploads/2022/01/image-36-300x201.png 300w" sizes="(max-width: 486px) 100vw, 486px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 30"></figure>



<p>以紅框處的圖作對比，可以從紅點分佈發現，隨著PEG Rank越大報酬就越小，因此linear regression所做出來的直線也較為傾斜，斜率達到了-1.92(綠色方框處斜率只有-0.19)。</p>



<p>綜合上述，最後決定以線性迴歸直線的斜率的絕對值，作為排序PEG重要性的因子，因而得出以下式子。</p>



<blockquote class="wp-block-quote"><p><strong>PEG_importance = | Slope(by linear regression) |</strong></p></blockquote>



<p>對所有的PEG算法計算其PEG_importance，作圖如下:</p>



<figure class="wp-block-image size-full"><img src="https://www.finlab.tw/wp-content/uploads/2022/01/PEG區分報酬率效度.png" alt="PEG區分報酬率效度" class="wp-image-3242" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 31"></figure>



<p>在49種PEG計算方式裡面，前面幾名的分數遙遙領先，而剩下算法彼此間差異不大。在經過回測後，發現PEG_importance超過1以上的算法，對比大盤才有較明顯的提升效果，<strong>這代表設計一個好的PEG並不是那麼容易，因為有一半以上的算法PEG_importance都沒超過1。</strong>往後大家撰寫PEG相關策略時，若策略績效不理想也可以優先考慮從PEG計算方式作修改!</p>



<p>註: 雖然沒有公布各種PEG的計算方式，但核心觀念已經藏在PEG的命名中了，去找吧，我把所有的PEG算法都藏在那裡了! XD</p>



<h1>程式實作範例</h1>



<p>計算PEG主要取決於預估EPS和預估成長率的算法，因此只要將改動這兩個部分的算法，其餘的程式碼都可以維持不變。</p>



<p>透過不同的算法就可以構成不同的PEG進行績效回測，其餘的部分如月營收濾網則保持不動做為控制變因。如此一來我們就能對不同的PEG算法之間的效度、報酬率進行比較，並選出最適合的那一個！</p>



<h2>完整程式碼</h2>



<p>以下是完整的程式碼範例和註解，我使用了跟文章開頭相同的算法做示範。大家可以直接複製到Colab上直接服用，也可以將其改成自己的算法重新進行回測！</p>



<pre class="wp-block-code"><code lang="python" class="language-python line-numbers">!pip install finlab
from finlab import data
from finlab.backtest import sim

# 計算PEG
close = data.get('etl:adj_close')
EPS = data.get('fundamental_features:每股稅後淨利')
EPS成長率 = EPS.rolling(4).sum()/EPS.shift(4).rolling(4).sum()-1 # 用最近4季的EPS總合/最近8季~最近四季的EPS總合，來算EPS成長率
預估EPS = EPS*EPS成長率 # 用EPS成長率*近四季EPS，推算接下來一年的預估EPS
EPS成長率 = (EPS成長率-1)*100 # 將EPS成長率轉成以%為單位，方便計算PEG
預估本益比 = close/預估EPS
peg = 預估本益比/EPS成長率

# 月營收濾網 (短均&gt;長均)
rev_yoy = data.get('monthly_revenue:去年同月增減(%)')
rev_yoy_3ma=rev_yoy.average(3) #三個月的短期均線
rev_yoy_12ma=rev_yoy.average(12) #十二個月的短期均線
cond_month_revenue = rev_yoy_3ma&gt;rev_yoy_12ma # 短期均線&gt;長期均線 =&gt; 持有

# 回測
result = peg*(cond_month_revenue)
result = result[result&gt;0] #月營收增長是負的沒有意義，拿掉
lower_bound = result.quantile_row(0) #0百分位數(最小值)
upper_bound = result.quantile_row(0.2) #20百分位數
position = (result&gt;=lower_bound)&amp;(result&lt;=upper_bound) #取peg前20%小的做持有
report = sim(position,trade_at_price='close',upload=True) #含手續費的回測結果</code></pre>



<h1>策略回測(第一名的PEG算法)</h1>



<p>接下來我們採用PEG_importance最高PEG的計算方式，並取PEG前20%小的股票，搭配月營收濾網進行回測。</p>



<h2>近期表現(Test: 2020~2021)</h2>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="421" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-28-1024x421.png" alt="image 28" class="wp-image-3153" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-28-1024x421.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/01/image-28-300x123.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-28-768x316.png 768w, https://www.finlab.tw/wp-content/uploads/2022/01/image-28.png 1484w" sizes="(max-width: 1024px) 100vw, 1024px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 32"></figure>



<h2>過去表現(Train: 2014~2019)</h2>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="412" src="https://www.finlab.tw/wp-content/uploads/2022/01/image-30-1024x412.png" alt="image 30" class="wp-image-3155" srcset="https://www.finlab.tw/wp-content/uploads/2022/01/image-30-1024x412.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/01/image-30-300x121.png 300w, https://www.finlab.tw/wp-content/uploads/2022/01/image-30-768x309.png 768w, https://www.finlab.tw/wp-content/uploads/2022/01/image-30.png 1488w" sizes="(max-width: 1024px) 100vw, 1024px" title="七七四十九種PEG本益成長比，找出潛力成長股，製作年報酬率 30% 的選股策略！ 33"></figure>



<h2>結論</h2>



<p>回測發現，近期績效和過去績效相差不大，年報酬率都在40%左右，但相對近兩年大盤的漲幅而言，近期績效就不算太過亮眼了。</p>



<p><strong>在大盤大漲的時候，<strong>PEG相關的策略</strong>往往較難發揮; 當大盤走平或下跌時，PEG策略所挑出的個股在隨後卻常有較大幅度的彈升，進而讓整體的績效勝過大盤。</strong></p>



<p>我自己的解釋是當市場恐慌時，所有股票都一起下殺，<span class="has-inline-color has-black-color">成長股當然也難以倖免，</span>但只要市場的信心一恢復，投資人又願意給成長股較高的本益比<strong>，<span class="has-inline-color has-vivid-red-color">這一來一往的本益比評價調整，讓成長股的績效表現更為出色。</span></strong></p>



<p>這次的研究就到這裡結束了，希望有幫助大家更瞭解PEG!</p>



<p>窩4阿榤，下次見，掰! </p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/peg/feed/</wfw:commentRss>
			<slash:comments>5</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3077</post-id>	</item>
		<item>
		<title>本益成長比真的越低越好！？</title>
		<link>https://www.finlab.tw/%e6%af%94%e6%9c%ac%e7%9b%8a%e6%af%94%e6%9b%b4%e5%a5%bd%e7%94%a8%e7%9a%84%e6%9c%ac%e7%9b%8a%e6%af%94%e6%88%90%e9%95%b7%e7%8e%87%ef%bc%81/</link>
					<comments>https://www.finlab.tw/%e6%af%94%e6%9c%ac%e7%9b%8a%e6%af%94%e6%9b%b4%e5%a5%bd%e7%94%a8%e7%9a%84%e6%9c%ac%e7%9b%8a%e6%af%94%e6%88%90%e9%95%b7%e7%8e%87%ef%bc%81/#respond</comments>
		
		<dc:creator><![CDATA[FinLab - 韓承佑]]></dc:creator>
		<pubDate>Wed, 22 Jul 2020 07:04:43 +0000</pubDate>
				<category><![CDATA[基本面分析]]></category>
		<category><![CDATA[PEG]]></category>
		<category><![CDATA[指標]]></category>
		<category><![CDATA[本益成長比]]></category>
		<category><![CDATA[本益比]]></category>
		<category><![CDATA[選股]]></category>
		<guid isPermaLink="false">http://34.96.136.135/?p=493</guid>

					<description><![CDATA[很久之前有寫過 本益比 如何使用，本益比 就是看企業股價和獲利之間的關係，選擇小一點的本益比是可以幫助我們選到好股票的，但是每一家公司的本益比都有著天壤之別，所以必須要校正， 本益成長比 就是一個本益比的進化版。本益成長比 不只可以看當下，還考慮了一家公司未來是否能繼續盈利一個指標。]]></description>
										<content:encoded><![CDATA[
<p>很久之前有寫過&nbsp;<strong>本益比</strong>&nbsp;如何使用，<strong>本益比</strong>&nbsp;就是看企業股價和獲利之間的關係，選擇小一點的本益比是可以幫助我們選到好股票的，但是每一家公司的本益比都有著天壤之別，所以必須要校正，&nbsp;<strong>本益成長比</strong>&nbsp;就是一個本益比的進化版。<strong>本益成長比</strong>&nbsp;不只可以看當下，還考慮了一家公司未來是否能繼續盈利一個指標。</p>



<p>以下是&nbsp;<strong>本益成長比</strong>&nbsp;的公式：</p>



<p>近4季稅後淨利年增率：(近4季稅後淨利總和 / 去年同期近4季稅後淨利總和 &#8211; 1) * 100%<br>本益成長比（PEG）：本益比/近4季稅後淨利年增率</p>



<p>看起來考慮了公司的成長，所以當PEG越小，代表&nbsp;<strong>本益比</strong>&nbsp;越小或是&nbsp;<strong>淨利年增率</strong>&nbsp;越大，對投資人來講都是好事情！</p>



<p>理論上是這樣，而實際上真的是這樣嗎？我們不妨接著看！</p>



<p>首先我們先算出當前所有上市上櫃其PEG的分佈圖：<a href="https://www.finlab.tw/%E6%AF%94%E6%9C%AC%E7%9B%8A%E6%AF%94%E6%9B%B4%E5%A5%BD%E7%94%A8%E7%9A%84%E6%9C%AC%E7%9B%8A%E6%AF%94%E6%88%90%E9%95%B7%E7%8E%87%EF%BC%81/dis.png"></a></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="595" height="252" src="http://34.96.136.135/wp-content/uploads/2020/07/dis-1.png" alt="dis 1" class="wp-image-494" srcset="https://www.finlab.tw/wp-content/uploads/2020/07/dis-1.png 595w, https://www.finlab.tw/wp-content/uploads/2020/07/dis-1-300x127.png 300w" sizes="(max-width: 595px) 100vw, 595px" title="本益成長比真的越低越好！？ 34"></figure></div>



<p>可以發現越接近0的越多公司，這種分佈還滿奇特的，我以為接近0的公司會很少才對，沒想到事實竟然跟我想像的相反，感覺好像很多公司的淨利年增率很猛！然而假如我哪裡做錯了，可以直接留言糾正我。</p>



<p>我們就將公司分成好幾組，每60天選擇PEG在只定範圍內的股票，就可以畫成下圖：<a href="https://www.finlab.tw/%E6%AF%94%E6%9C%AC%E7%9B%8A%E6%AF%94%E6%9B%B4%E5%A5%BD%E7%94%A8%E7%9A%84%E6%9C%AC%E7%9B%8A%E6%AF%94%E6%88%90%E9%95%B7%E7%8E%87%EF%BC%81/eq.png"></a></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="598" height="340" src="http://34.96.136.135/wp-content/uploads/2020/07/eq-9.png" alt="eq 9" class="wp-image-495" srcset="https://www.finlab.tw/wp-content/uploads/2020/07/eq-9.png 598w, https://www.finlab.tw/wp-content/uploads/2020/07/eq-9-300x171.png 300w" sizes="(max-width: 598px) 100vw, 598px" title="本益成長比真的越低越好！？ 35"></figure></div>



<p>簡直有夠亂…這說明了PEG難道無效？！感覺是真的很難分辨出越小越好，還是越大越好…，所以我們再畫另一張圖，更好的判斷PEG大小跟獲利的高低：<a href="https://www.finlab.tw/%E6%AF%94%E6%9C%AC%E7%9B%8A%E6%AF%94%E6%9B%B4%E5%A5%BD%E7%94%A8%E7%9A%84%E6%9C%AC%E7%9B%8A%E6%AF%94%E6%88%90%E9%95%B7%E7%8E%87%EF%BC%81/peg.png"></a></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" width="598" height="361" src="http://34.96.136.135/wp-content/uploads/2020/07/peg.png" alt="peg" class="wp-image-496" srcset="https://www.finlab.tw/wp-content/uploads/2020/07/peg.png 598w, https://www.finlab.tw/wp-content/uploads/2020/07/peg-300x181.png 300w" sizes="(max-width: 598px) 100vw, 598px" title="本益成長比真的越低越好！？ 36"></figure></div>



<p>圖中的X軸是PEG從小到大，而Y軸是平均獲利，我們發現，當PEG太大獲利真的很差。但當PEG非常小的時候，效果也非常不好。<br>PEG約等於0.5的時候，會有最好的獲利。</p>



<p>只能說PEG在台股可能不是非常的好用，PEG不能一味的追求越小越好，最好選擇PEG等於 0.5 左右的股票，歷史回測會有比較好的結果。</p>



<p>我覺得另一個可能的原因是，當PEG過小的時候，可能選入了一些短期內獲利爆起爆落的公司，其公司股價可能先盛後衰，造成投資上的虧損。但我不太確定，還必須做更多功課才能釐清。</p>



<p>總之以統計的結果來看，PEG並沒有特別顯著的功能，相較於其它介紹過的指標。也有可能是我實驗那裡做錯了，可以留言跟我討論，我會儘速更改！確保大家獲得正確的內容～！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/%e6%af%94%e6%9c%ac%e7%9b%8a%e6%af%94%e6%9b%b4%e5%a5%bd%e7%94%a8%e7%9a%84%e6%9c%ac%e7%9b%8a%e6%af%94%e6%88%90%e9%95%b7%e7%8e%87%ef%bc%81/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">493</post-id>	</item>
	</channel>
</rss>
