【NaMaKe Trader 活用術】複利で運用する方法

 ※ 本記事は広告・プロモーションを含みます。
NaMaKe Trader 活用術

資産運用するなら複利運用は必須です! たっきん(Twitter)です!

完全自作自動売買システム「NaMaKe Trader(ナマケ・トレーダー)を複利で運用する活用術を紹介していきます。

全ての資産運用に共通して言えることですが、複利運用しなければ爆発的に資産を増やすことはできません。

そのため、僕が自作したシステムトレード「NaMaKe Trader」も当然複利で運用できるように作成しております。

この記事では「NaMaKe Trader」を複利運用する方法を紹介していきますので、もし「NaMaKe Trader」を使ってみようと考えている方は、参考にしていただけたらと思います。

コードはGitHubで公開しています!

僕が自作したシステムトレード「NaMaKe Trader(ナマケ・トレーダー)」のソースコードはGitHubで公開しています。
アプリケーション部分のコードを作成するだけで、誰でも無償でシステムトレードを行うことができるように構築しました。
これであなたも「何もしないで稼げるトレーダー」になれるかもしれませんよ?

APIはOANDAを使用しています。
プログラムを実行するにはOANDAの口座開設とAPIの設定が必要になります。

→ OANDA証券のページへ
OANDA Japan MT4

複利と単利の違い

活用術を紹介する前に「複利」「単利」の違いを押さえておきましょう!

単利
運用元本に対してのみ毎年同じ金額の利子をつける計算方法。
何期運用しても利息は常に一定のため、資産の増え方は直線となる。

複利
一定期間に発生した利息を元金に加え、次に利息が発生する際には「元金+利子」を次の元金として利息を計算する方法。
期を追うごとに利息が増えていくので、資産が指数関数的に増えていく。

単利運用複利運用の資産の増え方を図を使って説明すると下図のようになります。

資産運用期間が短いうちは単利複利も資産に増え方に差があまりありませんが、運用期間が長くなるにつれて、その差が顕著に開いていきます。

そのため、昨今では金融商品を長期運用する場合は、単利よりも複利で運用することが、資産運用における基本中の基本の考え方になってきます。

「NaMaKe Trader」で複利運用する方法

「NaMaKe Trader」では単利運用複利運用のどちらにも対応していますが、先ほどの理由により複利で運用することを推奨します。

複利で運用するためにはROS Service「order_register」のunits0(ゼロ)をセットします。

unitsは本来取引数量をセットするのですが、0(ゼロ)をセットすることで、口座残高から取引数量が自動で計算される複利運用モードとなります。

取引数量を任意で指定したい場合はunits1以上の値をセットしてください。
セットされた取引数量で発注されます。

< 運用モード >
単利運用モード: units = 1以上の整数(代入された数量で発注)
複利運用モード: units = 0(口座残高より自動計算された数量で発注)

複利運用モードで新規注文する場合のコード例は下記となります。

from trade_manager_msgs.srv import OrderRegisterSrv
from .wrapper import RosServiceClient
from trade_manager_msgs.msg import Instrument as InstMng
from trade_manager_msgs.msg import OrderType, OrderDir

# Create service client "order_register"
srvcli = RosServiceClient(
	self,
	OrderRegisterSrv,
	"order_register",
	use_wait_for_service=False
)

future: FutureWrapper | None = None

#---------- 以下の条件で新規注文 ----------
# 通貨ペア:USD/JPY
# 注文種類:成行(Market Order)
# 買いor売り:買い(Long)
# 利益確定価格:120.0円
# 損切り価格:100.0円
#----------------------------------------
req = OrderRegisterSrv.Request()
req.inst_msg.inst_id = InstMng.INST_USD_JPY
req.ordtyp_msg.order_type = OrderType.MARKET
req.orddir_msg.order_dir = OrderDir.LONG
req.units = 0  # 複利運用モード
req.take_profit_price = 120.0
req.stop_loss_price = 100.0
req.exit_exp_time = ""
future = srvcli.call_async(req, timeout_sec=5.0)

複利運用モード時の取引数量の算出方法

複利運用モード時の取引数量の算出方法を説明していきますが、その前にFX会社の最大レバレッジを確認します。

例としてOANDA証券を挙げますが、OANDA証券の個人口座の最大レバレッジは25倍となっています。

次にレバレッジの計算方法を確認していきます。

レバレッジは以下の式で計算できます。

\begin{align*}
\mbox{レバレッジ} &=\frac{ \mbox{現在の為替レート} \times \mbox{取引数量}}{\mbox{必要証拠金}}\\
\end{align*}

最大レバレッジが25倍であることから、上記計算結果が25を超えないようにコントロールする必要があります。

上記計算結果が25を超えた場合、どうなるかというと強制ロスカットとなります。
シストレ運用で強制ロスカットされたら元も子もないので絶対に25は超えないようにコントロールする必要があります。

「NaMaKe Trader」ではレバレッジを制御するために、下記2つのROSパラメータを設定しています。

