モメントアルファ戦略

作者: リン・ハーンチャオチャン,日付: 2023年11月23日11時34分40秒
タグ:

img

概要

モメントアルファ戦略は,そのシャープ比率とアルファ値を計算することによって,基盤資産がポジティブなモメントを持っているかどうかを判断する.シャープ比率とアルファの両方がポジティブである場合,ロングになり,両方の指標がマイナスになるとポジションをフラット化する.

戦略原則

この戦略の主な指標は,シャープ比率とアルファである.シャープ比率は資産のリスク調整回報を反映し,アルファは市場基準値よりも過剰な回報を反映する.両方が正である場合,資産がリスク調整回報が高いことを示し,市場基準値を上回る.したがって,ロングポジションが取られる.両方がマイナスになると,勢力がなくなってポジションが平坦化する.

戦略は,まず過去180日間のシャープ比率を計算する.シャープ比率は以下のように計算される: (平均日帰り リスクフリーリターン) /日帰り標準偏差.ここで,日帰り平均と標準偏差は,開通価格と以前の閉店価格を使用して計算される.シャープ比率が1を超えると,資産は比較的高いリスク調整リターンを持っていることを意味します.

同時期に,過去180日間のアルファは計算される.アルファは市場モデルを通じて計算される:アルファ =実際の資産リターン (市場リターンxベータ).ここで,基礎資産とS&P 500指数の日々のリターンを使用する.アルファが0より大きい場合,資産の実際のリターンは市場のベンチマークよりも高いことを意味します.

したがって,シャープ比率とアルファの両方が正であるとき,ロングポジションが取られます. 両方が負になる場合,ポジションは平らになります.

利点分析

この戦略の最大の利点は,動向を判断することで,特定の期間に広範な市場や一部の個々の株式の成長機会を把握し,長期的市場のクラッシュを避けるためにリスクを制御することが可能である.利点は次のように詳細に分析されています.

  1. シャープ比率の計算は,最近の動力条件を反映し,一部の市場や株式の上昇傾向を把握することができます. アルファの計算は,ベンチマークよりも過度の収益を反映し,弱き基金をフィルタリングします.

  2. 異なる時間軸で両指標を包括的に検討することで,ポジティブな勢いをより正確に決定することができます.

  3. 勢いがなくなると,時宜でストップ損失は大きな損失を回避する.これは上昇傾向の後,適切な利益を得ることを可能にします.

  4. 単一モメント指標と比較して この戦略はより安定し,同時に株式とインデックスの両方で使用できるほど柔軟です.

リスク分析

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

  1. モメントインジケーターは引き下げられる.市場が回転すると,モメントストックは急速に低下する可能性があります.これは大きな損失につながる可能性があります.パラメータは調整または他のインジケーターと組み合わせることができます.

  2. アルファとシャープ比率は時間遅れがある.市場は急速に動いているとき,指標値は遅れ,最新の傾向を反映できない可能性があります.計算期間は短縮される可能性があります.

  3. ポジションのサイズをコントロールすることはなく,集中したリスクにつながります.市場状況や利用可能な資本に基づいてポジションのサイズを制御することを検討してください.

  4. バックテストデータは不十分であり,ライブパフォーマンスは不確実である可能性がある.より多くのタイムフレームと機器のバックテストを実行すべきである.過剰なフィッティングを防ぐためにパラメータ最適化ウィンドウを短くする必要があります.

オプティマイゼーションの方向性

戦略は以下の側面で最適化できます.

  1. ストップ・ロスのメカニズムを追加します. 大きな損失を避けるために,価格が急落するときにストップ・ロスのポイントを設定します.

  2. ポジションサイズ管理を追加します. 取引損失を制限するために,市場の変動に基づいて取引毎の資本を制御します.

  3. パラメータを最適化する. 異なる基礎資産と市場条件の特徴に合わせて異なるタイムフレームをテストする. 異なるパラメータの組み合わせも評価できる.

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

  5. 他の戦略と組み合わせる.他のトレンドフォロー戦略と組み合わせることを検討する.これは安定性を向上させ,単一の戦略からリスクを多様化させる.

概要

モメントアルファ戦略は,資産のリスク調整回報と相対市場パフォーマンスを判断することによって,モメント機会を動的に捕捉する.単一のモメント指標と比較して,より正確な判断,より広範な適用性,より高いリスク回復性の利点があります.しかし,戦略は依然として引き下げや遅れのリスクを伴います.安定した実効利益を達成する前に,継続的な最適化と他の戦略との組み合わせが必要です.


/*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))


もっと