<?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>總體經濟 &#8211; FinLab</title>
	<atom:link href="https://www.finlab.tw/category/%E7%B8%BD%E9%AB%94%E7%B6%93%E6%BF%9F/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.finlab.tw</link>
	<description>深入淺出的量化投資，讓你在在茫茫股海中，找到專屬於自己的投資方法</description>
	<lastBuildDate>Sun, 02 Jul 2023 09:36:34 +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>總體經濟 &#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>美股探險記第1課:為什麼要投資美股？</title>
		<link>https://www.finlab.tw/why_invest_in_us_stocks/</link>
					<comments>https://www.finlab.tw/why_invest_in_us_stocks/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Tue, 27 Jun 2023 03:19:00 +0000</pubDate>
				<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[投資新手]]></category>
		<category><![CDATA[總體經濟]]></category>
		<category><![CDATA[選股策略]]></category>
		<category><![CDATA[美股]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=5390</guid>

					<description><![CDATA[只投資台股不好嗎？為何要投資美股？台股近幾年在全世界的股市表現名列前茅，很多人會疑惑資金集中在台股就有很好的績效了，像是FinLab的台股策略甚至就有年化40%以上的範例，幹嘛還要多費時間研究美股？]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">只投資台股不好嗎？為何要投資美股？台股近幾年在全世界的股市表現名列前茅，很多人會疑惑資金集中在台股就有很好的績效了，像是<a href="https://ai.finlab.tw/strategies?tab=FinLab%E5%8F%B0%E8%82%A1" target="_blank" rel="noopener">FinLab的台股策略</a>甚至就有年化40%以上的範例，幹嘛還要多費時間研究美股？</p>



<figure class="wp-block-image size-large"><img width="1024" height="932" src="https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.15.51-1024x932.png" alt="截圖 2023 06 30 上午10.15.51" class="wp-image-5391" srcset="https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.15.51-1024x932.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.15.51-300x273.png 300w, https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.15.51-768x699.png 768w, https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.15.51-1536x1397.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.15.51.png 1818w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第1課:為什麼要投資美股？ 1"></figure>



<h2>地緣政治風險</h2>



<p class="has-medium-font-size">有一些風險是沒辦法使用回測衡量，因為歷史從未發生過，或是很少出現，且很難預測出現的時間點。<br>投資最怕的就是一夕之間歸零，什麼樣的風險會造成一個國家的股市迅速崩盤？不外乎是戰爭、天災、金融風暴，從俄羅斯股市的例子來看，他可說是動盪國家的代表，戰爭、天災、金融風暴、能源危機他都有參與到，每當有地緣政治的大事件發生，股價、匯率都會在短期內出現40%以上的崩盤。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="576" src="https://www.finlab.tw/wp-content/uploads/2023/06/mm-chart-2023-06-30_俄羅斯-股市RTS-960x540-1-1024x576.png" alt="mm chart 2023 06 30 俄羅斯 股市RTS 960x540 1" class="wp-image-5392" srcset="https://www.finlab.tw/wp-content/uploads/2023/06/mm-chart-2023-06-30_俄羅斯-股市RTS-960x540-1-1024x576.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/06/mm-chart-2023-06-30_俄羅斯-股市RTS-960x540-1-300x169.png 300w, https://www.finlab.tw/wp-content/uploads/2023/06/mm-chart-2023-06-30_俄羅斯-股市RTS-960x540-1-768x432.png 768w, https://www.finlab.tw/wp-content/uploads/2023/06/mm-chart-2023-06-30_俄羅斯-股市RTS-960x540-1-1536x864.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/06/mm-chart-2023-06-30_俄羅斯-股市RTS-960x540-1-800x450.png 800w, https://www.finlab.tw/wp-content/uploads/2023/06/mm-chart-2023-06-30_俄羅斯-股市RTS-960x540-1.png 1920w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第1課:為什麼要投資美股？ 2"><figcaption>資料來源：財經M平方</figcaption></figure>



<p class="has-medium-font-size">台股最大的風險就是地緣政治風險，雖然兩岸從未真的開戰過，最接近的一次是1997年台海危機，但長期以來都面臨中共的各種威脅是不變的事實，中共從未放棄用武力統一台灣。<br>尤其是近年美中科技貿易戰、共機共艦繞台，都讓台灣很難不被牽入大國之間的博弈。<br>經濟學人雜誌甚至還在2021年將台灣列為全世界最危險的地方。<br>若資金都重壓在一個國家，那你就要問問自己如果最糟糕的情況發生了？我可以承受嗎？<br>還是選擇預防勝於治療，提早將資金做分散的準備？將資金部署到安全性較高的國家來降低地緣風險，美國目前身為科技與軍事強國、且有完善的資本市場，美股可列為考慮用來當風散投資風險的國家。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="779" height="1024" src="https://www.finlab.tw/wp-content/uploads/2023/06/台灣危險-779x1024.webp" alt="台灣危險" class="wp-image-5393" srcset="https://www.finlab.tw/wp-content/uploads/2023/06/台灣危險-779x1024.webp 779w, https://www.finlab.tw/wp-content/uploads/2023/06/台灣危險-228x300.webp 228w, https://www.finlab.tw/wp-content/uploads/2023/06/台灣危險-768x1010.webp 768w, https://www.finlab.tw/wp-content/uploads/2023/06/台灣危險-1169x1536.webp 1169w, https://www.finlab.tw/wp-content/uploads/2023/06/台灣危險.webp 1558w" sizes="(max-width: 779px) 100vw, 779px" title="美股探險記第1課:為什麼要投資美股？ 3"><figcaption>資料來源：經濟學人</figcaption></figure>



<p class="has-medium-font-size"><br>股神巴菲特在2023年短進短出台積電讓投資人驚訝巴爺爺為何操作這麼短？結果股神也承認是因為地緣因素才割捨「護國神山」這樣的優良公司。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="985" src="https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.38.14-1024x985.png" alt="截圖 2023 06 30 上午10.38.14" class="wp-image-5394" srcset="https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.38.14-1024x985.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.38.14-300x289.png 300w, https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.38.14-768x739.png 768w, https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.38.14-1536x1477.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/06/截圖-2023-06-30-上午10.38.14.png 1593w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第1課:為什麼要投資美股？ 4"><figcaption>資料來源：自由財經</figcaption></figure>



<p class="has-medium-font-size"><br>只投資台股並不一定不好，但連股神都考慮地緣風險，你能不跟進考慮嗎，了解台股和美股的特點和優缺點可以幫助您做出更明智的投資決策。以下是台股和美股的一些資本市場優缺點：</p>



<h2>台股的優點</h2>



<ul class="has-medium-font-size"><li>地域接近：對於台灣投資者而言，台股更為熟悉和容易接觸，包括了許多本地公司。</li><li>語言和文化優勢：對於以中文為母語的投資者來說，投資台股可以減少語言和文化障礙，更容易理解和獲取信息。</li><li>熟悉行業和市場：投資台股可以更容易了解本地市場和行業的動態，掌握相關信息。</li><li>潛在Alpha空間：外資的台股市場參與度約 30%，還不算競爭太過激烈的市場，一般來說，散戶參與度較高的市場，比較能利用投資人的交易行為錯誤取得超額報酬空間。</li><li>資金調度：台幣可用來當日常支出，降低會換匯風險。</li></ul>



<h2>台股的缺點</h2>



<ul class="has-medium-font-size"><li>有限的市場規模：相對於全球範圍內的資本市場，台股的市場規模較小，投資機會可能較為有限。</li><li>零股市場、個股期貨流通性仍較低，對小資金參與者不友善。</li><li>缺乏行業多樣性：台股市場的行業結構相對集中，以科技和製造業為主導，其他行業的選擇相對較少。</li></ul>



<figure class="wp-block-image is-resized"><img loading="lazy" 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)" width="840" height="441" title="美股探險記第1課:為什麼要投資美股？ 5"></figure>



<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%2F810934f1-4a90-4482-a8a9-f07caae6df0d%2Fnewplot_(13).png?id=239c5064-35ae-461a-a445-68e1b9e089d3&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%2F810934f1 4a90 4482 a8a9 f07caae6df0d%2Fnewplot (13)" title="美股探險記第1課:為什麼要投資美股？ 6"></figure>



<h2>美股的優點</h2>



<ul class="has-medium-font-size"><li>市場規模和機會：美國股市是全球最大的股票市場之一，擁有廣泛的投資機會和多樣的行業選擇。像是軟體業、服務業、軍火業、煙草業&#8230;，都是台股缺乏的產業板塊。</li><li>科技和創新領先：美國是全球科技創新的領導者，許多知名科技公司在美股上市，投資者可以參與到科技發展和創新的機會中。想是看好iphone產品，直接投資Apple就好，不用投資一堆Apple的台企供應鏈。</li><li>資本流動性高：美股市場具有高度的資金流動性，交易活躍，便於買賣股票。以「股」為最小單位來當主要交易，不像台股以「千股」為主要交易，小資族較能參與市場。</li><li>金融商品多樣化：有較豐富且低交易成本的 ETF 可操作，著名的 VT 就是在美國發行。</li></ul>



<h2>美股的缺點</h2>



<ul class="has-medium-font-size"><li>時差和語言障礙：對於台灣投資者而言，投資美股可能面臨時差和語言障礙，需要更多的跨國交流和信息獲取。</li><li>風險多樣化：美股市場的行業和公司眾多，需要更廣泛的研究和了解，以避免風險集中在某些特定股票或行業。</li><li>稅制：相較台灣，有較高的股息所得稅，遺產辦理手續繁雜。</li><li>美股投資不容易取得超額回報： 高市場效率，美國股市是全球最發達和最活躍的股票市場之一，市場參與者眾多，尤其是法人與量化基金成交佔比高，信息傳遞迅速，交易活躍度高。這使得市場相對高度有效，難以通過普通的選股和市場定時來獲得持續的超額回報，面對強大的量化基金交易對手，可能更難超越大盤。</li></ul>



<h2>結論</h2>



<p class="has-medium-font-size">對美國本土交易人而言，美股的缺點幾乎只剩下「美股投資不容易取得超額回報」這一項。<br>對台灣交易人而言，美股雖然要研發出策略超額報酬的策略比較難，但就算是報酬率較台股普通，仍對分散淺在地緣風險、產業風險有所幫助，投資組合的未來表現會比較穩定，不用擔心台灣「萬一」發生了什麼？<br>美股相對於台股，就像棒球的美國大聯盟與小聯盟，小聯盟玩到頂尖後，挑戰一下大聯盟，放眼世界，也是必經的道路，FinLab 美股 Beta 版已經上線，就讓 FinLab 帶你一起探險美股的世界吧～</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/why_invest_in_us_stocks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5390</post-id>	</item>
		<item>
		<title>用Python回測總經指標(3)｜台灣景氣燈號｜加減碼策略</title>
		<link>https://www.finlab.tw/tw_business_indicator_changed_weight_strategy/</link>
					<comments>https://www.finlab.tw/tw_business_indicator_changed_weight_strategy/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Thu, 29 Dec 2022 11:26:10 +0000</pubDate>
				<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[VIP文章]]></category>
		<category><![CDATA[總體經濟]]></category>
		<category><![CDATA[選股策略]]></category>
		<category><![CDATA[0050]]></category>
		<category><![CDATA[加減碼]]></category>
		<category><![CDATA[景氣燈號]]></category>
		<category><![CDATA[總經]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=5072</guid>

					<description><![CDATA[國發會在12月底發布了上月景氣燈號數據，這個指標可以視為台灣總經的風向球。現進入低迷的藍燈，數值非常低，剩下1 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">國發會在12月底發布了上月景氣燈號數據，這個指標可以視為台灣總經的風向球。現進入低迷的藍燈，數值非常低，剩下12分，很久沒有這麼慘了。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="717" src="https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.04.34-1024x717.png" alt="截圖 2022 12 29 下午6.04.34" class="wp-image-5073" srcset="https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.04.34-1024x717.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.04.34-300x210.png 300w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.04.34-768x537.png 768w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.04.34-1536x1075.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.04.34-2048x1433.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="用Python回測總經指標(3)｜台灣景氣燈號｜加減碼策略 7"><figcaption><a href="https://index.ndc.gov.tw/n/zh_tw" target="_blank" rel="noopener">取自國發會</a></figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="825" height="1024" src="https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.14.43-825x1024.png" alt="截圖 2022 12 29 下午6.14.43" class="wp-image-5075" srcset="https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.14.43-825x1024.png 825w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.14.43-242x300.png 242w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.14.43-768x953.png 768w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.14.43.png 1036w" sizes="(max-width: 825px) 100vw, 825px" title="用Python回測總經指標(3)｜台灣景氣燈號｜加減碼策略 8"><figcaption>取自<a href="https://www.facebook.com/macromicro.me/posts/pfbid02S2hEbWiLi7Wt3c5My2qmvHPuHJPhXqzaacLM1mkgBMPvx7xoK4YE5seyvN8LfXnMl" target="_blank" rel="noopener">財經M平方臉書粉絲團</a></figcaption></figure>



<p class="has-medium-font-size">然而今年股市也回檔了超過20%，如果在景氣熱絡時進場，像是去年底，那你今年肯定很難過，現在你看到藍燈，是不是認為為總經環境差，要趕緊脫出股票？<br>市場老手「麥克風」則有不一樣的看法，認為「藍燈」反而是末跌段買點，只是要分批進場會比較安全。我的看法也是如此，通常進入藍燈時，股市早就反映一大段了，當未來爛無可爛，反而容易出現轉機，市場經常領先經濟數據。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="933" src="https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.12.42-1024x933.png" alt="截圖 2022 12 29 下午6.12.42" class="wp-image-5074" srcset="https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.12.42-1024x933.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.12.42-300x273.png 300w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.12.42-768x700.png 768w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.12.42-1536x1400.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.12.42.png 1545w" sizes="(max-width: 1024px) 100vw, 1024px" title="用Python回測總經指標(3)｜台灣景氣燈號｜加減碼策略 9"><figcaption>取自<a href="https://www.facebook.com/mktsurvivalkit/posts/pfbid0Y3czh2MLSYZxG6Utjr6povtP1R2Cq2vmAfncyiTMnuqGBJ1kSLmVU7p4rVnWn9Lrl" target="_blank" rel="noopener">麥克風臉書粉絲團</a></figcaption></figure>



<h2>景氣燈號如何撰寫加減碼？</h2>



<p class="has-medium-font-size">重點來了，許多人都知道要在藍燈分批買進，但分批加減碼究竟要如何撰寫？<br>通常寫策略都是一布林訊號通到底，100%持有。這就是FinLab量化平台的優勢，可以自動調控加減碼，可以自動調控加減碼，不限於固定部位，可靈活運用總經數據，把策略都自動化起來，比起外面的總經課程，更貼近實戰。<br><br><a href="https://doc.finlab.tw/reference/backtest/#finlab.backtest.sim" target="_blank" rel="noopener">回測函數</a> 當position 的數值除了可為布林訊號，也可以填入數值當持有部位調控，例如 0.2 為持有20%。</p>



<p class="has-medium-font-size">示範的景氣燈號加減碼策略邏輯為分5批進場。<br>只要近12個月內每一月景氣指標分數小於等於18時，分批買進20%部位。若景氣指標分數大於等於40時則全數賣出。舉例：若近12月內有3個月滿足條件，則持有60%，若近12月內有5個月以上滿足條件，則持有100%。<br>這個策略設計的背後思維在如果近12月內景氣燈號低於18分的月份越少，代表脫離藍燈谷底越遠，若近12月內景氣燈號低於18分的月份越多，則代表貼近景氣谷底，利用訊號數量去加乘持股部位。<br>另一個小重點在為何指標是用18與40分，而不是官方藍紅燈上下限的16分與38分？原因在策略若想要比人早一步，就要微調數值，且進入紅燈的熱絡階段，往往有所謂邪惡第五波，延遲出場有機會獲得更高報酬，而若用官方的16分當衰退指標，會發現低於16分的情況不多，所以往上微調，以增加訊號數。</p>



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

df = data.get('tw_business_indicators:景氣對策信號(分)')
df = df[list(df['tw_business_indicators'] &gt; 0)]

# 只要近12個月內每一月景氣指標分數小於等於18時，分批買進20%部位。舉例：若近12月內有3個月滿足條件，則持有60%，若近12月內有5個月滿足條件，則持有100%。若景氣指標分數大於等於40時則全數賣出
batches = 5
ind = df['tw_business_indicators']
sig = pd.Series([True if i &lt;= 18 else False if i &gt;= 40 else np.nan for i in ind], index=ind.index)
position = (((sig / batches).rolling(12,min_periods=1).sum()) * sig).ffill().clip(0,1)
position.astype(float).plot()</code></pre>



<h2>景氣燈號加減碼訊號曲線變化</h2>



<p class="has-medium-font-size">可以發現加減碼曲線控制在 0%到100%，隨著時間不同而有不同持股部位變化。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="703" src="https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.33.30-1024x703.png" alt="截圖 2022 12 29 下午6.33.30" class="wp-image-5076" srcset="https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.33.30-1024x703.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.33.30-300x206.png 300w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.33.30-768x527.png 768w, https://www.finlab.tw/wp-content/uploads/2022/12/截圖-2022-12-29-下午6.33.30.png 1420w" sizes="(max-width: 1024px) 100vw, 1024px" title="用Python回測總經指標(3)｜台灣景氣燈號｜加減碼策略 10"></figure>



<h2>回測程式</h2>



<p class="has-medium-font-size"><a href="https://colab.research.google.com/drive/1NbxeJydvdSyD_3zxYulvPJiJfb7UpOOw?usp=sharing" target="_blank" rel="noopener">colab 範例檔</a><br>回測程式很簡單，我們以 0050 元大台灣50 當操作台灣總經策略的標地，將上述的景氣燈號加減碼訊號傳入 0050 的 DataFrame，就會以該加減碼訊號靈活操作 0050 ，在景氣低迷時逐步入手，在景氣熱絡時拖出。<br>小細節是帶入回測時把交易稅率調成 ETF 適用的 1/1000。</p>



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

# 將持有部位帶進0050
close = data.get('price:收盤價')
buy = pd.DataFrame({'0050':position})
buy = buy.reindex(close.index, method='ffill')
report = sim(buy, upload=False, tax_ratio=1/1000)
report.display()</code></pre>



<p class="has-medium-font-size">回測結果發現該策略可以取得比長期持有0050還好的績效，熊市時期的2007與2022回檔幅度較小，波動曲線更為漂亮。</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="600" src="https://www.finlab.tw/wp-content/uploads/2022/12/newplot-49.png" alt="newplot 49" class="wp-image-5077" srcset="https://www.finlab.tw/wp-content/uploads/2022/12/newplot-49.png 800w, https://www.finlab.tw/wp-content/uploads/2022/12/newplot-49-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/12/newplot-49-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="用Python回測總經指標(3)｜台灣景氣燈號｜加減碼策略 11"></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/tw_business_indicator_changed_weight_strategy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5072</post-id>	</item>
		<item>
		<title>用Python回測總經指標(2)｜美國失業率 vs S&#038;P 500指數</title>
		<link>https://www.finlab.tw/us_unemployment_rate_seasonally_adjusted_sp500_backtest/</link>
					<comments>https://www.finlab.tw/us_unemployment_rate_seasonally_adjusted_sp500_backtest/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Thu, 10 Nov 2022 08:48:37 +0000</pubDate>
				<category><![CDATA[總體經濟]]></category>
		<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[VIP文章]]></category>
		<category><![CDATA[財經PYTHON教學]]></category>
		<category><![CDATA[選股策略]]></category>
		<category><![CDATA[sp500]]></category>
		<category><![CDATA[失業率]]></category>
		<category><![CDATA[總經]]></category>
		<category><![CDATA[總經回測]]></category>
		<category><![CDATA[美國]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=4848</guid>

					<description><![CDATA[FED 打通膨不擇手段地升息，開始影響到實體經濟，除了一連串財爆，10-11月許多著名科技業如 Twitter、Meta都開始為了蹲節而裁員滾滾，從 裁員統整網站 資料可以見到一串觸目驚心的數字，10月的美國失業率是3.7%，還不是特別高，這個月失業率會不會噴出要等12月初才知道。究竟美國失業率要如何應用到策略上？FinLab量化平台能否支援 S&#038;P 500指數 的回測？本篇文章帶給你相關洞見與程式撰寫方法。]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" width="960" height="540" src="https://www.finlab.tw/wp-content/uploads/2022/11/thumbnail.jpg" alt="thumbnail" class="wp-image-4849" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/thumbnail.jpg 960w, https://www.finlab.tw/wp-content/uploads/2022/11/thumbnail-300x169.jpg 300w, https://www.finlab.tw/wp-content/uploads/2022/11/thumbnail-768x432.jpg 768w, https://www.finlab.tw/wp-content/uploads/2022/11/thumbnail-800x450.jpg 800w" sizes="(max-width: 960px) 100vw, 960px" title="用Python回測總經指標(2)｜美國失業率 vs S&amp;P 500指數 12"></figure>



<p class="has-medium-font-size">FED 打通膨不擇手段地升息，開始影響到實體經濟，除了一連串財爆，10-11月許多著名科技業如 Twitter、Meta都開始為了蹲節而裁員滾滾，從 <a href="https://layoffs.fyi/?fbclid=IwAR0_Q_xFJOu8JBnBKjosQ-gwnrkD3_HXK_wiVP17u4TEw85JfJWNhzXWDx8" target="_blank" rel="noopener">裁員統整網站 </a>資料可以見到一串觸目驚心的數字，10月的美國失業率是3.7%，還不是特別高，這個月失業率會不會噴出要等12月初才知道。究竟美國失業率要如何應用到策略上？FinLab量化平台能否支援 S&amp;P 500指數 的回測？本篇文章帶給你相關洞見與程式撰寫方法。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="612" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午3.55.42-1024x612.png" alt="截圖 2022 11 10 下午3.55.42" class="wp-image-4850" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午3.55.42-1024x612.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午3.55.42-300x179.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午3.55.42-768x459.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午3.55.42-1536x919.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午3.55.42-2048x1225.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="用Python回測總經指標(2)｜美國失業率 vs S&amp;P 500指數 13"></figure>



<h2>資料取得</h2>



<p class="has-medium-font-size">透過<a href="https://ai.finlab.tw/database/#us_unemployment_rate_seasonally_adjusted" target="_blank" rel="noopener">FinLab資料庫</a>即可一行取得失業率資料<br><code>data.get('us_unemployment_rate_seasonally_adjusted:value)'</code><br>如果你對抓取美國就業相關總經數據有興趣，可以參考此篇<a href="https://www.finlab.tw/us_unemployment_rate_seasonally_adjusted_crawler/">爬蟲教學</a>。</p>



<h2>圖表觀測</h2>



<p class="has-medium-font-size">美國數據比台灣數據好的地方在資料很早就有統計，可以做長時間回測，圖中可以發現失業率指標大致在3~10%擺盪，歷史失業率接近10%時，往往是股市低點，有人說目前的通盤環境類似1983年，但目前的失業率還在低檔，離10%高檔還很遠，是不是還沒末跌段？<br>失業率循環的週期普遍在5年以上，是蠻長線的指標，2000年以後，失業率與股市表現有明顯負相關，2000年以前股市和失業率關聯不大，S&amp;P 500幾乎一路往上衝。。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="353" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-24-1024x353.png" alt="newplot 24" class="wp-image-4851" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-24-1024x353.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-24-300x103.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-24-768x265.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-24-1536x530.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-24.png 2029w" sizes="(max-width: 1024px) 100vw, 1024px" title="用Python回測總經指標(2)｜美國失業率 vs S&amp;P 500指數 14"></figure>



<p class="has-medium-font-size"><br>為了方便長短期失業率趨勢，我們可將失業率化成均線，看MA6與MA2的差額，讓我們更能方便觀測短期失業率是否變嚴重，負值越高代表短期失業率越嚴重，可以發現指標由正轉負時，會領先預告股價崩跌，但由於訊號週期長，由負轉正也往往會錯過V轉反彈，2022由於就業市場太好，死叉訊號落後股市崩跌很多。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="353" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-25-1024x353.png" alt="newplot 25" class="wp-image-4852" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-25-1024x353.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-25-300x103.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-25-768x265.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-25-1536x530.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-25.png 2029w" sizes="(max-width: 1024px) 100vw, 1024px" title="用Python回測總經指標(2)｜美國失業率 vs S&amp;P 500指數 15"></figure>



<h2>總經指標回測</h2>



<h2>程式範例</h2>



<p class="has-medium-font-size">若我們想要用失業率回測 S&amp;P 500 指數，第一個面臨到的問題是 FinLab 量化平台可否回測台股以外的交易資料？<br>答案是可以的，只要繼承MarketInfo類別，客製化回測市場的資料，修改一下市場類別回傳的方法，最後將新類別傳入sim的market參數即可。範例將台股的資料換成世界指數的資料。<br>訊號條件只有一個失業率 MA2 小於 MA6 時持有<strong> S&amp;P 500 指數</strong></p>



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

class WorldIndexMarketInfo(MarketInfo):

    @staticmethod
    def get_benchmark():
        world_index = data.get('world_index:close')
        sp500 = world_index['^GSPC'].ffill()
        return sp500

    @staticmethod
    def get_asset_id_to_name():
        return {}

    @staticmethod
    def get_price(trade_at_price, adj=True):
        if isinstance(trade_at_price, pd.Series):
            return trade_at_price.to_frame()

        if isinstance(trade_at_price, pd.DataFrame):
            return trade_at_price

        if isinstance(trade_at_price, str):
            if trade_at_price == 'volume':
                return data.get('world_index:vol')

            if adj:
                table_name = 'world_index:adj_'
                price_name = trade_at_price
            else:
                table_name = 'world_index:'
                price_name = trade_at_price

            price = data.get(f'{table_name}{price_name}')
            return price

        raise Exception(f'**ERROR: trade_at_price is not allowed (accepted types: pd.DataFrame, pd.Series, str).')


from finlab import data

unemployment_rate = data.get('us_unemployment_rate_seasonally_adjusted:value')
close = data.get('world_index:close')
cond1 = (close.ffill() &gt; 0)[['^GSPC']]
cond2 = (unemployment_rate.average(2) &lt; unemployment_rate.average(6))['美國失業率(季調)'].reindex(cond1.index,method='ffill')

position = cond1 &amp; cond2

report = sim(position,resample='D', market=WorldIndexMarketInfo, name='us_unemplyment_rate', tax_ratio=0, fee_ratio=0, upload=False)
report.benchmark = close['^GSPC'].ffill()
report.display()</code></pre>



<h2>回測結果</h2>



<h3>全歷史</h3>



<p class="has-medium-font-size">使用失業率指標來擇時，沒有比一直持有好，但橘線的回檔曲線明顯優於一直持有，閃崩要閃V轉，報酬率與穩定度你選哪一個？</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="600" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-26.png" alt="newplot 26" class="wp-image-4853" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-26.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-26-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-26-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="用Python回測總經指標(2)｜美國失業率 vs S&amp;P 500指數 16"></figure>



<h3>2000年至今</h3>



<p class="has-medium-font-size">2000年以後的回測，失業率指標就明顯有效果，報酬率和回檔曲線都比一直持有好。</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="600" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-27.png" alt="newplot 27" class="wp-image-4854" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-27.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-27-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-27-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="用Python回測總經指標(2)｜美國失業率 vs S&amp;P 500指數 17"></figure>



<h2>結論</h2>



<p class="has-medium-font-size"><a href="https://colab.research.google.com/drive/1POSNOduTkTR053Y5ezqFw0duCHtOPkZB?usp=sharing" target="_blank" rel="noopener">colab 範例檔</a><br>world_index 資歷集內還有其他指數資料，趕快來探索更廣的應用！如果你對總經指標回測有興趣，可以參考參考之前類似的文章「<a href="https://www.finlab.tw/tw_monetary_aggregates_m1b_strategy/">用Python回測總經指標(1)｜M1B &amp; M2 年增率</a>」，如果有想要的總經指標，卻在 FinLab資料庫找不到，也歡迎到 <a href="http://Discord 聊天室" target="_blank">Discord</a> 與我們討論與許願喔。<br>失業率指標何時噴上來？會是末跌段一個重要指標，讓我們繼續看下去。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/us_unemployment_rate_seasonally_adjusted_sp500_backtest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4848</post-id>	</item>
		<item>
		<title>Python爬蟲教學｜美國勞動部統計局API｜失業率</title>
		<link>https://www.finlab.tw/us_unemployment_rate_seasonally_adjusted_crawler/</link>
					<comments>https://www.finlab.tw/us_unemployment_rate_seasonally_adjusted_crawler/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Thu, 10 Nov 2022 07:47:00 +0000</pubDate>
				<category><![CDATA[總體經濟]]></category>
		<category><![CDATA[Python新手教學]]></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=4844</guid>

					<description><![CDATA[美國科技業近期大裁員，媒體上充滿失業率的話題，美國失業率的指標要去哪裡抓？
本篇文章介紹如何使用「美國勞動部統計局」的 API 來撈取美國總經數據，把總經分析戰線擴充到國際市場。
除了就業相關數據如失業率、非農、就業津貼，還有物價指數CPI、PPI，都能幫助我們後續做分析，趕緊學會該 API 的使用法則，打造總經分析武器庫。]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">美國科技業近期大裁員，媒體上充滿失業率的話題，美國失業率的指標要去哪裡抓？<br>本篇文章介紹如何使用「美國勞動部統計局」的 API 來撈取美國總經數據，把總經分析戰線擴充到國際市場。</p>



<h2>API 註冊</h2>



<p class="has-medium-font-size">美國勞動部統計局有開放 <a href="https://www.bls.gov/developers/home.htm" target="_blank" rel="noopener">Python API</a> 給開發者使用，建議去用信箱註冊一個 API 帳號，不然未註冊月戶每天只有25次取資料的權限，實在是很少，申請過後每日就能有 500 次Request。<br><a href="https://data.bls.gov/registrationEngine/" target="_blank" rel="noopener">註冊</a>只要填信箱，送出後就會寄出 API key 的生效確認信，點擊確認後即可生效。</p>



<h2>API 規範</h2>



<p class="has-medium-font-size">建議使用 <strong>API Version 2.0</strong>，權限開比較多。更多常見問題可見 <a href="https://www.bls.gov/developers/api_FAQs.htm" target="_blank" rel="noopener">Q&amp;A</a>。<br><strong>How is API Version 2.0 different from Version 1.0?</strong>API Version 2.0 requires registration, and it offers greater query limits. It also allows users to request net and percent changes and series description information. See below for more details.</p>



<figure class="wp-block-table has-medium-font-size"><table><tbody><tr><th>Service</th><th>Version 2.0<br>(Registered)</th><th>Version 1.0<br>(Unregistered)</th></tr><tr><td>Daily query limit</td><td>500</td><td>25</td></tr><tr><td>Series per query limit</td><td>50</td><td>25</td></tr><tr><td>Years per query limit</td><td>20</td><td>10</td></tr><tr><td>Request rate limit</td><td>50 requests per 10 seconds</td><td>50 requests per 10 seconds</td></tr><tr><td>Net/Percent Changes</td><td>Yes</td><td>No</td></tr><tr><td>Optional annual averages</td><td>Yes</td><td>No</td></tr><tr><td>Series description information (catalog)</td><td>Yes</td><td>No</td></tr></tbody></table><figcaption>美國勞動部統計局API版本差異</figcaption></figure>



<h2>如何使用 API ?</h2>



<p class="has-medium-font-size">詳見<a href="https://www.bls.gov/developers/api_signature_v2.htm" target="_blank" rel="noopener">開發者文件範例</a>，以下舉爬取「失業率」當例子：<br>首先要傳入payload內的參數設定，seriesid 為 指標代號，常用指標代號可在官網<a href="https://data.bls.gov/cgi-bin/surveymost?bls" target="_blank" rel="noopener">相關頁面</a>查詢或透過 <a href="https://api.bls.gov/publicAPI/v2/timeseries/popular" target="_blank" rel="noopener">API</a> 取得常用代號列表。<br>startyear 為資料開始年度。<br>endyear 為資料結束年度。<br>registrationkey 為 api_key，有註冊的話要記得填喔</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="692" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午2.58.05-1024x692.png" alt="截圖 2022 11 10 下午2.58.05" class="wp-image-4845" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午2.58.05-1024x692.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午2.58.05-300x203.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午2.58.05-768x519.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午2.58.05.png 1495w" sizes="(max-width: 1024px) 100vw, 1024px" title="Python爬蟲教學｜美國勞動部統計局API｜失業率 18"><figcaption>失業率response</figcaption></figure>



<p class="has-medium-font-size">就這麼簡單將 json 檔下載下來，就可以取得時間序列資料。</p>



<h2>失業率發布日</h2>



<p class="has-medium-font-size">原始資料有一個問題是無法直接取得資料公告時間，只能知道數值是哪一個月份，以失業率來說，美國官方會預告<a href="https://www.bls.gov/schedule/news_release/empsit.htm" target="_blank" rel="noopener">發佈時間</a>，原則上失業率是每個月第一個星期五，但偶爾會因為假日或其他因素遞延。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="817" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午4.51.51-1024x817.png" alt="截圖 2022 11 10 下午4.51.51" class="wp-image-4858" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午4.51.51-1024x817.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午4.51.51-300x239.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午4.51.51-768x613.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午4.51.51-1536x1226.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-10-下午4.51.51.png 1678w" sizes="(max-width: 1024px) 100vw, 1024px" title="Python爬蟲教學｜美國勞動部統計局API｜失業率 19"><figcaption>勞動部統計局就業數據預計發布日</figcaption></figure>



<p class="has-medium-font-size"><br>為避免使用到未來資料，我們使用每月10日當安全數值。以下為Python爬蟲完整程式，主要加上處理發布日期的部分，發便未來回測使用。</p>



<pre class="wp-block-code"><code lang="python" class="language-python">import requests
import json
import pandas as pd

def crawl_data(start_year, end_year, api_key='xxxx'):

    headers = {'Content-type': 'application/json'}
    # seriesid：傳入目標資料
    data = json.dumps({"seriesid": ['LNS14000000'],"startyear":start_year, "endyear":end_year, "registrationkey":api_key})
    p = requests.post('https://api.bls.gov/publicAPI/v2/timeseries/data/', data=data, headers=headers)
    json_data = json.loads(p.text)

    # 將資料轉成dataframe
    df = pd.DataFrame(json_data['Results']['series'][0]['data'])

    # 將資料日期轉成公告日，當月失業率在下一個月才公告
    latest_year = int(df['year'].iloc[0])
    latest_month = int(df['period'].iloc[0].replace('M',''))
    start_year = int(df['year'].iloc[-1])
    start_month = int(df['period'].iloc[-1].replace('M',''))

    def process_date(year,month):
        if month == 12:
            month = 1
            year += 1
        else:
            month += 1
        return year,month

    latest_year, latest_month = process_date(latest_year, latest_month)
    start_year, start_month = process_date(start_year, start_month)
    issue_date = pd.date_range(f'{start_year}-{start_month}-1', f'{latest_year}-{latest_month}-1',
                               freq='MS') + pd.tseries.offsets.DateOffset(days=9)
    df_new = pd.DataFrame({'value': df['value'].values[::-1]}, index=issue_date)
    df_new['value'] = df_new['value'].astype(float)
    df_new.index.name = 'date'
    return df_new

df = crawl_data('2015', '2023')
df</code></pre>



<h2>小結</h2>



<p class="has-medium-font-size"><a href="https://colab.research.google.com/drive/1aRNLUTQi3AX6nLWn-Mp132GIFYTFFjhW?usp=sharing" target="_blank" rel="noopener">colab範例檔</a><br>美國勞動部統計局有許多非常重要的資料，除了就業相關數據如失業率、非農、就業津貼，還有物價指數CPI、PPI，都能幫助我們後續做分析，趕緊學會該 API 的使用法則，打造總經分析武器庫。<br>想知道美國失業率如何應用在美國指數的擇時回測嗎？可以繼續看「<a href="https://www.finlab.tw/us_unemployment_rate_seasonally_adjusted_sp500_backtest/">用Python回測總經指標(2)｜美國失業率 vs S&amp;P 500指數</a>」踏入更豐富的數據世界。<br></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/us_unemployment_rate_seasonally_adjusted_crawler/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4844</post-id>	</item>
		<item>
		<title>用Python回測總經指標(1)｜M1B &#038; M2 年增率</title>
		<link>https://www.finlab.tw/tw_monetary_aggregates_m1b_strategy/</link>
					<comments>https://www.finlab.tw/tw_monetary_aggregates_m1b_strategy/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Fri, 04 Nov 2022 13:53:48 +0000</pubDate>
				<category><![CDATA[總體經濟]]></category>
		<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[技術面]]></category>
		<category><![CDATA[選股策略]]></category>
		<category><![CDATA[m1b]]></category>
		<category><![CDATA[動能策略]]></category>
		<category><![CDATA[總經]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=4809</guid>

					<description><![CDATA[利用上一篇「Python爬蟲教學｜台灣貨幣總計數 M1B &#038; M2」的資料，我們可以用來回測該指標是否為具有領先性的大盤濾網，並測試看看資金流動性指標是否能優化股價動能策略，在市場資金變保守時，能否減低動能策略回檔的殺傷力？]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">利用上一篇「<a href="https://www.finlab.tw/tw_monetary_aggregates_m1b_crawler/">Python爬蟲教學｜台灣貨幣總計數 M1B &amp; M2</a>」的<a href="https://ai.finlab.tw/database#%E8%B2%A8%E5%B9%A3%E7%B8%BD%E8%A8%88%E6%95%B8%E5%B9%B4%E5%A2%9E%E7%8E%87" target="_blank" rel="noopener">資料</a>，我們可以用來回測該指標是否為具有領先性的大盤濾網，並測試看看資金流動性指標是否能優化股價動能策略，在市場資金變保守時，能否減低動能策略回檔的殺傷力？</p>



<h2>指標意義</h2>



<blockquote class="wp-block-quote has-medium-font-size"><p>M1B＝M1A（通貨淨額 ＋ 支票存款 ＋ 活期存款）＋活期儲蓄存款，為人民手邊可隨時動用的資金。 </p><p>M2＝M1B＋準備貨幣（如定期存款、郵政儲金及外匯存款），流動性較 M1B 低，代表整體市場的資金。 <br>當 M1B 年增率 &#8211; M2 年增率 ＞ 0，表示流動資金成長較定存快，台股資金越活絡。 當 M1B 年增率 &#8211; M2 年增率 &lt; 0，表示流動資金成長較定存慢，台股資金越趨緩。 在過去幾次循環中，M1B 減 M2（年增率）常領先台股三至六個月前出現上漲，在 M1B 減 M2 出現向下走勢時，台股亦出現下跌（資料來源：<a href="https://www.macromicro.me/charts/718/tw-m1b-m2-twse" target="_blank" rel="noopener">財經M平方</a>）。</p></blockquote>



<p class="has-medium-font-size">總經平台「<a href="https://www.macromicro.me/" target="_blank" rel="noopener">財經M平方</a>」有豐富的總經資訊，如果對總經指標不熟悉，可以在該平台習得知識，了解概念後，就可以使用「<a href="https://doc.finlab.tw/getting-start/" target="_blank" rel="noopener"> FinLab 回測模組</a>」來驗證。「 M1B 年增率 &#8211; M2 年增率 ＞ 0」這個指標有用嗎？</p>



<h2>圖表觀察</h2>



<p class="has-medium-font-size">寫回測之前，可以先將數據視覺化簡單觀測一下「資金指標與加權報酬指數關係圖」。<br>灰色區塊是每次「 M1B 年增率 &#8211; M2 年增率 剛小於 0」到「 M1B 年增率 &#8211; M2 年增率 剛大於 0」的區間。<br>圖中可發現 2000 以前由於銀行利率很高，在那個定存5%的年代，M2 年增率好長一陣子都大於M1B年增率。<br>2000 以後，利率開始降，資金開始流入股市，展開台股大多頭。<br>2006-2007 指標出現好幾次震盪，但看起來是提早被洗掉。<br>2008 該指標領先崩盤訊號，成功躲掉崩盤，但股市反轉一大段後，該指標才翻多，看起來也躲掉大漲。金融海嘯後全球開始印鈔，降息降到極限，維持好長一段「 M1B 年增率 &#8211; M2 年增率 ＞ 0」，2012-2013 的訊號失靈，2015 的訊號有領先，2017-2018 出現極短循環。<br>而 2022 這次崩盤，雖然美國狂升息，但 M2年增率 由於「台灣央行」升息很慢，所以增幅並不明顯，由於之前M1B增幅很快，收斂要時間，所以直到崩了好一大段後，現在才又轉負，<strong>沒能提早示警</strong>。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="378" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-04-下午9.06.12-1024x378.png" alt="截圖 2022 11 04 下午9.06.12" class="wp-image-4817" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-04-下午9.06.12-1024x378.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-04-下午9.06.12-300x111.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-04-下午9.06.12-768x283.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-04-下午9.06.12-1536x567.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-04-下午9.06.12-2048x756.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="用Python回測總經指標(1)｜M1B &amp; M2 年增率 20"><figcaption>資金指標與加權報酬指數關係圖</figcaption></figure>



<h2>M1與Ｍ2交叉訊號回測</h2>



<p class="has-medium-font-size">圖表訊號看起來實用性是55波。寫程式回測一下，操作標的為「0050 元大台灣50 (藍線)」。<br>結果和一直持有(灰線)的結果是差不多的&#8230;雖然可能會躲崩，但也會落後進場。然後慘烈的 2022 整段回檔吃下來，是不是不用那麼忙？</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="600" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-20.png" alt="newplot 20" class="wp-image-4819" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-20.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-20-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-20-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="用Python回測總經指標(1)｜M1B &amp; M2 年增率 21"></figure>



<h2>M1均線指標</h2>



<p class="has-medium-font-size">為何「 M1B 年增率 &#8211; M2 年增率 ＞ 0」會沒傳說中的有用？<br>我想關鍵在於跟<strong>「M2 年增率」的波動不大</strong>有關，「M1B 年增率」波動才是關鍵，像 2022 由於 2021 資金行情讓兩者差距太大，在 M2 上升不夠下，M1B 要收斂向下穿過 M2 要花的時間太長。<br>實際要使用的話，我會試試單用「M1B 均線訊號來回測」，例如當月「M1B 年增率」穿越「M1B 年增率近6月平均年增率」當訊號，產生更靈敏的指標，訊號也變多。將條件修改回測結果如下，確實能解決「M2 年增率」太遲緩的問題，以此操作 0050 或是長期投資台股指數，會有擇時進出場的優勢。</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="600" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-21.png" alt="newplot 21" class="wp-image-4820" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-21.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-21-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-21-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="用Python回測總經指標(1)｜M1B &amp; M2 年增率 22"></figure>



<h2>Top Down 選股策略實測</h2>



<p class="has-medium-font-size">Top Down 選股法簡單說是先分析最上層的總經，大環境若逆風，則不再後續選股動作。要確認大環境好，才進行選股，不是硬要靠選股能力待在市場，而是選最順風的時候。<br>動能策略在資金行情時，往往衝第一，然而當資金消退時，也是跌勢驚人！究竟「M1B 均線指標」能不能進一步提升「動能策略」的績效？</p>



<h3>動能策略範例</h3>



<p class="has-medium-font-size">範例選定為「<a href="https://www.finlab.tw/breakthrough_stock_picking_strategies/">突破策略豆知識 | 如何避免假突破?</a>」文章中的「<a href="https://doc.finlab.tw/tools/%E8%82%A1%E5%83%B9%E5%89%B5%E6%96%B0%E9%AB%98%E5%8B%95%E8%83%BD/" target="_blank" rel="noopener">創新高延續動能策略</a>」。<br>回測績效如下，很兇猛。</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="600" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-22.png" alt="newplot 22" class="wp-image-4821" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-22.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-22-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-22-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="用Python回測總經指標(1)｜M1B &amp; M2 年增率 23"></figure>



<h3>動能策略＊資金行情指標回測</h3>



<p class="has-medium-font-size">下圖中是套上「M1B 均線指標」當大盤濾網，可以發現雖然 2022 成功躲過，但前幾年也錯過不少飆股機會，累積報酬率少了7倍，且最後與一直持有指數是一樣的，白忙一場。長期待在市場衝鋒陷陣才是王道？</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="800" height="600" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-23.png" alt="newplot 23" class="wp-image-4822" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-23.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-23-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-23-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="用Python回測總經指標(1)｜M1B &amp; M2 年增率 24"></figure>



<h2>結論</h2>



<ul class="has-medium-font-size"><li>「 M1B 年增率 &#8211; M2 年增率 ＞ 0」不夠靈敏。</li><li>「M1B 年增率」穿越「M1B 年增率近6月平均年增率」較能解決「M2 年增率」不靈敏的問題，有助於台股指數擇時操作，但個股策略則無明顯效果。</li></ul>



<p class="has-medium-font-size"><a href="https://colab.research.google.com/drive/1M7udDTTckhdfgQyAlKOzpepI-hSWiAAT?usp=sharing" target="_blank" rel="noopener">colab 範例程式檔</a> 提供大家自己驗證，之後會繼續研究其他總經指標。</p>



<p></p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/tw_monetary_aggregates_m1b_strategy/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4809</post-id>	</item>
		<item>
		<title>Python爬蟲教學｜ 財經數據｜台灣貨幣總計數 M1B &#038; M2</title>
		<link>https://www.finlab.tw/tw_monetary_aggregates_m1b_crawler/</link>
					<comments>https://www.finlab.tw/tw_monetary_aggregates_m1b_crawler/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Thu, 03 Nov 2022 01:43:39 +0000</pubDate>
				<category><![CDATA[財經PYTHON教學]]></category>
		<category><![CDATA[總體經濟]]></category>
		<category><![CDATA[m1b]]></category>
		<category><![CDATA[PYTHON]]></category>
		<category><![CDATA[主計處]]></category>
		<category><![CDATA[台灣]]></category>
		<category><![CDATA[央行]]></category>
		<category><![CDATA[爬蟲]]></category>
		<category><![CDATA[貨幣總計數]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=4792</guid>

					<description><![CDATA[全球經濟面臨空頭襲擊，資金行情被美國聯準會升息潮打擊，很多人說 2022 是總經盤， 牛市階段，個股棒棒開花，投資人反倒覺得總經不夠靈敏，而現今熊市時刻，覆巢之下無完卵 ，投資人開始注意總經的影響力。市面上有不錯的總經平台，如「財經Ｍ平方」提供數據圖表，可惜沒提供財經數據API的服務，若要使用總經數據，還是得自己想辦法，所幸有Python爬蟲可以幫我們解決需求。貨幣總計數M1B和M2象徵「流動資金」與「保守資金」的消長，或能幫助資金行情判斷，這篇文章將示範如何爬取M1B和M2的年增率。]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">全球經濟面臨空頭襲擊，資金行情被美國聯準會升息潮打擊，很多人說 2022 是總經盤， 牛市階段，個股棒棒開花，投資人反倒覺得總經不夠靈敏，而現今熊市時刻，覆巢之下無完卵 ，投資人開始注意總經的影響力。市面上有不錯的總經平台，如「<a href="https://www.macromicro.me/collections/11/tw-gdp-relative/133/tw-m1b-m2" target="_blank" rel="noopener">財經Ｍ平方</a>」提供數據圖表，可惜沒提供財經數據API的服務，若要使用總經數據，還是得自己想辦法，所幸有Python爬蟲可以幫我們解決需求。貨幣總計數M1B和M2象徵「流動資金」與「保守資金」的消長，或能幫助資金行情判斷，這篇文章將示範如何爬取M1B和M2的年增率。</p>



<h2>財經數據資料源</h2>



<p class="has-medium-font-size">貨幣總計數的資料最源頭來自台灣<a href="https://www.cbc.gov.tw/tw/lp-302-1.html" target="_blank" rel="noopener">中央銀行的新聞稿</a>，每月23-30號間發布「<a href="https://www.cbc.gov.tw/tw/cp-302-155810-06170-1.html" target="_blank" rel="noopener">上月金融狀況</a>」，頁內有M1B和M2的年增率的表格資料。然而新聞稿區的早期資料不是那麼完全，網頁格式也變動多次，如果要在此爬蟲所有歷史資料，並非最佳解。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="622" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.25.25-1024x622.png" alt="截圖 2022 11 03 上午8.25.25" class="wp-image-4793" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.25.25-1024x622.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.25.25-300x182.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.25.25-768x466.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.25.25-1536x933.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.25.25-2048x1244.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="Python爬蟲教學｜ 財經數據｜台灣貨幣總計數 M1B &amp; M2 25"><figcaption>央行每月金融情況新聞稿</figcaption></figure>



<p class="has-medium-font-size"><br>所幸 <a href="https://www.dgbas.gov.tw/point.asp?index=10" target="_blank" rel="noopener">行政院主計處</a> 也有M1B和M2的數據，而且看來是可以一次抓下JS圖表內的所有數據，會比央行省事省力的許多。然而不幸的是此資料並非完美，現在都已經2022/11/3了，主計處資料還停在8月數據，但中央銀行早在10/24就發布了，怎麼更新同步基調差那麼多？如果是10/31前公佈都還好，拖到11月就真的太慢了。<br>所以我們需要兩個Python爬蟲，一個爬主計處的財經數據歷史資料。一個爬中央銀行當月的貨幣總計數，作為之後更新最新資料使用。</p>



<h2>主計處Python爬蟲</h2>



<p class="has-medium-font-size">爬蟲開發的第一步是觀察網頁結構，如果資料是以html的table來呈現，那是用pandas的read_html，就非常好解析，據經驗，80％情況都是如此。然而如果不是table，就比較麻煩，若財經數據有直接渲染在網頁，可以用 Beatifulsoup 解析整份 html 檔，再定位標籤抓資料。<br>可以看到 <a href="https://www.dgbas.gov.tw/point.asp?index=10" target="_blank" rel="noopener">行政院主計處</a> 的最新M1B數據是7.55，我們可以在Chrome瀏覽器按右鍵選擇檢查，搜尋「7.55」放在哪邊？之後可以發現7.55出現在4個地方，然而table內只有一筆資料，由於我們要抓到歷史資料是放在圖表，圖表資料一般都放在&lt;scripttype type=&#8221;text/javascript&#8221;>標籤裡的變數，經過搜尋發現我們要把chartValue變數內的資料解析出來。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="682" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.26.47-1024x682.png" alt="截圖 2022 11 03 上午8.26.47" class="wp-image-4794" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.26.47-1024x682.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.26.47-300x200.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.26.47-768x511.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.26.47-1536x1022.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.26.47-2048x1363.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="Python爬蟲教學｜ 財經數據｜台灣貨幣總計數 M1B &amp; M2 26"><figcaption>行政院主計處M1B年增率</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="490" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.38.35-1024x490.png" alt="截圖 2022 11 03 上午8.38.35" class="wp-image-4795" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.38.35-1024x490.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.38.35-300x143.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.38.35-768x367.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.38.35-1536x734.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午8.38.35-2048x979.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="Python爬蟲教學｜ 財經數據｜台灣貨幣總計數 M1B &amp; M2 27"></figure>



<h3>Python爬蟲程式範例</h3>



<p class="has-medium-font-size">流程和細節看程式註解，重點在BeautifulSoup網頁解析，和pandas如何產生目標時間序列。下列幾個要熟悉的工具說明。</p>



<ul class="has-medium-font-size"><li><a href="https://www.crummy.com/software/BeautifulSoup/bs4/doc/" target="_blank" rel="noopener">BeautifulSoup</a></li><li><a href="https://pandas.pydata.org/docs/reference/api/pandas.date_range.html" target="_blank" rel="noopener">pandas.date_range</a></li><li><a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.tseries.offsets.MonthEnd.html" target="_blank" rel="noopener">pandas.tseries.offsets.MonthEnd</a></li></ul>



<pre class="wp-block-code"><code lang="python" class="language-python">from bs4 import BeautifulSoup
import pandas as pd
import requests
from datetime import datetime


def crawl_history_from_dgbas():
    # 抓下網頁回傳資料
    response = requests.get('https://www.dgbas.gov.tw/point.asp?index=10')
    # 解析網頁
    parsed_file = BeautifulSoup(response.text)
    # 找出javascript區塊
    js_text = parsed_file.find_all('script', type="text/javascript")
    # 抓財經數據定位，資料為餘第3個javascript
    data = js_text[3].string

    # 文字資料定位，擷取數據部分，將js的日期型態Date.UTC取代成空白
    m1b = data[data.index('chartValue[6]') + len('chartValue[6]='):data.index(';\r\nchartValue[7]')].replace(
        'Date.UTC', '')
    # 將文字轉陣列
    eval_m1b = eval(m1b)
    # 取出數值，迴圈內d變數已被轉成空白，無意義
    m1b_values = [v for d, v in eval_m1b]

    # 重複上述動作，觀察chartValue內陣列定位，抓出M2數據
    m2 = data[data.index('chartValue[7]') + len('chartValue[7]='):data.index(';\r\nchartValue[8]')].replace(
        'Date.UTC', '')
    eval_m2 = eval(m2)
    m2_values = [v for d, v in eval_m2]
    
    # 日期處理，由於無法抓到即時公告日期，且央行公告日前每月不定，都在每月25號左右公告上月數據，為作業方便，目標將日期設為每月最後一天
    # 取出陣列內起始日期、結束日期
    start_date = eval_m1b[0][0]
    end_date = eval_m1b[-1][0]
    # 將日期格式轉為 pandas date_range 的參數格式，產生每月日期序列
    start = f'{start_date[0]}-{start_date[1]}-{start_date[2]}'
    end = f'{end_date[0]}-{end_date[1] + 1}-{end_date[2]}'
    # 日期序列為每月1日，為產生本月底公告去年數據的效果，使用tseries.offsets將日期後推
    dates = pd.date_range(start, end, freq='M') + pd.tseries.offsets.MonthEnd(2)
    
    # 產生m1b與m2數據，將數據併表
    m1b_df = pd.DataFrame({'stock_id': '貨幣總計數M1B', 'date': dates, '年增率(%)': m1b_values})
    m2_df = pd.DataFrame({'stock_id': '貨幣總計數M2', 'date': dates, '年增率(%)': m2_values})
    concat_df = pd.concat([m1b_df, m2_df])
    concat_df = concat_df.set_index(['stock_id', 'date'])
    return concat_df</code></pre>



<p></p>



<h3>Python爬蟲輸出結果</h3>



<figure class="wp-block-image size-full"><img loading="lazy" width="534" height="618" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.08.26.png" alt="截圖 2022 11 03 上午9.08.26" class="wp-image-4796" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.08.26.png 534w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.08.26-259x300.png 259w" sizes="(max-width: 534px) 100vw, 534px" title="Python爬蟲教學｜ 財經數據｜台灣貨幣總計數 M1B &amp; M2 28"></figure>



<h2>中央銀行Python爬蟲</h2>



<p class="has-medium-font-size">這個爬蟲要分兩步驟，首先由於每月金融情況新聞稿的連結沒有規律，所以要先解析<a href="https://www.cbc.gov.tw/tw/lp-302-1.html" target="_blank" rel="noopener">最新消息的>新聞稿的首頁</a>，取出近月新聞稿的超連結，再將連結傳到 python requests 取得表格數據，之後再將資料稍微整理成前面主計處爬蟲的資料格式。<br>另外要注意若每月25號前就執行此爬蟲，可能會有當月資料還沒公告的問題，所以要加上例外狀況處理，回傳一個空的dataframe。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="948" src="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.24.01-1024x948.png" alt="截圖 2022 11 03 上午9.24.01" class="wp-image-4797" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.24.01-1024x948.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.24.01-300x278.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.24.01-768x711.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.24.01-1536x1422.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/截圖-2022-11-03-上午9.24.01.png 1657w" sizes="(max-width: 1024px) 100vw, 1024px" title="Python爬蟲教學｜ 財經數據｜台灣貨幣總計數 M1B &amp; M2 29"></figure>



<h3>Python爬蟲程式範例</h3>



<pre class="wp-block-code"><code lang="python" class="language-python">def central_bank_crawl():
    
    # 資料目標日期，轉成民國型態的上月日期
    now = datetime.now()
    year = now.year - 1911
    month = (now.month + 10) % 12 + 1
    if month == 12:
        year -= 1
    
    # 解析出最新消息內近月金融情況新聞稿的超連結
    menu_response = requests.get('https://www.cbc.gov.tw/tw/lp-302-1.html')
    parsed_file = BeautifulSoup(menu_response.text)
    text = parsed_file.find('a', title=f"{year}年{month}月金融情況")

    # 沒資料則回傳空表
    if text is None:
        return pd.DataFrame()

    # 取出超連結
    href = text['href']
    
    # read_html 解析表格數據
    report_response = requests.get(f'https://www.cbc.gov.tw/{href}')
    report_df = pd.read_html(report_response.text)[0]
    report_df.columns = report_df.columns.get_level_values(1)
    report_df = report_df.iloc[:, :3]
    report_df = report_df.rename(columns={'項 目': 'stock_id', '年增率': '年增率(%)'})
    report_df = report_df[['stock_id', '年增率(%)']]
    report_df['date'] = datetime(now.year, now.month, 1) + pd.tseries.offsets.MonthEnd(1)
    report_df = report_df.set_index(['stock_id', 'date'])
    return report_df
</code></pre>



<p></p>



<h2>結論</h2>



<p class="has-medium-font-size"><a href="https://colab.research.google.com/drive/1RIp8diM2WQ2NFjVFGiS9fr3etoavqvB0?usp=sharing" target="_blank" rel="noopener">colab程式範例</a><br>這個爬蟲和證交所那類好爬的表格與穩定資料相比，有一些要注意的坑，處理上也比較多層，所以特別記錄一下。行政院主計處和央行還有許多總經數據，如果你有需求，可以自己用上述範例練習抓抓看，或直接使用 <a href="https://ai.finlab.tw/database#%E8%B2%A8%E5%B9%A3%E7%B8%BD%E8%A8%88%E6%95%B8%E5%B9%B4%E5%A2%9E%E7%8E%87" target="_blank" rel="noopener">FinLab資料庫</a> 來抓喔。</p>



<p class="has-medium-font-size">如果你對爬蟲想知道更多，可參考我們其他教學文章</p>



<p class="has-medium-font-size"><a href="https://www.finlab.tw/%e8%b6%85%e7%b0%a1%e5%96%ae%e5%8f%b0%e8%82%a1%e6%af%8f%e6%97%a5%e7%88%ac%e8%9f%b2%e6%95%99%e5%ad%b8/">超簡單台股每日爬蟲教學</a><br><a href="https://www.finlab.tw/%e8%b6%85%e7%b0%a1%e5%96%ae%e7%94%a8python%e6%8a%93%e5%8f%96%e6%af%8f%e6%9c%88%e7%87%9f%e6%94%b6/">超簡單用python抓取每月營收</a><br><a href="https://www.finlab.tw/%e4%b8%89%e5%a4%a7%e6%b3%95%e4%ba%ba%e7%88%ac%e8%9f%b2/">三大法人爬蟲：Python實作教學</a><br><a href="https://www.finlab.tw/%e7%b0%a1%e5%96%aepython%e4%b8%8a%e6%ab%83%e8%b3%87%e6%96%99%e7%88%ac%e8%9f%b2%e5%af%a6%e5%81%9a/">python上櫃資料爬蟲輕鬆做</a><br><a href="https://www.finlab.tw/python-%e8%b2%a1%e5%a0%b1%e7%88%ac%e8%9f%b2-1-%e7%b6%9c%e5%90%88%e6%90%8d%e7%9b%8a%e8%a1%a8/">財報爬蟲超簡單 – 用Python一次抓綜合損益、資產負債、營利分析</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/tw_monetary_aggregates_m1b_crawler/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4792</post-id>	</item>
	</channel>
</rss>
