Skip to main content

New PO

Concept

新POはリバランス時の手数料も考慮に入れる。方法は以下の通り:

  1. 各アセットにはタイムスロットという概念がある。あるアセットを購入するとタイムスロットに入る。タイムスロットは購入時刻、価格、取得したアセットの量などの情報を保持する。

  2. PO処理は、アセットのタイムスロットごとのリバランスである。タイムスロットごとに保持するアセットの売却量と新規購入量を決め、オーダーを発行する。アセットを新規購入すると1で説明したとおり、新しいタイムスロットができる。

ポイント: 

  • Rebalance時のTransaction costを考慮する

  • ROIは利用せず、Quote assetの量で利益を評価する

  • ROIを利用しない理由は、評価タイミングが存在するとROIの分母がわかりにくくなるため

Definition

POAssetInfo

SymbolCodeDescription
abase_asset_symbolName of base asset, aAa\in A
iN/AAsset slot number of asset aiNai\in N_a
 ati\ _at_iacquisition_time_sec_utcA creation timestamp of asset a
 api\ _ap_ibuy_priceAsset Aをタイムスロットiで購入したときの価格
 ap\ _apcurrent_priceAsset Aの現在の価格
 ap^\ _a \hat{p}forecast_priceAsset Aの予想価格
 aqi\ _aq_ibase_asset_quantityThe qunantity of asset a at timestmap  ati\ _at_i
 aqi\ _a q_i'optimal_base_asset_quantityThe optimal qunantity of asset a at timestmap  ati\ _at_i
 aq\ _a q'new_optimal_base_asset_quantityThe optimal qunantity of asset a that acquire now
 acBi\ _ac_{B_i}buy_commission_rateBuy commision rate of asset a
 axi\ _ax_iasset_holding_rateCurrent holding rate of asset a
 axi\ _ax_i^\starN/AOptimal holding rate of asset a
PPprofit利益
QFQ_Fquantity_future予想評価額
QIQ_Iquantity_investment投資額
QRQ_Rquantity_remaining保有している自由に利用できるQuote assetの量
AAbase_assets対象の全Base assets
NaN_abase_assets_time_slotsアセットaaが有するタイムスロットの集合

Problem formulation

やりたいこと:利益Pの分散の最小化

以下のシチュエーションで発生する利益を考える:

  1. アセットaAa\in AのタイムスロットiNai \in N_aについて、 aqi\ _a q_i保有している。

  2. 最適な保有量 aqi\ _a q_i'がわかったので、保有量を aqi aqi\ _aq_i \rightarrow \ _aq_i'にするよう売却する。このとき、必ず aqi aqi\ _aq_i \geq \ _aq_i'である。理由は、タイムスロットに属す保有量しか考えないので選択肢は保有量のキープか売却しか存在しないたいめ。購入する場合はタイムスロットを増やす。

  3. このとき、売却益を得られるが、手数料などのトランザクションコストが発生する。

  4. また、アセットaaの最適購入量 aq0\ _a q'\geq0がわかったとして、購入し新たなタイムスロットを作成する。

  5. このとき、購入費に加えて手数料などのトランザクションコストが発生する。

この状態で投資額QIQ_Iと、未来の予想評価額QFQ_Fを計算する。

したがって、利益PP:

P=QFQIP=Q_F-Q_I

投資額QIQ_Iについて

投資額は以下の和:

  • 全アセットのタイムスロット分の購入時に支払ったQuote assetの量と手数料

  • 全アセットの新規購入時に支払ったQuote assetの量と手数料

式にすると:

