2021年4月5日 星期一

[量化狼][程式交易]類股輪動模型建構(十四)-全球股市

今天又到了狼來分享類股輪動模型的時間,本次狼並不繼續說明類股模型的內容,而是分享狼每天會觀察的市場細節。

狼習慣每天過濾全球的股債匯市,由此看出新的投資機會和全市場的強弱方向,而觀察的方式可以使用狼在類股輪動模型中所教的概念。這篇狼主要使用全球指數為主,由於要計算站上200日均線的股票比例過於麻煩,可以直接使用指數偏離200日均線的百分比排行作為整個市場的全景圖。

故我們要設計的邏輯很簡單

1. (指數收盤 - 指數200MA)÷指數收盤 當作是市場的乖離

2.由乖離率進一步作熱點圖或相關的訊號表

上面這兩個簡單的步驟就可以將全球股市的強弱程度設計出來,甚至能拿來當作交易策略


由上圖可知目前瑞典、瑞士股市、印度、南非、道瓊、標普是全球指數中表現最好的,而陸股、土耳其、巴西...等,則是全球市場中表現最差的股市,然後再用一樣的方式找出區分出匯價的強弱表現,你就可以設計出球球最值得投資股匯雙漲的市場。狼這一系列的文章,可能就到這一個段落,希望有幫助到各位朋友。

類股輪動模型(四)-進出場點








2021年3月30日 星期二

[量化狼]上帝實驗室~風險控管的神秘%%數

 




從上次可以發現DD 太大的問題所以我們嚴格來檢討

到底賭注下一次10%的風險控管有什麼問題?

所以這次再來扮演一次上帝 同樣的策略再跑一次

只是這次是時光回溯10000次 取平均值, 下注比例從1%~100%

同樣一個策略   參數一樣是

勝率  31%               賺賠比 2.76     初始資本100萬

交易天數 250         時光回溯次數 10000次         下注比例%  1%~100%

    
       由上方看出   下注比例大於12%以後,大概就是完全陣亡的比例
       再來 我們觀察到一個有趣的現象
       下注比例在   5% 6% 7%  大概可以達到獲利最大值
      那這個是甚麼呢?  這個其實就是凱利公式帶出來的值 6% (我稱之為神祕%%數)
       當然因為實驗模擬隨機性的問題,所以出來的數值略有誤差    
       多實驗幾次,平均大概就會落在6%左右
       

2021年3月26日 星期五

[量化狼]策略或資產配置又失效了? 看看怎麼解決吧!

 




        又有粉絲問我,他有做很多商品、每個商品也有很多策略,希望能透過多商品多策略達到互補來平滑損益,但為什麼他的策略和資產配置常常會失效反而變成輸錢的加成效果了?


        先舉個簡單的例子,如果投資組合只包含鴻海(2317)和國泰金(2882)兩個商品,兩者相關係數約50%並不高(原則上相關性越低越能互補),我們平均分配權重希望能達到互補。


        然而,我們可發現投資組合的Sharpe Ratio比只做鴻海的還低、無法有效互補!(下表)



        為何會這樣呢?其實相關性在不同的時間是不太一致的,可發現有某幾段時間相關性飆高根本沒有互補作用,像是2008年和2020年。(下圖)



        聰明的各位應該注意到了吧?資產無法互補的其中一項因素就是:在市場風險情緒高、波動大的時候,各個資產的相關性都會飆高,因為都在跌!下圖可知在台指VIX上升時、鴻海和國泰金的相關性都在高水位。

    

        因此,在這例子裡需要在投資組合無法互補時降低總體部位;若在VIX>25時我將總部位縮成一半、等VIX<=25在加回來,此時投資組合的Sharpe Ratio顯著升高,並且比單做鴻海還高了!(下表)





        回覆粉絲的問題,其實就是你的配置失效啦!你不能只用一樣的權重配到底,也不能總體部位、槓桿都維持一直不變。


        配置和建構投資組合是門很高深的學問,需要大量的研究和回測,這次的例子只是一小部分,要真正嚴肅的打文章怕大家會看不懂啦!然後點閱率又很低QQ,如果這次大家捧場的話我就再來打打進階一些的。




2021年3月22日 星期一

[量化狼][程式交易]類股輪動模型建構(十三)-資料整理

              

今天又到了狼來分享類股輪動模型的時間,這次狼要分享簡單的程式給大家。我們做量化回測或設計類股模型最重要的細節如下,進入主題之前希望大家在看過一遍。

類股輪動模型建構(十)-細節細節

細節中,狼在最後強調了報價準確度的重要性,並且也談到Yahoo Finance 」上面的報價源可以Download下來作為我們基礎的報價源,假設我要抓取2330的報價,點選下面網址,案右方的Apply就可以匯出成Excel檔整理,在Excel上基本就可以處理很多事情。

https://finance.yahoo.com/quote/2330.TW/history?p=2330.TW