< レバレッジ制御パラメータ >
・最大レバレッジ

 (パラメータ名:<Node>order_scheduler: max_leverage)
 運用中でのレバレッジ上限値。
 FX会社が設定している最大レバレッジより、やや小さい値を設定することを推奨する。
・同時最大エントリー数
 (パラメータ名:<Node>order_scheduler: max_position_count)
 同時にエントリーできる上限値。
 エントリー数が上限に達しているときに新規注文を受けた場合、注文は無効となる。

上記2つのパラメータより、新規エントリーする場合のレバレッジは「最大レバレッジ÷同時最大エントリー数」となるようにすることでレバレッジを制御することができます。

例として、上記2つのパラメータに下記の値が設定された場合を考えます。
・最大レバレッジ = 20
・同時最大エントリー数 = 8

この場合、新規エントリー時のレバレッジは「20÷8 = 2.5(倍)」となります。
また、同時に8つエントリーした場合のレバレッジも「2.5(倍)×8 = 20(倍)」となり、強制ロスカットされるレバレッジ25倍に対し、5倍分余裕を持たせたシストレ運用が可能となります。

レバレッジの式を変形して「取引数量=」の形に変形します。

\begin{align*}
\mbox{取引数量} &=\frac{ \mbox{レバレッジ} \times \mbox{必要証拠金}}{\mbox{現在の為替レート}}\\
\end{align*}

「レバレッジ = 最大レバレッジ÷同時最大エントリー数」を代入すると以下の式になります。

\begin{align*}
\mbox{取引数量} &=\frac{\mbox{最大レバレッジ}}{\mbox{同時最大エントリー数}} \times \frac{\mbox{必要証拠金}}{\mbox{現在の為替レート}}\\
\end{align*}

ここで、「必要証拠金=口座資金」の場合、取引数量は以下の式となります。

\begin{align*}
\mbox{取引数量} &=\frac{\mbox{最大レバレッジ}}{\mbox{同時最大エントリー数}} \times \frac{\mbox{口座資金}}{\mbox{現在の為替レート}}\\
\end{align*}

複利運用モードでは上式に従って取引数量が決定されます。

式を見ていただくとわかると思いますが、取引数量口座資金比例した式になっています。

利益確定する度に口座資金が増えていくため、この式で算出された取引数量でトレードし続けると、複利運用が可能になる仕組みになっています。

取引数量の平滑化

複利運用モードでは下記の式に従って取引数量が計算されますが、1点だけ欠点があります。

\begin{align*}
\mbox{取引数量} &=\frac{\mbox{最大レバレッジ}}{\mbox{同時最大エントリー数}} \times \frac{\mbox{口座資金}}{\mbox{現在の為替レート}}\\
\end{align*}

それは、通貨ペアによって「現在の為替レート」の数値が異なるため、通貨ペアによって取引数量の偏りが発生してしまうことです。

例えば、各種パラメータが下記の値であったとします。

・最大レバレッジ = 20
・同時最大エントリー数 = 8
・口座資金 = 1,000,000円

このとき、USD/JPY、EUR/JPYが下記の為替レートであったとします。

・USD/JPY = 150円
・EUR/JPY = 100円

それぞれの為替レートで取引数量を計算すると、

\begin{align*}
\mbox{取引数量(USD/JPY)} &=\frac{20}{8} \times \frac{1,000,000}{150}\\
&=16,667\\
\end{align*}

\begin{align*}
\mbox{取引数量(EUR/JPY)} &=\frac{20}{8} \times \frac{1,000,000}{100}\\
&=25,000\\
\end{align*}

のように取引数量に違いが出てしまいます。

取引数量が大きいほど損益結果に占める割合が多くなってしまうため、この差をなくして全て同じ割合でトレードできるようにするのが好ましい場合もあります。

それをできるようにするのが、ROSパラメータのuse_homogenize_unitsになります。

「use_homogenize_units = true」に設定すると、どの通貨ペアに対しても同じ割合でトレードするようになります。

具体的にはトレードしている全ての通貨ペアの為替レート最大値を使って取引数量を算出するようになります。

先程の例で説明すると、

・USD/JPY = 150円
・EUR/JPY = 100円

の2つの為替レート最大値はUSD/JPYの150円になります。

そのため、USD/JPY、EUR/JPYの両方の通貨ペアでは150円で取引数量を算出するようになります。

\begin{align*}
\mbox{取引数量(USD/JPY)} &=\frac{20}{8} \times \frac{1,000,000}{150}\\
&=16,667\\
\end{align*}

\begin{align*}
\mbox{取引数量(EUR/JPY)} &=\frac{20}{8} \times \frac{1,000,000}{150}\\
&=16,667\\
\end{align*}

ただし、こちらの欠点としては新規エントリー時にレバレッジ「20÷8 = 2.5(倍)」でトレードができなくなってしまうことです。

偏りをなくすために、一部の為替ペアのレバレッジを下げてトレードすることになるためです。

スポンサーリンク

コメント

タイトルとURLをコピーしました