この戦略の核心思想は,投資家が常に資産の特定の資産の投資シェアを固定的に維持することです.資産の価値が上昇すると,投資家は投資シェアを維持するために一部を売却します.資産の価値が低下すると,投資家は投資シェアを補うために購入します.この戦略は,比較的安定した資産に適用されます.
この戦略は,まず,ポートフォリオに占める資産の割合である投資シェアパラメータ%_investedを設定し,次の論理に従ってポジションを調整します.
ポジションが0であるとき,設定された投資シェア%_investedと初期資金initial_capitalに基づいて購入する必要がある契約の数.
ポジションを保有する際は,投資された金額と口座の総得益の割合 invested と設定された投資シェアpercent_invested を比較する.投資された金額の割合があまりにも低い場合は,投資シェアを補うために契約を購入する.投資された金額の割合があまりにも高い場合は,投資シェアを維持するために契約を売る.
ステップ2を繰り返します.
比較的安定した資産を長期にわたって保有し,頻繁に取引する必要はありません.
定期的なポジション調整で,資産の変動から利益を得る.
ポートフォリオのリスクを減らすために,複数の関連のない資産に分散して投資することができます.
投資の全額損失を防ぎ,バブルが破綻したときに全額投資を損なわないようにする.
資産の変動が大きい場合,損失のリスクが大きい.
取引の頻度は手数料の支払いを必要とします.
ポジションの調整は,時間遅れがあり,最適な買い売りポイントを逃す可能性があります.
パーセンテージの設定が不適切であれば,過剰な取引が起こる可能性があります.
リスクは以下の方法で軽減できます.
資産を慎重に選択し,波動性の高い資産を避ける.
ポジション調整の論理を最適化し,取引頻度を低下させる.
ポジションの変化最小単位を設定し,過剰取引を避ける.
資金の過集中を防ぐために,パーセンテージ設定を最適化します.
この戦略は以下の点で最適化できます.
資産価格が一定の値まで下落した場合に自動的に停止するストップ・ロジックを追加します.
ポジション調整の取引シグナル検証を追加し,トレンドの変更点以外のポジション調整を避ける.
異なる資産設定の異なる投資比率,停止比率などのパラメータ.
パラメータ最適化モジュールを追加し,過去のデータに基づいてパラメータを自動的に最適化します.
資産配置の動向を促すための平仓再投資を支援する.
この戦略は,固定投資株によって分散投資,リスク制御の効果を達成し,安定資産の長期保有に適用されます.しかし,この戦略には,ポジション調整の遅れ,リスク資産投資リスクなどの問題があります.その後,ストップ・ローズ論理の最適化,シグナル検証などの手段によって戦略の安定性をさらに向上させることができます.
/*backtest
start: 2022-09-21 00:00:00
end: 2022-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// strategy("Fixed Fractioning", overlay=true, initial_capital=100000.0)
percent_invested=input(50.0,title="Percent Invested",maxval=100.0,minval=0.0)
fraction_invested=percent_invested/100
from_day=input(1,title="From Day",maxval=31,minval=1)
from_month=input(1,title="From Month",maxval=12,minval=1)
from_year=input(2017,title="From Year",maxval=2018,minval=1900)
to_day=input(1,title="To Day",maxval=31,minval=1)
to_month=input(1,title="To Month",maxval=12,minval=1)
to_year=input(2018,title="To Year",maxval=2018,minval=1900)
// === FUNCTION EXAMPLE === from: https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/
start = timestamp(from_year, from_month, from_day, 00, 00) // backtest start window
finish = timestamp(to_year, to_month, to_day, 23, 59) // backtest finish window
window() => true // create function "within window of time"
strategy.initial_capital = 50000
if strategy.position_size==0 and window()
contracts_to_buy=(fraction_invested*strategy.initial_capital)/close
strategy.entry("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)
invested=(strategy.position_size*close)/strategy.equity
if invested<fraction_invested and window()
contracts_to_buy=((fraction_invested-invested)*strategy.equity)/close
strategy.order("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)
else
if invested>fraction_invested and window()
contracts_to_sell=((invested-fraction_invested)*strategy.equity)/close
strategy.order("sell",long=false,qty=contracts_to_sell,limit=close,when=contracts_to_sell>1)