Following the terminology in the previous paper, in this paper, $i$ refers to the index price while $M$ refers to the different kinds of mark prices. **The core role of DPMM is to determine the mark prices based on the index price input and the trading activities.** Everything else (e.g., PnL, funding fees) is then based on the mark prices.

Internally, 1 unit of Gamma swap is treated as a portfolio of powers and perps. DPMM simultaneously keeps track of the power and perp positions and calculates their respective mark prices. When 1 unit of long Gamma swap is entered, the DPMM adds 1 unit of power and $-\frac{2i_0}{1-h_0T}$ units of perp to the two positions, respectively. One could also enter a Gamma swap position with a specified entry price $i_s$ . In that case, DPMM would add 1 unit of power and $-\frac{2i_s}{1-h_0T}$ units of perp to the two positions, respectively. Denote the total net position of power as $n$ and total net position of perp as $m$ , then DPMM calculates the mark price of perp as follows:

$\frac{M_{perp}-i}{i}=k_{perp}\left(n\cdot\frac{2i}{1-hT}+m\right)=k_{perp}m'$

where $i$ is the index price of the underlying, and $m'=n\cdot\frac{2i}{1-hT}+m$. Please note that:

This is just the classical DPMM for perp with $m'=\left(n\cdot\frac{2i}{1-hT}+m\right)$ as the total net position, instead of just $m$.

Notice that $m'=0$ at a “balanced point”, at which the liquidity pool has no Delta exposure. For example, immediately after the first position was opened, we have $n =1$ and $m=-\frac{2i_0}{1-h_0T}$ , hence $m'=0$ . A “balanced point” is equivalent to the scenario of zero net position in a regular DPMM of perp.

A trading action reducing $|m'|$ (and thus bringing the system to the “balanced point”) enjoys a negative slippage of $M_{perp}$ . However, since opening a new position at the current price (without specifying entry price) does not change $m'$ , it does not enjoy a negative slippage. This is a bit different from the case of perp DPMM, in which a new position reducing the total net position always enjoys negative slippage.

$\frac{M_{power}-i_{power}}{i_{power}}=k_{power}n$

where $i_{power}$ is the theoretical price of the power, calculated just like that in the power perp DPMM:

$i_{power}=\frac{i^2}{1-hT}$

Now we have a composite DPMM that, at any point, takes the state variables $(n, m, i, \sigma)$ to determine $(M_{perp}, M_{power})$ and hence gives$M_{gamma}$ as

$M_{gamma}=M_{power}-\frac{2i_0}{1-h_0T}M_{perp}+\frac{i_0^2}{1-h_0T}$

$M_{gamma}$determines the trading cost of every trade and consequently determines PnL.

$F_{gamma}=F_{power}+\left(\frac{2i}{1-hT}-\frac{2i_0}{1-h_0T}\right)F_{perp}$

where $(i_0, h_0)$ are the $(i,h)$ as of the position entry point, and

$\begin{align*}
F_{power}=&\frac{M_{power}-i^2}{T}\\
F_{perp}=&\frac{M_{perp}-i}{T}=i\cdot\frac{k_{perp}}{T}\left(n\cdot\frac{2i}{1-hT}+m\right)
\end{align*}$

$F_{power}$ is simply handled the same way as power perps.

Whereas the handling of $F_{perp}$ is somewhat tricky, as the coefficient of the $F_{perp}$ term is constantly changing with $i$ . Essentially, this can be understood as every unit of Gamma swap has $-\frac{2i_0}{1-h_0T}$ “real futures” as well as $\frac{2i}{1-hT}$ “virtual futures”, and hence totally $\left(\frac{2i}{1-hT}-\frac{2i_0}{1-h_0T}\right)$ effective futures. The tricky part is the constantly varying virtual part. Because of this constantly varying virtual part, the perp funding should be calculated **per Gamma swap, instead of per futures**.

By definition, the exact funding fee of 1 unit of Gamma swap accumulated over the time period $(t_1, t_2)$ should be the integral of $F_{perp}$ over this period.

$\begin{align*}
\text{Funding}_{perp}(t_1,t_2)=&\int_{t_1}^{t_2}\left(\frac{2i}{1-hT}-\frac{2i_0}{1-h_0T}\right) F_{perp}dt
\\
=&\int_{t_1}^{t_2}\left(\frac{2i}{1-hT}\right) F_{perp}dt-\frac{2i_0}{1-h_0T}\int_{t_1}^{t_2} F_{perp}dt
\\
=&
A|_{t_1}^{t_2}-
\frac{2i_0}{1-h_0T}B|_{t_1}^{t_2}
\end{align*}$

