<?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>sunburst &#8211; FinLab</title>
	<atom:link href="https://www.finlab.tw/tag/sunburst/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.finlab.tw</link>
	<description>深入淺出的量化投資，讓你在在茫茫股海中，找到專屬於自己的投資方法</description>
	<lastBuildDate>Wed, 28 Sep 2022 03:29:23 +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>sunburst &#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>Plotly-Sunburst｜輕鬆監控多策略部位｜DashBoard 應用教學(5)</title>
		<link>https://www.finlab.tw/plotly-sunburst-dashboard/</link>
					<comments>https://www.finlab.tw/plotly-sunburst-dashboard/#respond</comments>
		
		<dc:creator><![CDATA[Ben]]></dc:creator>
		<pubDate>Fri, 17 Jun 2022 00:34:08 +0000</pubDate>
				<category><![CDATA[生產力]]></category>
		<category><![CDATA[FinLab 量化平台]]></category>
		<category><![CDATA[Python新手教學]]></category>
		<category><![CDATA[Plotly]]></category>
		<category><![CDATA[sunburst]]></category>
		<category><![CDATA[多策略]]></category>
		<category><![CDATA[資料視覺化]]></category>
		<guid isPermaLink="false">https://www.finlab.tw/?p=3858</guid>

					<description><![CDATA[Plotly - Sunburst 是不是十分絢麗呢！可以作多層次是覺化呈現及圖表互動。利用FinLab套件的 StrategySunburst 可以很輕鬆地將多策略資料漂亮地呈現出來，並觀察裡面的insight，當作其中一個管理多策略的工具，不同的繪圖參數設定能玩出不同的效果，趕快來試試吧！]]></description>
										<content:encoded><![CDATA[
<h2>開發動機</h2>



<p class="has-medium-font-size">你的 FinLab 量化平台的策略儀表板上是不是有很多豐富的策略呢？<br>如果答案為是，代表你很棒，嘗試了許多量化策略的實驗，有些策略拿來實驗想法、有些是真的拿來實戰。這時你可能會有下面幾個問題想處理，我想監控儀表板上真正拿來實戰的策略，看每個策略綜整後的部位為何？策略們的標的集中在哪些類股？哪些標的被多個策略同時選中或是比重最大？這時 Sunburst (旭日圖) 可能是你監控策略部位最好的資料視覺化武器之一，FinLab 已開發好工具了！來看看怎麼使用吧！</p>



<h2>Sunburst 是怎樣的圖表？</h2>



<p class="has-medium-font-size">Sunburst 是圓餅圖的進化版，可以顯示分層數據的比例關係，不同的子資料對應於不同級別層次結構，你可以想成是 <a href="https://www.finlab.tw/dashboard2-plotly-treemap/">Treemap</a> 的變化版，都可以使用面積與顏色呈現不同維度的資料，Sunburst 與 Treemap 的差異在允許子資料缺角，不一定要填滿，像是以下的圖例，使用起來比 Treemap 更有彈性，Treemap 就一定要填滿部位。</p>



<figure class="wp-block-image size-full"><img width="903" height="525" src="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-11.png" alt="newplot 11" class="wp-image-3862" srcset="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-11.png 903w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-11-300x174.png 300w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-11-768x447.png 768w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-11-150x87.png 150w" sizes="(max-width: 903px) 100vw, 903px" title="Plotly-Sunburst｜輕鬆監控多策略部位｜DashBoard 應用教學(5) 1"><figcaption>Sunburst 缺角圖<a href="https://plotly.com/python/sunburst-charts/" target="_blank" rel="noopener">https://plotly.com/python/sunburst-charts/</a></figcaption></figure>



<h2>Plotly-Sunburst 基礎教學</h2>



<h3>圖例</h3>



<p class="has-medium-font-size">plotly 官方文件提供了多元的 <a href="https://plotly.com/python/sunburst-charts/" target="_blank" rel="noopener">Sunburst 範例程式</a>，我們的多策略部位 Sunburst 會以色階型態的 Sunburst 範例為底，用色階變化呈現漲跌幅度，用面積顯示部位權重。</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="903" height="525" src="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-13.png" alt="newplot 13" class="wp-image-3863" srcset="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-13.png 903w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-13-300x174.png 300w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-13-768x447.png 768w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-13-150x87.png 150w" sizes="(max-width: 903px) 100vw, 903px" title="Plotly-Sunburst｜輕鬆監控多策略部位｜DashBoard 應用教學(5) 2"><figcaption>色階型 SunBurst </figcaption></figure>



<h3>程式解構</h3>



<pre class="wp-block-code"><code lang="python" class="language-python">import plotly.express as px
import numpy as np
df = px.data.gapminder().query("year == 2007")
fig = px.sunburst(df, path=['continent', 'country'], values='pop',
                  color='lifeExp', hover_data=['iso_alpha'],
                  color_continuous_scale='RdBu',
                  color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop']))
fig.show()</code></pre>



<p class="has-medium-font-size"><code>plotly.express</code> 提供了高封裝程度的 API，讓我們可以用簡單的語法來繪圖，插入資料以 dataframe 來控制。接著說明一下 sunburst 裡的重要參數。</p>



<ul class="has-medium-font-size"><li>path：sunburst 分層路徑，list 資料是 dataframe 裡的欄位名稱，先後順序代表由裡到外的層級。</li><li>values：決定圓餅面積比例的欄位。</li><li>colors：決定圓餅色階的欄位。</li><li>hovers：游標滑過區塊部位時，想外加的顯示欄位。</li><li>color_continuous_scale：色階條樣式，RdBu 是常用樣式，可以自選<a href="https://plotly.com/python/builtin-colorscales/" target="_blank" rel="noopener">其他樣式</a>。</li><li>color_continuous_midpoint：色階中間決定斷點，用來控制色階深淺區間，範例是取平均壽命當中間點。</li></ul>



<h2>StrategySunburst 物件教學</h2>



<p class="has-medium-font-size"><code>finlab.plot.StrategySunburst()</code><br>提供了多策略的資料處理與視覺化功能，並將 plotly sunburst 的繪圖功能包裝進來。</p>



<h3>獲取多策略資料</h3>



<p class="has-medium-font-size">可以用s_data屬性連結到<code>finlab.data.get_strategies()</code>， 取得已上傳的策略資料，像是每個策略的報酬率曲線、策略報酬率統計、近期部位、近期換股日等等，就不用一個個策略回測取得，直接一把抓，並藉由以下範例取得策略名稱和單一策略部位，策略名稱會用於之後繪圖所用的策略框定。<br>取得策略名稱的範例如下：</p>



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

# 實例化物件
strategies = StrategySunburst()
s_data = strategy.s_data
print(f'已上傳的策略名稱:{s_data.keys()}')</code></pre>



<h3>獲取繪圖資料</h3>



<p class="has-medium-font-size"><code>StrategySunburst().get_strategy_df(select_strategy=None)</code></p>



<p class="has-medium-font-size">StrategySunburst 下的 get_strategy_df 方法可獲取繪圖資料所用的 dataframe，</p>



<p class="has-medium-font-size">參數說明如下：</p>



<ul class="has-medium-font-size"><li>select_strategy (dict)：選取的策略與策略對應權重，預設是策略全選，權重為每個策略的資金比例平均。也可以自訂匡選的策略，像若是只想看兩個實戰的策略，並分別設定6成語4成資金比重，可以這樣設定：{&#8216;低波動本益成長比&#8217;:0.6,&#8217;研發魔人&#8217;:0.4}。若有現金的空部位想加入資產配置，可以設定如下，策略名稱為現金，即可創造現金部位 {&#8216;低波動本益成長比&#8217;:0.5,&#8217;研發魔人&#8217;:0.2, &#8216;現金&#8217;:0.2}。</li></ul>



<p class="has-medium-font-size">回傳的 dataframe 中，資料欄位 &#8216;market&#8217; 為資產所屬的市場，目前有 tw_stock (台股) 或 crypto (加密貨幣) 或 現金 選項。</p>



<h3>Sunburst 繪圖</h3>



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

# 實例化物件
strategies = StrategySunburst()

strategies.plot().show()
strategies.plot(select_strategy={'高殖利率烏龜':0.5,'營收強勢動能瘋狗':0.3,'現金流價值成長':0.2}).show()
strategies.plot(select_strategy={'高殖利率烏龜':0.4,'營收強勢動能瘋狗':0.25,'現金流價值成長':0.2,'現金':0.15},path =  ['market', 'category','stock_id','s_name']).show()</code></pre>



<p class="has-medium-font-size"><code>StrategySunburst().plot(select_strategy=None, path=None, color_continuous_scale='RdBu_r')</code></p>



<p class="has-medium-font-size">StrategySunburst 下的 plot 方法提供了繪圖設定，使用短短的程式碼就可以顯示多策略部位圖表。參數承襲 <code>plotly.express.sunburst</code> ，說明如下：</p>



<ul class="has-medium-font-size"><li>select_strategy (dict)：設定選取的策略與策略對應的持股現值權重，預設策略是策略全選，權重策略數的平均值。也可以自訂匡選的策略，像是只想看兩個實戰的策略，並分別設定6成與4成持股現值比重，可以設定成 <code>{'低波動本益成長比':0.6,'研發魔人':0.4}</code> 。若有現金的空部位想加入資產配置，可以設定成 <code>{'低波動本益成長比':0.5,'研發魔人':0.2, '現金':0.2}</code> ，策略名稱為現金，即可創造現金部位。</li><li>path (list)：sunburst 分層路徑，預設由裡到外的分層是 <code>['s_name', 'market', 'category', 'stock_id']</code> ，可以觀察策略持有哪些類股為主。你可以自動設定分層，會有不同的效果，像是也可以設成 <code>['category','stock_id','s_name'] </code> 變成可以看標的被哪些策略同時選到。</li><li>color_continuous_scale (str)：預設為<code>'RdBu_r'</code>，可以自選<a href="https://plotly.com/python/builtin-colorscales/" target="_blank" rel="noreferrer noopener">其他樣式</a>。</li></ul>



<h3>繪圖範例</h3>



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

# 實例化物件
strategies = StrategySunburst()

# 範例1
strategies.plot().show()
# 範例2
strategies.plot(select_strategy={'高殖利率烏龜':0.5,'營收強勢動能瘋狗':0.3,'現金流價值成長':0.2}).show()
# 範例3
strategies.plot(select_strategy={'高殖利率烏龜':0.4,'營收強勢動能瘋狗':0.25,'現金流價值成長':0.2,'現金':0.15},path =  ['market', 'category','stock_id','s_name']).show()</code></pre>



<h4>範例1</h4>



<p class="has-medium-font-size"><code>strategies.plot().show()</code></p>



<p class="has-medium-font-size">不帶任何參數會顯示全部的已上傳策略部位，策略資金分配比率為策略平均分配。</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="1000" height="800" data-id="3947" src="https://www.finlab.tw/wp-content/uploads/2022/06/newplot.png" alt="newplot" class="wp-image-3947" srcset="https://www.finlab.tw/wp-content/uploads/2022/06/newplot.png 1000w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-300x240.png 300w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-768x614.png 768w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-150x120.png 150w" sizes="(max-width: 1000px) 100vw, 1000px" title="Plotly-Sunburst｜輕鬆監控多策略部位｜DashBoard 應用教學(5) 3"><figcaption>顯示全部策略</figcaption></figure>
</figure>



<p></p>



<h4>範例2</h4>



<p class="has-medium-font-size"><code>strategies.plot(select_strategy={'高殖利率烏龜':0.5,'營收強勢動能瘋狗':0.3,'現金流價值成長':0.2}).show()</code><br><br>自選3個策略，設定不同權重，看策略比重、策略持股的產業分佈。面積越大代表市值權重越大。顏色越紅代表上漲幅度越大，越藍代表跌幅越大。點擊策略可以做圖表互動，放大可只看單一策略的 sunburst (右圖)，從圖表觀察到營收策略選到三檔網通股，佔比最大，獲利最高的是6470 宇智，網通族群可能有營收趨勢翻多的群聚性。若是某些族群佔比超過 50% 以上，可能要反過來思考策略是不是太過於相似？可能會有標的不夠分散的風險。</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="1000" height="800" data-id="3865" src="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-16.png" alt="newplot 16" class="wp-image-3865" srcset="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-16.png 1000w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-16-300x240.png 300w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-16-768x614.png 768w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-16-150x120.png 150w" sizes="(max-width: 1000px) 100vw, 1000px" title="Plotly-Sunburst｜輕鬆監控多策略部位｜DashBoard 應用教學(5) 4"></figure>



<figure class="wp-block-image size-large"><img loading="lazy" width="1000" height="800" data-id="3864" src="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-15.png" alt="newplot 15" class="wp-image-3864" srcset="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-15.png 1000w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-15-300x240.png 300w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-15-768x614.png 768w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-15-150x120.png 150w" sizes="(max-width: 1000px) 100vw, 1000px" title="Plotly-Sunburst｜輕鬆監控多策略部位｜DashBoard 應用教學(5) 5"></figure>
</figure>



<p></p>



<h4>範例3</h4>



<p class="has-medium-font-size"><code>strategies.plot(select_strategy={'高殖利率烏龜':0.4,'營收強勢動能瘋狗':0.25,'現金流價值成長':0.2,'現金':0.15},path = ['market', 'category','stock_id','s_name']).show()</code></p>



<p class="has-medium-font-size"><br>自選3個策略並設定現金權重，設定不同權重，除了看策略持股的產業分佈，也可看看標的被哪些策略同時選到。像圖中的 4572 駐龍同時被兩個策略選到，可能是非常厲害的標的喔！</p>



<figure class="wp-block-image size-full"><img loading="lazy" width="1000" height="800" src="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-18.png" alt="newplot 18" class="wp-image-3866" srcset="https://www.finlab.tw/wp-content/uploads/2022/06/newplot-18.png 1000w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-18-300x240.png 300w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-18-768x614.png 768w, https://www.finlab.tw/wp-content/uploads/2022/06/newplot-18-150x120.png 150w" sizes="(max-width: 1000px) 100vw, 1000px" title="Plotly-Sunburst｜輕鬆監控多策略部位｜DashBoard 應用教學(5) 6"></figure>



<h2>結論</h2>



<p class="has-medium-font-size">Plotly &#8211; Sunburst 是不是十分絢麗呢！可以作多層次是覺化呈現及圖表互動。利用 FinLab 套件的 StrategySunburst 可以很輕鬆地將多策略資料漂亮地呈現出來，並觀察裡面的 insight，當作其中一個管理多策略的工具，不同的繪圖參數設定能玩出不同的效果，趕快來試試吧！<br><br><a href="https://drive.google.com/file/d/16c_Oxy6X9qVYYVTTEGgy0fnjg-GI9TH-/view?usp=sharing" target="_blank" rel="noopener">colab 範例檔連結</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.finlab.tw/plotly-sunburst-dashboard/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3858</post-id>	</item>
	</channel>
</rss>
