Home Creators Posts Import Register Favorites Logout
haven't archived this post yet. have a subscription? use the importer!

Content

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

就係,我寫而個新策略,風險回報相當高,但絕對回報不高,唔知讀者看完會否理解我寫的原意? 所以,如果你係知道點解,請你一定要係帖的留言區話聲我知,或者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)

Files

Previews only

Comments

dennis lee

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, 所以想請教你, 感謝

阿程量化交易

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

Flexy

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

阿程量化交易

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