where $A|_{t_1}^{t_2}$ and $B|_{t_1}^{t_2}$ are the accumulated increment of $A$ and $B$ over $(t_i,t_2]$ :

$\begin{align*}
A|_{t_1}^{t_2}=&\int_{t_1}^{t_2}\frac{2i}{1-hT}\cdot F_{perp}dt=\int_{t_1}^{t_2}\frac{2i}{1-hT}\cdot i\cdot\frac{k_{perp}}{T}\left(n\cdot\frac{2i}{1-hT}+m\right)dt\\
B|_{t_1}^{t_2}=&\int_{t_1}^{t_2} F_{perp}dt=\int_{t_1}^{t_2} i\cdot\frac{k_{perp}}{T}\left(n\cdot\frac{2i}{1-hT}+m\right)dt\\
\end{align*}$

Please note that the two accumulating variables $A$ and $B$ are universal to all positions while $\frac{i_o}{1-h_0T}$ is position-specific. We need to track the accumulations of $A$ and $B$ separately and then for any position we can calculate its accumulated funding fee with its own value of $\frac{i_0}{1-h_0T}$ . That is, for a position of $x$ gamma swaps entered at $t_a$ with entry values $(i_0, h_0)$ , its accumulated funding fee from $t_1$ to $t_2$ is:

$\left[(A_{t_2}-A_{t_1})-(B_{t_2}-B_{t_1})\frac{2i_0}{1-h_0T}\right]\cdot x$

In practice, it is impossible to rigorously calculate $A$ and $B$ due to their path-dependencies. Hence, we need some numerical approximations.

We assume the funding over the time period $(t_{i-1},t_i]$ is accumulated at the speed as of $t_i$ . Essentially this assumes $i=i(t_2), \forall i \in(t_{i-1}, t_i]$ . With this approximation, the two integrals over $(t_i,t_2]$ degenerate into simple multiplications:

$\begin{align*}
A|_{t_1}^{t_2}=&\frac{2i}{1-hT}\cdot i \cdot\frac{k_{perp}}{T}\left(n\cdot\frac{2i}{1-hT}+m\right)\Delta t\\
B|_{t_1}^{t_2}=&
i \cdot\frac{k_{perp}}{T}\left(n\cdot\frac{2i}{1-hT}+m\right)\Delta t
\end{align*}$

A more reasonable approximation is to assume the index price $i$ changes linearly over $(t_1, t_2]$ :

$i(t)=i_1+(i_2-i_1)\frac{t-t_1}{t_2-t_1}, \forall i \in(t_{i-1}, t_i]$

Then we can calculate the accumulating variables $A$ and $B$ as follows:

$\begin{align*}
A|_{t_1}^{t_2}=&\frac{2}{1-hT}\cdot\frac{k_{perp}}{T}\left(n\cdot\frac{2}{1-hT}\cdot\overline {i^3}+m\cdot\overline {i^2}\right)\Delta t\\
B|_{t_1}^{t_2}=&
\frac{k_{perp}}{T}\left(n\cdot\frac{2}{1-hT}\cdot\overline {i^2}+m\cdot\overline {i}\right)\Delta t
\end{align*}$

where $\overline {i^3}$, $\overline {i^2}$ and $\overline i$ are the time-weighted average value of $i^3$ , $i^2$ and $i$ over $(t_1, t_2]$ , respectively:

$\begin{align*}
\overline{i^3}&=\frac{1}{\Delta t}\int_{t_1}^{t_2}i^3dt=\frac{(i_1+i_2)(i_1^2+i_2^2)}{4}\\
\overline{i^2}&=\frac{1}{\Delta t}\int_{t_1}^{t_2}i^2dt=\frac{i_1^2+i_1i_2+i_2^2}{3}\\
\overline{i}&=\frac{1}{\Delta t}\int_{t_1}^{t_2}idt=\frac{i_1+i_2}{2}\\
\end{align*}$

$\text{Funding}_{power}(t_1,t_2) = \frac{(k_{power}n+hT)}{(1-hT)T}\cdot \overline{i^2} \Delta t= A_{power}|_{t_1}^{t_2}$

where $A_{power}|_{t_1}^{t_2}$ is the accumulating variable tracking the accumulation of power funding. In practice, the two $A$ variables of power and futures can be combined into a single variable.