<?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/tag/%E5%9B%9E%E6%B8%AC/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.finlab.tw</link>
	<description>深入淺出的量化投資，讓你在在茫茫股海中，找到專屬於自己的投資方法</description>
	<lastBuildDate>Sun, 02 Jul 2023 10:52:53 +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>美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？</title>
		<link>https://www.finlab.tw/us_start_build_pb_strategy_backtest/</link>
					<comments>https://www.finlab.tw/us_start_build_pb_strategy_backtest/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Sun, 02 Jul 2023 10:51:58 +0000</pubDate>
				<category><![CDATA[Python新手教學]]></category>
		<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[股票策略]]></category>
		<category><![CDATA[回測]]></category>
		<category><![CDATA[美股]]></category>
		<category><![CDATA[股價淨值比]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=5410</guid>

					<description><![CDATA[回測的美國航班即將起飛！ 我們在年初時，就有做過問卷調查，大家最希望的是有美股資料的功能，我們幫各位購買，並整 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">回測的美國航班即將起飛！</p>



<p class="has-medium-font-size">我們在年初時，就有做過問卷調查，大家最希望的是有美股資料的功能，我們幫各位購買，並整合了<a href="https://www.finlab.tw/us_database_doc/"> Sharadar 美股資料</a>，經歷了長達半年的馬拉松，終於將原本的台股系統，兼容美股的程式碼，可以無腦銜接！用你熟悉的語法，做其他國家市場的股票！只有一個爽字，雖然語法一樣，但是我們發現台股美股差異滿大的，策略都要重新研發，不太能直接移植。這邊我們先提供基礎範例，就先交給大家來一起研究啦！另外有個小缺點&#8230;就是資料商只允許在網頁上使用～所以當前只能在網頁上進行回測。</p>



<p class="has-medium-font-size"><br>這篇教學的目的在教大家如何快速上手策略開發，以及驗證一下台股策略的模板能不能完美複製到美股？還是會面臨失效的無情打擊？</p>



<h2>建立你第一個美股策略</h2>



<h2>複製策略</h2>



<p class="has-medium-font-size">在對一切都還是未知的情況下，最快的上手方式就是模仿。以下幾個簡單的步驟帶你複製FinLab 策略範例，走過回測策略的流程。<br>首先進入 <a href="https://ai.finlab.tw/strategies?tab=FinLab%E7%BE%8E%E8%82%A1" target="_blank" rel="noopener">FinLab的美股策略實驗室</a> ，點選「<a class="" href="https://ai.finlab.tw/strategyview/?uid=TJN4FDuqrwU8DML7DAjUYFIMutp2&amp;sid=%E7%BE%8E%E8%82%A1_%E4%BD%8E%E8%82%A1%E5%83%B9%E6%B7%A8%E5%80%BC%E6%AF%94" target="_blank" rel="noopener">美股_低股價淨值比</a>」，這是免費開放給所有人的策略範例，不是VIP也可以試用。<br>之前在台股的<a href="https://ai.finlab.tw/notebook/?uid=TJN4FDuqrwU8DML7DAjUYFIMutp2&amp;sid=%E8%82%A1%E5%83%B9%E6%B7%A8%E5%80%BC%E6%AF%94%E7%AD%96%E7%95%A5&amp;cid=sotMOMPufPwDHgGw8LQV" target="_blank" rel="noopener">策略教學</a>中很經典的策略，短短的程式碼就有不錯的效果，你若對細節有興趣，可以去看<a href="https://ai.finlab.tw/notebook/?uid=TJN4FDuqrwU8DML7DAjUYFIMutp2&amp;sid=%E8%82%A1%E5%83%B9%E6%B7%A8%E5%80%BC%E6%AF%94%E7%AD%96%E7%95%A5&amp;cid=sotMOMPufPwDHgGw8LQV" target="_blank" rel="noopener">影音教學</a>，現在只是單純把資料換成美股，究竟表現回如何呢？<br>如果你是已經用過我們台股策略回測的朋友，那你會對多數步驟非常熟悉。</p>



<figure class="wp-block-image size-large"><img width="1024" height="580" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午5.58.53-1024x580.png" alt="截圖 2023 07 02 下午5.58.53" class="wp-image-5411" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午5.58.53-1024x580.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午5.58.53-300x170.png 300w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午5.58.53-768x435.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午5.58.53-1536x869.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午5.58.53-2048x1159.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 1"></figure>



<p class="has-medium-font-size">點選進入後會看到策略的回測數據和「<a class="" href="https://ai.finlab.tw/strategyview/?uid=TJN4FDuqrwU8DML7DAjUYFIMutp2&amp;sid=%E7%BE%8E%E8%82%A1_%E4%BD%8E%E8%82%A1%E5%83%B9%E6%B7%A8%E5%80%BC%E6%AF%94" target="_blank" rel="noopener">美股_低股價淨值比</a>」選股清單，點選右上角進入程式碼。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="565" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.08.12-1024x565.png" alt="截圖 2023 07 02 下午6.08.12" class="wp-image-5412" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.08.12-1024x565.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.08.12-300x166.png 300w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.08.12-768x424.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.08.12-1536x847.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.08.12.png 1865w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 2"></figure>



<p class="has-medium-font-size">接著你會看到程式碼，你可以先不用理解程式的部分，先點選「複製策略」。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.17-1024x547.png" alt="截圖 2023 07 02 下午6.09.17" class="wp-image-5413" width="840" height="448" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.17-1024x547.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.17-300x160.png 300w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.17-768x410.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.17-1536x820.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.17.png 1644w" sizes="(max-width: 840px) 100vw, 840px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 3"></figure>



<p class="has-medium-font-size">接著會要求您重新命名策略，就完成複製策略的步驟，您之後可在「<a href="https://ai.finlab.tw/strategies?tab=%E6%88%91%E7%9A%84%E7%AD%96%E7%95%A5" target="_blank" rel="noopener">我的策略</a>」頁面看到您複製的策略。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="394" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.34-1024x394.png" alt="截圖 2023 07 02 下午6.09.34" class="wp-image-5414" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.34-1024x394.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.34-300x116.png 300w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.34-768x296.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.34-1536x591.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.09.34-2048x789.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 4"></figure>



<h2>執行策略</h2>



<p class="has-medium-font-size">按左上角的啟動符號，下方的 warning 訊息為抓取的資料與用量，運算完後會在右側顯示回測結果。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="506" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.22.37-1024x506.png" alt="截圖 2023 07 02 下午6.22.37" class="wp-image-5416" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.22.37-1024x506.png 1024w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.22.37-300x148.png 300w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.22.37-768x379.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.22.37-1536x758.png 1536w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.22.37-2048x1011.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 5"></figure>



<h2>分析策略</h2>



<h3>報酬分析</h3>



<p class="has-medium-font-size">近7年該策略的表現領先於 S&amp;P 500 指數(灰線)，表現還不錯。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="859" height="1024" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.27.39-859x1024.png" alt="截圖 2023 07 02 下午6.27.39" class="wp-image-5417" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.27.39-859x1024.png 859w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.27.39-252x300.png 252w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.27.39-768x916.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.27.39.png 1048w" sizes="(max-width: 859px) 100vw, 859px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 6"></figure>



<h3>風險分析</h3>



<p class="has-medium-font-size">近7年該策略的下跌幅度小於 S&amp;P 500 指數(灰線)，在2020疫情空頭時，回檔比指數少。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="823" height="1024" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.26.21-823x1024.png" alt="截圖 2023 07 02 下午6.26.21" class="wp-image-5418" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.26.21-823x1024.png 823w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.26.21-241x300.png 241w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.26.21-768x955.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.26.21.png 1062w" sizes="(max-width: 823px) 100vw, 823px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 7"></figure>



<h2>台股的股價淨值比策略表現</h2>



<p class="has-medium-font-size">不比不知道，表現比美股好很多啊！同樣的模式，一個在台股很有用，一個在美股則沒有那麼明顯的效果。為什麼會這樣呢？可能是每個市場主流的因子不同，也可能是美股兩話投資玩家很多，一些經典的指標已經變落後指標。<br>可見開發策略要針對不同市場因地制宜，在高效率市場的美股中，策略開發要像台股找到明顯的超額報酬，不是那麼簡單喔！</p>



<h3>報酬分析</h3>



<figure class="wp-block-image size-large"><img loading="lazy" width="893" height="1024" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.33.49-893x1024.png" alt="截圖 2023 07 02 下午6.33.49" class="wp-image-5420" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.33.49-893x1024.png 893w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.33.49-262x300.png 262w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.33.49-768x880.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.33.49.png 1121w" sizes="(max-width: 893px) 100vw, 893px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 8"></figure>



<h3>風險分析</h3>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" src="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.34.16-845x1024.png" alt="截圖 2023 07 02 下午6.34.16" class="wp-image-5419" width="840" height="1017" srcset="https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.34.16-845x1024.png 845w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.34.16-248x300.png 248w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.34.16-768x931.png 768w, https://www.finlab.tw/wp-content/uploads/2023/07/截圖-2023-07-02-下午6.34.16.png 1101w" sizes="(max-width: 840px) 100vw, 840px" title="美股探險記第3課:1分鐘上手美股回測｜股價淨值比在美股策略還有效嗎？ 9"></figure>



<h2>更多免費策略範例</h2>



<p class="has-medium-font-size">如果你對美股開發有興趣，我們之後也會上架更多的範例到<a href="https://ai.finlab.tw/strategies?tab=FinLab%E7%BE%8E%E8%82%A1" target="_blank" rel="noopener">策略實驗室</a>、<a href="https://doc.finlab.tw/tools/%E7%BE%8E%E8%82%A1_%E4%BD%8E%E5%83%B9%E8%82%A1%E4%BD%8E%E6%B3%A2%E5%8B%95%E7%AD%96%E7%95%A5/" target="_blank" rel="noopener">教學文檔</a>、部落格。<br>帶領大家找出美股的關鍵因子。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/us_start_build_pb_strategy_backtest/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5410</post-id>	</item>
		<item>
		<title>選股回測系統豆知識 (2)｜持股比例上限設定</title>
		<link>https://www.finlab.tw/backtest_system_position_limit/</link>
					<comments>https://www.finlab.tw/backtest_system_position_limit/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Mon, 28 Nov 2022 09:43:14 +0000</pubDate>
				<category><![CDATA[Python新手教學]]></category>
		<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[選股策略]]></category>
		<category><![CDATA[創新高]]></category>
		<category><![CDATA[回測]]></category>
		<category><![CDATA[快樂表]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=4940</guid>

					<description><![CDATA[策略回測最怕測到快樂表，什麼是快樂表？簡而言之就是紙上談兵的表現嚇嚇叫，但實際操作時卻很難貼合回測，通常這類情況多是流動性風險問題，而另一種快樂表就是回測數據的解讀錯誤，像是看到超高年化報酬率就很嗨，卻沒注意到在勝率普通的情況下，高報酬是不是剛好靠幾檔交易重壓而生成？若真是如此，那運氣成分可能佔比很大。
本文會利用一些簡單的技巧去避免統計的陷阱，讓你注意到策略中因持股重壓導致的失真問題。]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">策略回測最怕測到快樂表，什麼是快樂表？簡而言之就是紙上談兵的表現嚇嚇叫，但實際操作時卻很難貼合回測，通常這類情況多是<a href="https://www.finlab.tw/customized_liquidityanalysis/">流動性風險</a>問題，而另一種快樂表就是回測數據的解讀錯誤，像是看到超高年化報酬率就很嗨，卻沒注意到在勝率普通的情況下，高報酬是不是剛好靠幾檔交易重壓而生成？若真是如此，那運氣成分可能佔比很大。<br>本文會利用一些簡單的技巧去避免統計的陷阱，讓你注意到策略中因持股重壓導致的失真問題。</p>



<h2>持股檔數設定</h2>



<p class="has-medium-font-size">小資族的資金少，選股策略在初步開發完後第一個問題是選到檔數太多，以之前介紹過的創新高延續動能策略為例，可能某幾期選股在大牛市高達百檔，但實務上根本不可能買那麼多。</p>



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

with data.universe(market='TSE_OTC'):
    close = data.get("price:收盤價")
    # 近5日內有3日以上的股價創前200日新高
    position = (close == close.rolling(200).max()).sustain(5,3)
    report = sim(position, resample="2W", stop_loss=0.2, name="創新高延續動能策略", upload=False)
    report.display()</code></pre>



<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-40.png" alt="newplot 40" class="wp-image-4941" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-40.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-40-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-40-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="選股回測系統豆知識 (2)｜持股比例上限設定 10"><figcaption>創新高延續動能策略原型</figcaption></figure>



<p class="has-medium-font-size">此時我們可以針對小資族去客製化務實的條件，每期選股價前10低的標的來當持股組合。回測結果發現報酬率降低一些，但持股檔數上限控制在10檔以內，且低價的優先，讓小資族更能參與整張現股的操作，避免零股交易較高的滑價風險，讓回測更貼近現實交易貼合的可能性。</p>



<pre class="wp-block-code"><code lang="python" class="language-python">with data.universe(market='TSE_OTC'):
    close = data.get("price:收盤價")
    # 近5日內有3日以上的股價創前200日新高
    position = (close == close.rolling(200).max()).sustain(5,3)
    position *= close
    position = position[position &gt; 0].is_smallest(10)
    report = sim(position, resample="2W", name="創新高延續動能策略", upload=False)
    report.display()</code></pre>



<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-42.png" alt="newplot 42" class="wp-image-4942" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-42.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-42-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-42-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="選股回測系統豆知識 (2)｜持股比例上限設定 11"><figcaption>低價股優先測定持股檔數上限</figcaption></figure>



<h2>單檔持股比例上限</h2>



<p class="has-medium-font-size">以為這樣就沒問題了嗎？你若仔細看上面「低價股優先測定持股檔數上限」的策略，會發現每期的標的數量仍參差不定，牛市有時候10檔，熊市有時候1檔，由於 position 預設分配持股比例是用檔數做平均，因此若當期只選到一隻，而沒在 <a href="https://doc.finlab.tw/reference/backtest/#finlab.backtest.sim" target="_blank" rel="noopener">sim 回測函數</a> 內特別設定 position_limit，那就是100%重壓一檔！如下圖示對整體策略波動會造成很大的風險：</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-41.png" alt="newplot 41" class="wp-image-4943" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-41.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-41-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-41-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="選股回測系統豆知識 (2)｜持股比例上限設定 12"></figure>



<p class="has-medium-font-size">如何解決此問題呢？<a href="https://doc.finlab.tw/reference/backtest/#finlab.backtest.sim" target="_blank" rel="noopener">sim 回測函數</a> 內設定 position_limit 當單檔標的持股比例上限，控制倉位風險。預設為None，也就是不設上限。範例：0.1，代表單檔標的最多持有 10 % 部位，若加上持股檔數上限10檔，當只選到8檔時，總持股上限則為80%，剩下 20% 為現金，在選到檔數較少的時候，自然產生空手避險的效果，而不重壓標地。<br>position_limit 越高一般來說波動越大 ; position_limit  越低則波動低，報酬率與最大回撤普遍都會縮小，站在風控角度，一般建議都要設 position_limit &lt; 0.2，避免個股非系統性風險影響整體策略。<br>「<a href="https://www.finlab.tw/breakthrough_stock_picking_strategies/">創新高延續動能策略</a>」的 position_limit 要用多少比較好？我們可以用 ReportCollection 來檢測不同數值的回測效果，程式如下：</p>



<pre class="wp-block-code"><code lang="python" class="language-python">def run_strategy(position_limit):
    with data.universe(market='TSE_OTC'):
        close = data.get("price:收盤價")
        # 近5日內有3日以上的股價創前200日新高
        position = (close == close.rolling(200).max()).sustain(5,3)
        report = sim(position, resample="2W", position_limit=position_limit, stop_loss=0.2, name="創新高延續動能策略", upload=False)
        return report


# # 產生回測組合
reports = {ind/10: run_strategy(ind/10) for ind in range(1,11)}
# 放入回測報告組合比較器
collection = ReportCollection(reports)
# 產生回測數據分群柱狀圖
collection.plot_creturns().show()

import plotly.graph_objects as go

def show_index_bar(collection, item = 'max_drawdown'):
    stats = collection.get_stats()
    df = round(stats.loc[item],2).sort_values()
    fig = go.Figure([go.Bar(x=df.index, y=df.values, text=df.values, textposition='auto',)])
    fig.update_layout(title_text=item)
    return fig

# 年化報酬
show_index_bar(collection, item = 'daily_mean').show()
show_index_bar(collection, item = 'max_drawdown').show()
show_index_bar(collection, item = 'daily_sharpe').show()</code></pre>



<h2>回測分析</h2>



<p class="has-medium-font-size">可以發現 position_limit  = 0.2 時 的年化報酬率、夏普率、MDD (最大回撤) 表現最好，能有效降低重壓波動風險。如果做出來發現 position_limit  = 1 的數據最好，那就要留意快樂表的可能性，可能好績效靠是重壓導致的，這時最好考慮低 position_limit 的情況</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="271" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-43-1024x271.png" alt="newplot 43" class="wp-image-4945" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-43-1024x271.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-43-300x79.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-43-768x203.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-43-1536x407.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-43.png 1982w" sizes="(max-width: 1024px) 100vw, 1024px" title="選股回測系統豆知識 (2)｜持股比例上限設定 13"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="271" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-44-1024x271.png" alt="newplot 44" class="wp-image-4948" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-44-1024x271.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-44-300x79.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-44-768x203.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-44-1536x407.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-44.png 1982w" sizes="(max-width: 1024px) 100vw, 1024px" title="選股回測系統豆知識 (2)｜持股比例上限設定 14"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="271" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-46-1024x271.png" alt="newplot 46" class="wp-image-4947" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-46-1024x271.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-46-300x79.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-46-768x203.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-46-1536x407.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-46.png 1982w" sizes="(max-width: 1024px) 100vw, 1024px" title="選股回測系統豆知識 (2)｜持股比例上限設定 15"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="271" src="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-45-1-1024x271.png" alt="newplot 45 1" class="wp-image-4950" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-45-1-1024x271.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-45-1-300x79.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-45-1-768x203.png 768w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-45-1-1536x407.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-45-1.png 1982w" sizes="(max-width: 1024px) 100vw, 1024px" title="選股回測系統豆知識 (2)｜持股比例上限設定 16"></figure>



<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-48.png" alt="newplot 48" class="wp-image-4953" srcset="https://www.finlab.tw/wp-content/uploads/2022/11/newplot-48.png 800w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-48-300x225.png 300w, https://www.finlab.tw/wp-content/uploads/2022/11/newplot-48-768x576.png 768w" sizes="(max-width: 800px) 100vw, 800px" title="選股回測系統豆知識 (2)｜持股比例上限設定 17"><figcaption>position_limit = 0.2 的回測情況 </figcaption></figure>



<h2>結論</h2>



<p class="has-medium-font-size"><a href="https://colab.research.google.com/drive/11xHowJGeHmhpNCbCjOPfcsBI5yT6ZsOq?usp=sharing" target="_blank" rel="noopener">colab 範例檔</a><br>你的策略有驗證過持股檔數與單檔持股上限的問題嗎？<br>調整一個  position_limit  參數 就能降低快樂表和大波動的風險，可說是新手必學的參數設定啊！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/backtest_system_position_limit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4940</post-id>	</item>
		<item>
		<title>FRED總體經濟指標輕鬆抓&#124;美國汽車指標&#124;美股回測外掛教學</title>
		<link>https://www.finlab.tw/fred%e7%b8%bd%e9%ab%94%e7%b6%93%e6%bf%9f%e6%8c%87%e6%a8%99%e8%bc%95%e9%ac%86%e6%8a%93%e7%be%8e%e5%9c%8b%e6%b1%bd%e8%bb%8a%e6%8c%87%e6%a8%99%e7%be%8e%e8%82%a1%e5%9b%9e%e6%b8%ac%e5%a4%96%e6%8e%9b/</link>
					<comments>https://www.finlab.tw/fred%e7%b8%bd%e9%ab%94%e7%b6%93%e6%bf%9f%e6%8c%87%e6%a8%99%e8%bc%95%e9%ac%86%e6%8a%93%e7%be%8e%e5%9c%8b%e6%b1%bd%e8%bb%8a%e6%8c%87%e6%a8%99%e7%be%8e%e8%82%a1%e5%9b%9e%e6%b8%ac%e5%a4%96%e6%8e%9b/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Wed, 25 May 2022 06:32:32 +0000</pubDate>
				<category><![CDATA[Python新手教學]]></category>
		<category><![CDATA[VIP文章]]></category>
		<category><![CDATA[生產力]]></category>
		<category><![CDATA[股票策略]]></category>
		<category><![CDATA[財經PYTHON教學]]></category>
		<category><![CDATA[VIP限定]]></category>
		<category><![CDATA[回測]]></category>
		<category><![CDATA[爬蟲]]></category>
		<category><![CDATA[總體經濟]]></category>
		<category><![CDATA[美股]]></category>
		<category><![CDATA[選股策略]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=3577</guid>

					<description><![CDATA[這篇文章涉及FRED API串接、美股股價爬蟲、總體經濟指標繪圖、指標解說、美股回測～一條龍帶大家走一遍，開展了FinLab系統更多的可能性。]]></description>
										<content:encoded><![CDATA[
<p class="has-medium-font-size">財經資料項目很多，除了以台股為主的<a href="https://ai.finlab.tw/database" target="_blank" rel="noopener">FinLab資料庫</a>，有時可能還有其他外部資料使用的需求，像是總體經濟、美股、港股、加密貨幣等等。市面上已經有不少免費又好用的財經資料庫API服務，FinLab不會再重新造輪，而是讓大家可以串接外部資料做更多元的應用。</p>



<p class="has-medium-font-size">這一篇文章會教大家使用FRED總體經濟網站的API輕鬆地獲取總經資料，並示範運用外部資料打造自己的總體經濟分析儀表板與如何套用美股標的到FinLab回測系統。</p>



<h2>FRED API 操作說明</h2>



<p class="has-medium-font-size"><a href="https://fred.stlouisfed.org/" target="_blank" rel="noopener">FRED</a> (Federal Reserve Economic Data) 是路易斯聯邦儲備銀行研究部維護的數據庫，網站提供免費、多元、更新及時的總經資料庫、檢索、圖表功能。</p>



<p class="has-medium-font-size">和市面上的總經網站主要的差別是提供 FRED® API 服務，允許開發人員編寫程序和構建應用程式，可以根據數據源、發布、類別、系列和其他偏好自定義請求資料，比較方便程式人客製化使用資料。</p>



<h3>帳號註冊&amp;獲取API_KEY</h3>



<p class="has-medium-font-size">依照<a href="https://fred.stlouisfed.org/docs/api/api_key.html" target="_blank" rel="noopener">FRED官網指示</a>來操作，先註冊帳號，之後再申請API_KEY。</p>



<h3>API使用規則</h3>



<p class="has-medium-font-size">講解幾個最常用的功能，其他功能詳見<a href="https://fred.stlouisfed.org/docs/api/fred/" target="_blank" rel="noopener">FRED API</a>文檔操作:</p>



<h4>拉取總經指標的時間序列</h4>



<p class="has-medium-font-size"><a href="https://fred.stlouisfed.org/docs/api/fred/series_observations.html" target="_blank" rel="noopener">詳見fred/series/observations</a>，例如我們要抓取美股汽車庫存銷售比 (AISRSA) 的時間序列，可以從網址結構獲取series_id (AISRSA)，並使用python的requests.get() 抓取api回傳資料，我們可以將fred_api寫成下列function，只要替換不同series_id，就能獲取各式資料。</p>



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

def get_fred_series_data(series_id='AISRSA',api_key=''):
    res=requests.get(f'https://api.stlouisfed.org/fred/series/observations?series_id={series_id}&amp;api_key={api_key}&amp;file_type=json')
    df=json.loads(res.text)
    return df


aisrsa = get_fred_series_data('AISRSA')</code></pre>



<figure class="wp-block-image size-large"><a href="https://fred.stlouisfed.org/series/AISRSA" target="_blank" rel="noopener"><img loading="lazy" width="1024" height="661" src="https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.30.25-1024x661.png" alt="截圖 2022 05 25 下午12.30.25" class="wp-image-3589" srcset="https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.30.25-1024x661.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.30.25-300x194.png 300w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.30.25-768x495.png 768w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.30.25-1536x991.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.30.25-2048x1321.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="FRED總體經濟指標輕鬆抓|美國汽車指標|美股回測外掛教學 18"></a><figcaption>資料網址:<a href="https://fred.stlouisfed.org/series/AISRSA" target="_blank" rel="noopener">https://fred.stlouisfed.org/series/AISRSA</a></figcaption></figure>



<h4>依據索引拉取其他相關指標</h4>



<p class="has-medium-font-size">當我們獲得&#8221;汽庫存銷售比&#8221;時，我們還想獲得其他汽車相關數據，像是&#8221;美國國內汽車製造數 (DAUPSA)&#8221;和&#8221;汽車零售銷售數 (DAUTOSA)&#8221;，之後將指標疊圖，做更細部的汽車進銷存分析。要怎麼知道汽車的索引還有哪些指標呢？<br>我們可以從 <a href="https://fred.stlouisfed.org/docs/api/fred/series_categories.html" target="_blank" rel="noopener">fred/series/categories</a> 獲得 AISRSA的索引分類資料，從下圖的程式回傳資料可以得知，上層索引名稱為Motor Vehicles，id為32993。</p>



<pre class="wp-block-code"><code lang="python" class="language-python"># https://fred.stlouisfed.org/docs/api/fred/series_categories.html
# return: {'categories': [{'id': 32993, 'name': 'Motor Vehicles', 'parent_id': 33202}]}
series_id='AISRSA'
res=requests.get(f'https://api.stlouisfed.org/fred/series/categories?series_id={series_id}&amp;api_key={api_key}&amp;file_type=json')
df=json.loads(res.text)
df</code></pre>



<p class="has-medium-font-size">再透過 <a href="https://fred.stlouisfed.org/docs/api/fred/category_series.html" target="_blank" rel="noopener">fred/category/series</a> 對應Motor Vehicles的id32993，取得汽車類別有哪些其他相關指標。再將其他相關指標的id透過前頭提到的<a href="https://fred.stlouisfed.org/docs/api/fred/series_observations.html" target="_blank" rel="noopener">fred/series/observations</a>，取得時間序列資料。</p>



<pre class="wp-block-code"><code lang="python" class="language-python"># https://fred.stlouisfed.org/docs/api/fred/category_series.html

category_id=32993
res=requests.get(f'https://api.stlouisfed.org/fred/category/series?category_id={category_id}&amp;api_key={api_key}&amp;file_type=json')
df=json.loads(res.text)</code></pre>



<p class="has-medium-font-size">覺得檢索方法複雜的，也可以透過網頁點選獲取相關id。</p>



<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="666" data-id="3592" src="https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.53.17-1024x666.png" alt="截圖 2022 05 25 下午12.53.17" class="wp-image-3592" srcset="https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.53.17-1024x666.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.53.17-300x195.png 300w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.53.17-768x499.png 768w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.53.17-1536x999.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.53.17-2048x1332.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="FRED總體經濟指標輕鬆抓|美國汽車指標|美股回測外掛教學 19"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="674" data-id="3591" src="https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.56.43-1024x674.png" alt="截圖 2022 05 25 下午12.56.43" class="wp-image-3591" srcset="https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.56.43-1024x674.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.56.43-300x198.png 300w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.56.43-768x506.png 768w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.56.43-1536x1012.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午12.56.43-2048x1349.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="FRED總體經濟指標輕鬆抓|美國汽車指標|美股回測外掛教學 20"></figure>
</figure>



<h2>資料應用範例</h2>



<h3>美國汽車相關總體經濟指標繪圖</h3>



<p class="has-medium-font-size">FRED只有單指標的繪圖，但透過api的資料結合plotly，我們可以很輕鬆客製化車用數據儀表板，像系的程式見文尾的colab檔案。</p>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="321" src="https://www.finlab.tw/wp-content/uploads/2022/05/newplot-7-1024x321.png" alt="newplot 7" class="wp-image-3578" srcset="https://www.finlab.tw/wp-content/uploads/2022/05/newplot-7-1024x321.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/05/newplot-7-300x94.png 300w, https://www.finlab.tw/wp-content/uploads/2022/05/newplot-7-768x241.png 768w, https://www.finlab.tw/wp-content/uploads/2022/05/newplot-7-1536x482.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/05/newplot-7.png 1673w" sizes="(max-width: 1024px) 100vw, 1024px" title="FRED總體經濟指標輕鬆抓|美國汽車指標|美股回測外掛教學 21"><figcaption>美國汽車總經指標圖</figcaption></figure>



<h3>何時買的到新車?</h3>



<p class="has-medium-font-size">總經數據週期長，很少拿來直接交易應用，但若到極端值，倒是可以注意一下大局下的細節。</p>



<p class="has-medium-font-size">2008、2020年的經濟衰退造成汽車庫存銷售比攀升到3以上的高水位，但指標轉壞的數據公告時，汽車類股股價早已下跌一大段，反而是中長線好買點，總經數據的遞延性是要注意的地方。</p>



<p class="has-medium-font-size"><br>疫情後，美國汽車庫存銷售比受到汽車晶片缺乏的影響，雖然去年一直有新聞說會緩解，但新車製造數始終起不來，庫存銷售比現在低到只剩0.373，持續創造歷史低點，此現象前所未見。<br><br>正常來講，這個比率會大於1，確保有足夠數量應對市場需求。2015年來庫存去化到現在，美國車商如福特 (F)、通用 (GM)手上幾乎沒有新車庫存，在銷售數據不變下，庫存用盡會遇到無貨可賣的窘境。這連帶引發中古車價飆高、車用零組件廠商營收衰退、高端新車買不到等問題。前陣子台積電釋出消費電子有動能減緩的現象，手機鏡頭廠大立光也對未來展望保守，這兩家法說和財測都有一定參考價值。高毛利的手機晶片過去是晶圓代工廠的製造優先名單，汽車晶片相對低毛利，過去兩年在消費電子熱潮、晶圓代工產能有限下，只能委屈排在優先名單後。現在大廠釋出產業變化的看法，汽車電子能不能趁這個機會佔到產能，真的解決晶片荒呢？就看汽車庫存銷售比能不能物極必反，產生訂單遞延的爆發效應。除了整車廠，哪一些美股新車零組件能受惠呢？汽車族群經過利空測試後，復甦期與沈寂的股價表現值得留意。</p>



<h3>美股回測</h3>



<p class="has-medium-font-size"><a href="https://ai.finlab.tw/" target="_blank" rel="noopener">FinLab量化平台</a>目前沒有對外開放美股資料的使用，但其實回測模組是有相關的接口讓大家自由回測全球市場。以下會使用美股汽車製造商的股價與汽車總經數據做簡單的策略回測範例，向大家示範如何串接美股資料套用回測程式。</p>



<h4>美股資料爬蟲</h4>



<p class="has-medium-font-size">下列是運用yahoo資料源爬取美股股價，程式修改來自於這篇&#8221;<a href="https://www.finlab.tw/%e7%94%a8%e7%88%ac%e8%9f%b2%e7%88%ac%e5%85%a8%e4%b8%96%e7%95%8c%e8%82%a1%e5%83%b9/">用爬蟲爬全世界股價</a>&#8220;</p>



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

# Get an instance of a logger
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

auto_manufacturers = {
    "BLBD": "BLUE BIRD CORP",
    "ELMS": "ELECTRIC LAST MILE SOLUTIONS INC",
    "F": "FORD MOTOR CO",
    "FFIE": "FARADAY FUTURE INTELLIGENT ELECTRIC INC",
    "FSR": "FISKER INC",
    "GM": "GENERAL MOTORS CO",
    "GOEV": "CANOO INC",
    "HYZN": "HYZON MOTORS INC",
    "LCID": "LUCID GROUP INC",
    "NKLA": "NIKOLA CORP",
    "PTRA": "PROTERRA INC",
    "RIDE": "LORDSTOWN MOTORS CORP",
}


def crawl_yahoo_finance(targets, all_data=True):

    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
    data = []
    for stock_id in targets:
        now = datetime.datetime.now()
        now_timestamp = int(now.timestamp()) + 86400
        if all_data:
            start_time = 0
        url = f"https://query1.finance.yahoo.com/v7/finance/download/{stock_id}?period1={start_time}&amp;" \
              f"period2={now_timestamp}&amp;interval=1d&amp;events=history"
        try:
            response = requests.get(url, headers=headers)
            f = io.StringIO(response.text)
            df = pd.read_csv(f, index_col='Date', parse_dates=['Date'])
            df = df[~df.index.duplicated(keep='last')]
            df['stock_id'] = stock_id
            df = df.reset_index()
            df = df.rename(columns={'Date': 'date', 'High': 'high', 'Low': 'low', 'Open': 'open', 'Close': 'close',
                                    'Volume': 'vol', 'Adj Close': 'adj_close'})
        except Exception as e:
            logger.error(e)
            df = None
        data.append(df)

    df = pd.concat(data)

    return df


auto_price = crawl_yahoo_finance(auto_manufacturers.keys())
# 處理股價格式成pivot
adj_close = auto_price.pivot(index='date', columns='stock_id', values='adj_close')
adj_close = FinlabDataFrame(adj_close)</code></pre>



<h4>總經指標格式處理</h4>



<p class="has-medium-font-size">總經指標要注意處理date，上月資料於近月底公布，ex:2021-4-30公告 2021-03月份數據，所以要使用date_range另外生成往後推的日期數列。<br>將汽車類股的stock_id對應進去，每一欄stock_id都有總經數據，並將總經數據dataframe套用到FinLab模組的FinlabDataFrame物件，方便之後選股條件交集運算。</p>



<pre class="wp-block-code"><code lang="python" class="language-python">aisrsa_df = pd.DataFrame(aisrsa['observations'])
aisrsa_df['value'] = aisrsa_df['value'].astype(float)
dates = pd.to_datetime(aisrsa_df['date'])
start = dates.iloc[0]+ relativedelta(months=1)
end = dates.iloc[-1]+ relativedelta(months=2)
update_date = pd.date_range(start=start,end=end,freq='M')
aisrsa_df = pd.DataFrame({i:aisrsa_df['value'] for i in auto_manufacturers.keys()})
aisrsa_df.index = update_date
aisrsa_df.index.name = 'date'
aisrsa_df = FinlabDataFrame(aisrsa_df)
aisrsa_df</code></pre>



<h4>選股條件</h4>



<p class="has-medium-font-size">非常簡單，只有兩個條件。<br>還原股價站上月線，每月換股。<br>汽車庫存銷售銷售比大於12日均線，運用指標遞延的特性，抓汽車製造循環。</p>



<pre class="wp-block-code"><code lang="python" class="language-python">cond1 = adj_close &gt; adj_close.average(20)
cond2 = aisrsa_df &gt; aisrsa_df.average(12)
position = cond1 &amp; cond2</code></pre>



<h4>美股市場market_info設定</h4>



<p class="has-medium-font-size">這一步是將美股回測套用到FinLab的關鍵。<br>回測工具 sim(market=&#8221;TWSTOCK&#8221;) 會依照個別市場的MarketInfo物件，拉取對應市場的資料，目前內建market只有TWMarketInfo (台股)、CryptoMarketInfo (加密貨幣)，所以要外插一個USMarketInfo 給market參數。<br>USMarket的benchmark改用SP500指數。<br>回測若要upload，要注意時間序列長度有寫入限制，範例回測2000年後的數據。</p>



<p class="has-medium-font-size">程式如下:</p>



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

class USMarketInfo(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):
            trade_at_price.name = position.name
            return trade_at_price.to_frame()

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

        if isinstance(trade_at_price, str):
            if adj &amp; (trade_at_price=='close'):
                trade_at_price = 'adj_' + trade_at_price

            price = auto_price.pivot(index='date', columns='stock_id', values=trade_at_price)
            return price

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

report = sim(position=position.loc['2000':],resample='M',market=USMarketInfo,upload=True,name='test',stop_loss=0.1,position_limit=0.33)
report.display()</code></pre>



<figure class="wp-block-image size-large"><img loading="lazy" width="1024" height="430" src="https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午2.09.28-1024x430.png" alt="截圖 2022 05 25 下午2.09.28" class="wp-image-3593" srcset="https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午2.09.28-1024x430.png 1024w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午2.09.28-300x126.png 300w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午2.09.28-768x322.png 768w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午2.09.28-1536x645.png 1536w, https://www.finlab.tw/wp-content/uploads/2022/05/截圖-2022-05-25-下午2.09.28-2048x860.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" title="FRED總體經濟指標輕鬆抓|美國汽車指標|美股回測外掛教學 22"></figure>



<h2>結語</h2>



<p class="has-medium-font-size">這篇文章涉及FRED API串接、美股股價爬蟲、總經指標繪圖、指標解說、美股與總經回測～一條龍帶大家走一遍，開展了FinLab系統更多的可能性。<br> 一樣附上程式範例檔，一同來開發多元市場的策略吧！</p>



<h3><a href="https://drive.google.com/file/d/1fHDkeLZL12uDkb3uXBhq89VlXFuyGsl4/view?usp=sharing" target="_blank" rel="noopener">colab範例</a></h3>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/fred%e7%b8%bd%e9%ab%94%e7%b6%93%e6%bf%9f%e6%8c%87%e6%a8%99%e8%bc%95%e9%ac%86%e6%8a%93%e7%be%8e%e5%9c%8b%e6%b1%bd%e8%bb%8a%e6%8c%87%e6%a8%99%e7%be%8e%e8%82%a1%e5%9b%9e%e6%b8%ac%e5%a4%96%e6%8e%9b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3577</post-id>	</item>
	</channel>
</rss>
