NokiMo
阿程量化交易
阿程量化交易

patreon


【Sharpe Ratio 1.28 的日股期指交易策略】

每次去到寫新策略個陣,我個腦都即刻諗起一件事:

就係,我寫而個新策略,風險回報相當高,但絕對回報不高,唔知讀者看完會否理解我寫的原意? 所以,如果你係知道點解,請你一定要係帖的留言區話聲我知,或者like返人地留言都可以,起碼俾我知道你明白,我估而度起碼有2﹑3成朋友會明。

入正題,今次而篇文講點trade日股Nikkei225期指 (Long),用的預測因子就係USD/JPY。我有個老死係forex trader,以前問過我,我係大fund做過equities + futures team,無可能無用過currency spot rate黎做預測,咁我當然有同佢講過我既諗法,其實唔難,就係下面既做法。佢痴線到講竟然同佢呀頭做緊既野極為類似,只不過佢呀頭係人手做,但每年都穩定meet到target。係真人真事無老吹,我先知原來大家做緊既野都係大同小異。

好喇,先俾個大概idea大家,就係如果短時間內USD/JPY處於一個相對高的水平(即日元相對弱勢),就可以買入日股期指並持倉一日,夏普率有1.28 (交易成本已計入)。但點解個策略會work? 主要有以下兩個原因:

1. 日本股市的外資佔比約為30%。即係話對外資來講,因為股票的收益通常都以美元來計價,如果日元相對處於低位,亦即美元比日元更值錢個陣,外資日後在日股市場拿到的股息以及資本利若換回美元時,預期會賺更多 (而非當刻的更少),變相容易令佢地買入日股的意欲更大(買更多股數),從而短期拉高日股期指。

2. 如果USD/JPY上升,通常會被解讀為日本企業出口競爭力提升。雖然個經濟上的effect傳統黎睇係慢慢先顯露出黎,但投資者會預期企業業績會有改善,從而令市場氣氛變得非常樂觀,咁而個effect就唔係慢慢顯露,而係會直接反映係日股期指的短期走勢上。

回測規則:

Step 1. 計出USD/JPY的 daily returns (用closing price)

Step 2. 計出rolling 10日 mean of daily returns

Step 3. 若rolling 10日 mean of daily returns > rolling 50日內的90 percentile

Step 4. 在最近一天的日股期貨指數(Nikkei 225) 收市時買入倉位 (在出signal後大概10個鐘的果個close)

Step 5. 持倉1日然後在收市平倉

而度有個極危險的位,大家要留意。要知道USD/JPY,如果你睇返上面Bloomberg DES圖的話,你見到佢的closing在04:59香港時間,但其實而個closing,係講緊昨日個支日線的close。舉個例,2025年3月18日的USD/JPY closing,其實係係2025年3月19日凌晨04:59。所以,你做backtest的時侯,記得align返個日期,最好將USD/JPY的close放返同Nikkei future 的日期一樣,有機會就係將2025年3月18日的USD/JPY closing 直接放落一格,去到3月19日,變相同日股期指的日期對整,然後先再做回測。而個都係好多老手唔留神就會做錯,然後得出一條好靚的curve但trade trade下先發覺唔對路的現象。

至於而幅NI1 DES圖,日股指數期貨的收市時間在香港時間15:00,好清楚,所以應該無咩會搞錯。

Asset trading: 日股期指 (Nikkei225) (Year 2008 Mar - 2025 Mar) (Transaction Cost: 2bps) (Long) 

Performance Statistics:

搵一個新策略其實真係唔難,最難個步係踏出第一步然後開始嘗試去多策略﹑多品種咁去做實測forward testing。有句說話我一直好buy,只要做好風控,唔好蝕太多錢,錢自然會黎搵您。大家加油。

Cheers, 

阿程

(公開量化策略系列 13)

(部分上圖來源自Bloomberg)

【Sharpe Ratio 1.28 的日股期指交易策略】 【Sharpe Ratio 1.28 的日股期指交易策略】 【Sharpe Ratio 1.28 的日股期指交易策略】 【Sharpe Ratio 1.28 的日股期指交易策略】

Comments

策略對regime類型變化敏感度小的用rolling,大的用expanding window,例如based on interest rate changes 及當時水平的一啲幾十年backtest的策略

SY

我想問有冇話幾時會用expanding window vs rolling window? 係唔係因為expanding window 有機會會面對regime shift , 所以唔會經常用?有冇策略係做緊expanding window? If so , 會唔會話幾耐reset一次個起點?thanks!

Flexy

正確,策略穩定性及策略類型風險分散,遠遠重要過高回報。 pseudo codes 層面上我理解你的意思,但yahoo finance 拿的數據的 closing time point有對過在現實時間裡幾點嗎?

SY

thanks 阿程. 原意係咪策略穩定性重要過高回報(高波動性)? 另外關於策略, 因為我整極個signal 都係0, 想睇吓我有無理解錯/做錯code? jpy = yf.download("JPY=X") jpy['v_chg'] = jpy['Close'].pct_change() jpy['10SMA'] = jpy['v_chg'].rolling(window=10).mean() 之後df = merge 咗"JPY=X" 以及"^N225" df['50SMA_90p'] = df['v_chg'].rolling(window=50).quantile(0.9) df.loc[df['10SMA'] > df['50SMA_90p'], 'signal'] = 1 因為咁的話, 10SMA 無一個大過50SMA_90p, 所以想請教你, 感謝

dennis lee


Related Creators