題外話,狼的朋友們有時會和狼說,『量化交易好難』,『我不會寫程式耶』...,狼都會說『請問你會使用Excel嗎?』,會不會一些基本的函數《ex : AVERAGE、SUM、VLOOKUP、IF、STDEV、MAX、MIN、RANK、OFFSET....》,你對生活或數字有沒有基本的《邏輯推演》的能力? 如果是連邏輯都不好,那確實量化對你來說非常困難,但如果還ok的話,上述函式就算不會,google學一下就會了呀,所以說不會其實就是【懶】【沒熱情】【沒興趣】。重點是,量化不一定要學多難的程式,狼自己光用Excel就可以建構很強大的回測和分析系統。

但狼今天的主題就是分享一些Python基礎的資料處理方法,因為當你到達一定程度,想要建構更有彈性的回測架構,用Python還是比較適合的。下面狼盡量寫得很簡單,狼不可能把自己架構完整的模組奉送給各位,因為那是狼花許久時間完成的心血,但狼能做到的是給各位一些釣竿,倘若對爬蟲有興趣,你們也不用問我,HaHow或Youtube上面有很多學習程式的資源。進階的程式學習方面請自行去找資源學習。

下面程式碼內容就幾個動作而已
1.下載Yahoo Finance報價
2.去證交所確認該股票的產業別
3.整理

當然後續你還可以將資料存在MySQL或其他資料庫中,並且每次只需要更新最新報價就好,另外,亦也可不要根據證交所的產業別的定義,而是自行定義產業細節,這都可以去嘗試,而整個類股輪動模型就是架構在這些資料處理上基本上上面搞定了,這個輪動模型說實在程式碼非常簡單,加減乘除而已。

**************Python 程式碼*************
from yahoo_historical import Fetcher #下載yahoo fin Data
import requests # 爬蟲模組
import pandas as pd 

#下載該網頁的資料 -> 本國上市證券國際證券辨識號碼一覽表
res = requests.get("http://isin.twse.com.tw/isin/C_public.jsp?strMode=2")


#讀取進Dataframe中
df = pd.read_html(res.text)[0]

#複製代碼 & 產業別
DataSort = df.iloc[:,[0,4]].copy()

#將資料整理併分割成正確格式
DataSort.iloc[:,0] = DataSort.iloc[:,0].str.split('\s', 1, expand=True)

#DataSort
##############################################################

#想抓取哪一檔股票報價
StockName = '2330.TW'
#報價儲存
Data = Fetcher(StockName, [2007, 1, 1], [2021, 3, 20])
StockData = Data.getHistorical()
StockData['Name'] = StockName.replace(".TW", "")
StockData
##############################################################
#複製上述兩者
Data1 = StockData.copy()
Data2 = DataSort.copy()

#確認股票的產業別
Data2 = Data2[Data2.loc[:,0] == '2330'].values
Data2 =  Data2[0,1] #array
StockData['Type'] = Data2
StockData



**************Python 程式碼*************

使用Yahoo Finance的重點是裡面有還原權值的adj Close報價,用這報價計算出來的損益才會比較正確,策略你可以用還原權值的收盤或者沒還原的收盤來設計,但損益最好還是用還原權值的收盤。確認資料的報價和類別後,根據前面的文章你就可以想辦法設計類排名囉。















2021年3月19日 星期五

[羊群行情]最潮的交易,依然是放空美債 - 解析 SLR 與美債殖利率走勢

 



就在剛剛,美債殖利率又噴發了,因為美聯儲宣佈不繼續放寬 SLR,將於 2021/3/31 到期,放空美債依然是現在最潮的交易,所以今天來幫大家解析一下 SLR。

2021年3月15日 星期一

[Python][量化狼]為何交易總是從天選之人變地獄倒霉鬼

 


上一次談到 蒙地卡羅模擬小樣本內隨機性的問題

蒙地卡羅模擬下的交易天選之人

隨後來了廣大的迴響,所以今天就來細看一下數據分析


策略原始設定是 勝率31% 賺賠比2.7 ,每次用資金的10%去下注,實驗結果是
即便是期望值大於0的策略
在小樣本內,還是有接近40%會賠錢

2021年3月14日 星期日

[量化狼]資金膨脹後的槓桿陷阱

        有粉絲問我,在回測完之後他都不知道要下幾口、槓桿不知道要開多大,其實這是一個很深的問題,而且對初學者來說是個交易大陷阱!

        大家在做交易時,通常賺了50%部位就會等比增加50%對吧?但常常回測的時候很多人不會考慮到『贏錢時部位會等比增大』這個問題,那這會造成實際交易時會有什麼狀況發生呢?

        考慮極端一點的例子:假設我第一天賺50%、第二天賠50%,那在回測時常常會回測出兩天損益 = 50% + (-50%) = 0%,但真實狀況卻是第一天賺50%本金變成原本的1.5倍,當我用1.5倍部位輸的錢卻是1.5倍的50%,也就是兩天損益 = ( 1 + 50% ) * ( 1 - 50%) - 1 = -25%。

        再深入一點點,我們可以考慮槓桿的問題,由隨機跑出的 Sharpe Ratio = 1.25 的損益曲線(下圖藍線)長相十分精美,一年下來可以獲利25.67%,但如果我們加了10倍槓桿,卻只能增加獲利到54.47%,獲利並不是增加10倍!

 


        當你增加槓桿的同時,『策略賺錢的效率一直下降』,事實上,如果你一直增加槓桿,獲利還有可能變成負的。