QI=aAiNa( aqi api(1+ acBi))+aA( aq ap(1+ acB))Q_I=\sum_{a \in A} \sum_{i \in N_a} \left( \ _aq_i \ _a p_i(1 + \ _a c_{B_i}) \right) + \sum_{a \in A} \left( \ _aq' \ _ap(1+ \ _ac_B) \right)

予想評価額QFQ_Fについて

予想評価額は以下の和:

  • 全アセットの各タイムスロットで最適な保有量を持っているとしての、予想評価額から売却したときの手数料を引いたもの

  • 全アセットの保有量を最適保有量とする際に売却して得たQuote assetの量から手数料を引いたもの

  • 全アセットで新たに追加するタイムスロットの予想評価額

式にすると:

QF=aAiNa( aqi ap^(1 acS)+( aqi aqi) ap(1 acS))+aA( aq ap^(1 acS))Q_F=\sum_{a \in A} \sum_{i \in N_a} \left( \ _a q_i' \ _a\hat{p} (1-\ _ac_S) + (\ _aq_i - \ _aq_i')\ _ap (1-\ _ac_S) \right) + \sum_{a \in A} \left( \ _aq' \ _a\hat{p} (1-\ _ac_S) \right)

各拘束条件について

  • C1; 利益の拘束条件、最小利益PEP_E以上とする:
P=QFQIPEP=Q_F - Q_I \geq P_E
  • C2; 新規購入時の費用と手数料は、売却時に得た手数料を除いたQuote assetの量と自由に使えるQuote assetの量以下:
aAiNa( aqi aqi) ap(1 acS)+QRaA aq ap(1+ acB)\sum_{a\in A}\sum_{i\in N_a} (\ _aq_i - \ _aq_i')\ _ap(1-\ _ac_S) + Q_R \geq \sum_{a\in A} \ _aq' \ _ap(1+\ _ac_B)
  • C3; 各タイムスロットの最適保有量は増えず、売却のみ考える:
 aqi aqi0,aA,iNa\ _a q_i \geq \ _a q_i' \geq 0, a \in A, i \in N_a
  • C4; 新規購入量は0以上:
 aq0,aA\ _a q' \geq 0, a \in A
  • 新規購入費用+手数料は、手数料を除いた売却額+現在の保有金額QRQ_Rになる:
aAiNa( aqi aqi) ap(1 acS)+QRaA aq ap(1+ acB)\sum_{a \in A}\sum_{i \in N_a}(\ _a q_i - \ _a q_i')\ _ap(1-\ _ac_S) + Q_R \geq \sum_{a \in A}\ _aq' \ _ap(1+\ _ac_B)

分散について

PPの分散を最小化する aqi\ _a q_i' aq\ _a q'を見つけるのが目的。したがってPPの分散V(P)V(P)を計算する。

V(P)=E[(PE[P])2]V(P) = E[(P-E[P])^2]

このとき、確率変数は ap^\ _a\hat{p}のみ。したがって:

PE(P)=aAiNa( aqi(1 acS)( ap^E[ ap^]))+aA( aq(1 acS)( ap^E[ ap^]))=aA( ap^E[ ap^])( aq(1 acS)+iNa aqi(1 acS))=aA( ap^E[ ap^])xaP-E(P)=\sum_{a\in A}\sum_{i\in N_a}\left( \ _a q_i'(1-\ _ac_S)(\ _a\hat{p} - E[\ _a\hat{p}]) \right) +\sum_{a\in A}\left( \ _aq'(1-\ _ac_S)(\ _a\hat{p} - E[\ _a\hat{p}]) \right) \\ = \sum_{a\in A}\left( \ _a\hat{p} - E[\ _a\hat{p}] \right) \left( \ _aq'(1-\ _ac_S) + \sum_{i \in N_a}\ _aq_i'(1-\ _ac_S) \right)\\ = \sum_{a\in A}\left( \ _a\hat{p} - E[\ _a\hat{p}] \right) x_a

ここでは、

xa= aq(1 acS)+iNa aqi(1 acS)x_a = \ _aq'(1-\ _ac_S) + \sum_{i \in N_a}\ _aq_i'(1-\ _ac_S)

としている。

すると、V(P)V(P)は:

V(P)=aAbB( ap^E[ ap^])( bp^E[ bp^])xaxb=aAbBCov( ap^, bp^)xaxb=aAbBσabxaxbV(P)=\sum_{a \in A}\sum_{b \in B} (\ _a\hat{p} - E[\ _a\hat{p}])(\ _b\hat{p} - E[\ _b\hat{p}]) x_a x_b\\ = \sum_{a \in A}\sum_{b \in B} Cov(\ _a\hat{p}, \ _b\hat{p})x_a x_b\\ = \sum_{a \in A}\sum_{b \in B} \sigma_{ab} x_a x_b

となる。

Solver formulation

次のQP最小化を考える:

minimize12xTZx+yTx=V(P)subject tolAxu\begin{matrix} \rm{minimize} & \frac{1}{2} \boldsymbol{x}^T Z \boldsymbol{x} + \boldsymbol{y}^T \boldsymbol{x} = V(P) \\ \rm{subject\ to} & \boldsymbol{l} \leq A \boldsymbol{x} \leq \boldsymbol{u} \end{matrix}

状態変数x\boldsymbol{x}:

xT=[ 1q1,..., 1qN1, 1q,..., Aq1,..., AqNA, Aq]\boldsymbol{x}^T = [ \ _1q_1', ..., \ _1q_{N_1}',\ _1q' , ..., \ _A q_1',..., \ _Aq_{N_A}', \ _Aq' ]

このとき、{1,...,A}A\{{1,...,A\}}\in \bm{A}{1,...,NA}NA\{{1,...,N_A\}}\in \bm{N_A}

二次形式

V(P)V(P)は、

V(P)=aAbBσab(1 acS)(1 bcS)( aq+iNA aqi)( bq+iNB bqi)V(P)=\sum_{a\in A}\sum_{b \in B} \sigma_{ab}(1-\ _ac_S)(1-\ _bc_S) \left(\ _aq'+\sum_{i\in N_A}\ _aq_i'\right) \left(\ _bq'+\sum_{i\in N_B}\ _bq_i'\right)

と書けるので、ZZは、

Z=[Z11,...,Z1AZ21,...,Z2A...ZA1,...,ZAA]Z= \begin{bmatrix} Z_{11}, ..., Z_{1A}\\ Z_{21}, ..., Z_{2A}\\ ...\\ Z_{A1}, ..., Z_{AA} \end{bmatrix}

ただし、

Zab=σab(1 acS)(1 bcS)INa+1,Nb+1Z_{ab}= \sigma_{ab}(1-\ _ac_S)(1-\ _bc_S) I_{N_a+1, N_b+1}

Is,tI_{s,t}は要素が全て1で、s行t列の行列とする。

また、y=0\boldsymbol{y}=\boldsymbol{0}とする。

拘束条件

AAを、

A=[a1a2a3...]A= \begin{bmatrix} \boldsymbol{a}_1\\ \boldsymbol{a}_2\\ \boldsymbol{a}_3\\ ... \end{bmatrix}

l\bm{l}を、

l=[l1l2l3...]\bm{l}= \begin{bmatrix} l_1\\ l_2\\ l_3\\ ... \end{bmatrix}

u\bm{u}を、

u=[u1u2u3...]\bm{u}= \begin{bmatrix} u_1\\ u_2\\ u_3\\ ... \end{bmatrix}

とおく。

  • 拘束条件C1について; P=QFQIPEP=Q_F-Q_I \geq P_E:

この条件はa1\boldsymbol{a}_1として導入する。

P=aAiNa aqi(( ap^ ap)(1 acS))+aA aq( ap^(1 acS) ap(1+ acBi))+aAiNa aqi( ap(1 acS) api(1+ acBi))P = \sum_{a\in A}\sum_{i \in N_a} \ _aq_i'((\ _a\hat{p}-\ _ap)(1-\ _ac_S)) + \sum_{a \in A} \ _aq'(\ _a\hat{p}(1- \ _ac_S)-\ _ap(1+\ _ac_{B_i}))\\ +\sum_{a\in A}\sum_{i \in N_a} \ _aq_i(\ _ap(1-\ _ac_S)-\ _ap_i(1+\ _ac_{B_i}))

より、

a1=[( 1p^ 1p)(1 1cS),...,( 1p^ 1p)(1 1cS), 1p^(1 1cS) 1p(1+ 1cBi),...,( Ap^ Ap)(1 AcS),...,( Ap^ Ap)(1 AcS), Ap^(1 AcS) Ap(1+ AcBi)]\boldsymbol{a}_1 = [ (\ _1\hat{p}-\ _1p)(1-\ _1c_S),...,(\ _1\hat{p}-\ _1p)(1-\ _1c_S), \ _1\hat{p}(1- \ _1c_S)-\ _1p(1+\ _1c_{B_i}),\\ ...,\\ (\ _A\hat{p}-\ _Ap)(1-\ _Ac_S),...,(\ _A\hat{p}-\ _Ap)(1-\ _Ac_S), \ _A\hat{p}(1- \ _Ac_S)-\ _Ap(1+\ _Ac_{B_i}) ]

また、下限l1l_1、上限u1u_1は、

l1=PEaAiNa aqi( ap(1 acS) api(1+ acBi))l_1 = P_E - \sum_{a \in A} \sum_{i\in N_a} \ _aq_i(\ _ap(1-\ _ac_S) - \ _ap_i(1+\ _ac_{B_i}))
u1=u_1 = \infty

となる。

  • 拘束条件C2について;

この条件はa2\bm{a}_2として導入する。 変形すると、以下のように書ける。

aA( ap(1+ acB) aq+iNA ap(1 acS) aqi)QR+aAiNa aqi(1 acS) ap\sum_{a\in\bm{A}} \left( \ _ap(1+\ _ac_B)\ _aq' + \sum_{i \in \bm{N_A}}{\ _ap (1-\ _ac_S)\ _aq_i'} \right) \leq Q_R + \sum_{a\in\bm{A}}\sum_{i\in\bm{N_a}} \ _aq_i(1- \ _ac_S)\ _ap

したがって、a2\bm{a}_2l2l_2u2u_2は次の通りになる:

a2=[ 1p(1 1cS),..., 1p(1 1cS), 1p(1+ 1cB),..., Ap(1 AcS),..., Ap(1 AcS), Ap(1+ AcB)]\bm{a}_2 = [ \ _1p(1-\ _1c_S), ..., \ _1p(1-\ _1c_S), \ _1p(1+\ _1c_B), \\ ..., \\ \ _Ap(1-\ _Ac_S), ..., \ _Ap(1-\ _Ac_S), \ _Ap(1+\ _Ac_B) ]
note

このとき、 xp(1 xcS),xA\ _xp(1-\ _xc_S), x\in\bm{A}はアセットxxのタイムスロット分、つまりNx\bm{N_x}の要素数分存在する。一方、 xp(1+ xcB)\ _xp(1+\ _xc_B)は新規購入分なので各アセットで一つしか存在しない。

下限について:

l2=l_2 = -\infty

上限について:

u2=QR+aAiNa aqi(1 acS) apu_2 = Q_R + \sum_{a\in\bm{A}} \sum_{i \in \bm{N_a}} \ _aq_i (1 - \ _a c_S) \ _ap
  • 拘束条件C3, 拘束条件C4

変数 xqi,xA,iNx\ _xq_i, x\in\bm{A}, i\in \bm{N_x} xq,xA\ _xq, x\in \bm{A}に対しての上限、下限の拘束なのでA,l,uA, \bm{l}, \bm{u}は以下のようになる。

A=[a1a21,0,,0,00,1,,0,00,0,,0,00,0,,1,00,0,,0,1]A = \begin{bmatrix} \bm{a}_1 \\ \bm{a}_2 \\ 1, 0, \cdots, 0, 0\\ 0, 1, \cdots, 0, 0\\ 0,0, \ddots, 0, 0\\ 0,0, \cdots, 1, 0\\ 0,0, \cdots, 0, 1 \end{bmatrix}
note

a1,a2\bm{a}_1, \bm{a}_2以外は単位行列になっている。

l=[l100]\bm{l} = \begin{bmatrix} l_1\\ -\infty\\ 0\\ \vdots\\ 0 \end{bmatrix}
u=[u2 1q1 1q2 1qN1 Aq1 AqNA]\bm{u} = \begin{bmatrix} \infty\\ u_2\\ \ _1q_1\\ \ _1q_2\\ \vdots\\ \ _1q_{N_1}\\ \infty\\ \vdots\\ \ _Aq_1\\ \vdots\\ \ _Aq_{N_A}\\ \infty\\ \end{bmatrix}