モメンタムアルファ戦略


作成日: 2023-11-23 11:34:40 最終変更日: 2023-11-23 11:34:40
コピー: 1 クリック数: 727
1
フォロー
1617
フォロワー

モメンタムアルファ戦略

概要

Momentum Alpha策略は,指標の資産のシャープ比率とアルファ値を計算して,それが正のモメンタム効果があるかどうかを判断する.シャープ比率とアルファが同時に正であるとき,資産がモメンタムにあると考え,多めにする.指標が同時に負であるとき,平仓する.

戦略原則

この戦略の核心指標は,シャープ比率とアルファである.シャープ比率は,資産のリスク調整後の収益を反映し,アルファは,資産の相対市場基準の過剰収益を反映している.両方が正であるとき,資産はリスク調整の収益が高く,市場よりも優れているパフォーマンスを有していることを示し,したがって多額の取引を行う.両方が負であるとき,モメンタムは消滅し,したがって平仓する.

具体的には,戦略はまず,最近180日間のシャープ比率を計算する.シャープ比率の計算式は: ((日平均リターン - リスクのないリターン) /日平均リターン差.ここでは,開場価格と前日の閉場価格を計算する日平均リターンの平均と標準差を使用する.シャープ比率が1より大きいときは,資産のリスク調整後のリターンが高いことを示す.

同時に,戦略は,最近180日間のアルファを計算する. アルファは,市場モデルによって計算される: アルファ = 資産の実質収益率 - (市場収益率 × ベータ). ここでは,標識された資産の日々の収益率とスタンプラー500指数の日々の収益率を計算する. アルファが0より大きいときは,資産の実際の収益が市場基準収益より高いことを示す.

したがって,シャープ比率とアルファが同時に正であるとき,多めに行います.両方が同時に負であるとき,平仓します.

優位分析

この戦略の最大の利点は,Momentumによって判断され,大市場と一部の株式の特定の期間の成長機会を捉えることができること,また,リスクを制御することで,長期の株価災害を回避できることです.具体的には以下のように分析されます:

  1. シャープ比率を計算すると,最近のモメンタムの状況が反映され,いくつかの大市場と株の引き上げの上昇期を捉えることができる.アルファを計算すると,比率の余剰利益が反映され,より弱い指標が排除される.

  2. シャープ比率とアルファを総合的に考慮し,長期短期モメンタムを制御することで,正のモメンタムを持つかどうかをより正確に判断することができる.

  3. モメンタムが消えると,大きな損失を避けるために,すぐに止めてください. これは,上昇した物価が過ぎてすぐに止まる戦略です.

  4. 単一のMomentum指標よりも,この戦略はより安定し,同時により柔軟であり,株式と大市場の両方で使用できます.

リスク分析

この戦略には利点があるものの,以下のリスクがあります.

  1. モメンタム指数は,引き下がる可能性がある.市場が転じると,モメンタム株は,より速い下落に直面する可能性がある.このとき,戦略は大きな損失を被るだろう.パラメータを適切に調整するか,または他の指標の組み合わせと使用することを考慮することができる.

  2. アルファとシャープ比率指数の計算には時間遅れがある.市場が急速に変化するときに,指数の値は遅滞して,最新のトレンドの変化をタイムリーに反映することができない.計算周期を短縮することを考えることができる.

  3. 多空のポジションは制御されていないため,リスクが過度に集中する可能性があります.市場状況や資金状況に応じてポジションのサイズを適切に制御することを考えることができます.

  4. 回測データは不十分であり,実体効果は疑わしい.より長い時間帯と異なる品種の回測検証を追加すべきである.同時に,パラメータ最適化周期を短縮し,過適合を避けるべきである.

最適化の方向

この戦略は,以下の点で最適化できます.

  1. 価格が大きな1日間の下落が発生した場合,大きな損失を回避するために,ストップ・ロスを設定できます.

  2. ポジション管理を増やす.市場変動率などの指標に基づいて,ポジション開設毎の資金量を制御することができる.単一の損失のリスクを減らす.

  3. 最適化パラメータ。 異なる時間周期のパラメータをテストして,異なる規格と市場状況の特性をより適合させることができる。 また,異なるパラメータの組み合わせの効果をテストすることもできる。

  4. フィルタリング条件を追加します. 取引量や変動率などの条件を設定できます.

  5. 他の策略と組み合わせる.類似のトレンド追跡策略と組み合わせることを検討する.効果の安定性を高め,単一の策略のリスクを分散させる.

要約する

Momentum Alpha戦略は,資産のリスク調整収益と相対市場のパフォーマンスを同時に判断することによって,動的にポジティブなMomentumの機会を捉えます.単一のMomentum指標と比較して,判断がより正確で,適用範囲がより広く,リスク抵抗性がより強いという利点があります.しかし,この戦略には,一定の撤退と遅れのリスクが依然として存在し,現金での安定した利益を得るためには,他の戦略との組み合わせで繰り返し最適化する必要があります.

ストラテジーソースコード
/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-16 04:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Alpha strategy - simple version", overlay=true)

//by NIKLAUS
//USE ON DAILY TIMEFRAME TO DETECT MOMO STOCKS & ETFs AND TRADE THEM
//USE ON 5MIN CHART FOR INTRADAY USAGE
//examples to try this on: GER30, NAS100, JPN225, AAPL, IBB, TSLA, FB, etc.

//This Strategy goes long when Sharpe Ratio is > 1 and Alpha against the S&P500 is generated. It exits when conditions break away.

//https://en.wikipedia.org/wiki/Alpha_(finance)
//------------------------------------------------------------------------------------------------------------------------------------
//Alpha is a measure of the active return on an investment, the performance of that investment compared to a suitable market index. 
//An alpha of 1% means the investment's return on investment over a selected period of time was 1% better than the market during that same period, 
//an alpha of -1 means the investment underperformed the market. 
//Alpha is one of the five key measures in modern portfolio theory: alpha, beta, standard deviation, R-squared and the Sharpe ratio.


//simplified sharpe
src = ohlc4, len = input(180, title = "Sharpe/Alpha/Beta Period")
pc = ((src - src[len])/src)
std = stdev(src,len)
stdaspercent = std/src
sharpe = pc/stdaspercent


//alpha
sym = "BTC_USDT:swap", res=timeframe.period, src2 = close
ovr = request.security(sym, res, src2)

ret = ((close - close[1])/close)
retb = ((ovr - ovr[1])/ovr)
secd = stdev(ret, len), mktd = stdev(retb, len)
Beta = correlation(ret, retb, len) * secd / mktd

ret2 = ((close - close[len])/close)
retb2 = ((ovr - ovr[len])/ovr)

alpha = ret2 - retb2*Beta
//plot(Beta, color=green, style=area, transp=40)


smatrig = input(title="Sensitivity",  defval=2, minval=1, maxval=3) 
bgcolor (sma(sharpe,len/smatrig) > 1 and sma(alpha,len/smatrig) > 0 ? green : red, transp=70)

if (close > open) and (sma(sharpe,len/smatrig) > 1) and (sma(alpha,len/smatrig) > 0)
    strategy.entry("Alpha", strategy.long)
strategy.close("Alpha", when = (sma(sharpe,len/smatrig) < 1) or (sma(alpha,len/smatrig) < 0))