Skip to content

Commit

Permalink
deploy: 8bff3b2
Browse files Browse the repository at this point in the history
  • Loading branch information
alessandrozocca committed Oct 26, 2023
1 parent efb5ca8 commit d1bda92
Show file tree
Hide file tree
Showing 13 changed files with 49 additions and 69 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
73 changes: 30 additions & 43 deletions _sources/notebooks/04/cryptocurrency-arbitrage.ipynb

Large diffs are not rendered by default.

43 changes: 18 additions & 25 deletions notebooks/04/cryptocurrency-arbitrage.html
Original file line number Diff line number Diff line change
Expand Up @@ -699,35 +699,37 @@ <h2>Representing an exchange as a directed graph<a class="headerlink" href="#rep
<span class="n">edge_color</span><span class="o">=</span><span class="p">[</span><span class="n">dg</span><span class="o">.</span><span class="n">edges</span><span class="p">[</span><span class="n">u</span><span class="p">,</span> <span class="n">v</span><span class="p">][</span><span class="s2">&quot;color&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">u</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">dg</span><span class="o">.</span><span class="n">edges</span><span class="p">],</span>
<span class="n">width</span><span class="o">=</span><span class="p">[</span><span class="n">dg</span><span class="o">.</span><span class="n">edges</span><span class="p">[</span><span class="n">u</span><span class="p">,</span> <span class="n">v</span><span class="p">][</span><span class="s2">&quot;width&quot;</span><span class="p">]</span> <span class="k">for</span> <span class="n">u</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">dg</span><span class="o">.</span><span class="n">edges</span><span class="p">],</span>
<span class="n">node_size</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span>
<span class="n">font_size</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span>
<span class="n">font_size</span><span class="o">=</span><span class="mi">12</span><span class="p">,</span>
<span class="n">arrowsize</span><span class="o">=</span><span class="mi">15</span><span class="p">,</span>
<span class="n">connectionstyle</span><span class="o">=</span><span class="sa">f</span><span class="s2">&quot;arc3, rad=</span><span class="si">{</span><span class="n">rad</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">nx</span><span class="o">.</span><span class="n">draw_networkx_edge_labels</span><span class="p">(</span>
<span class="n">dg</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">edge_labels</span><span class="o">=</span><span class="p">{(</span><span class="n">src</span><span class="p">,</span> <span class="n">dst</span><span class="p">):</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">src</span><span class="si">}</span><span class="s2">/</span><span class="si">{</span><span class="n">dst</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">for</span> <span class="n">src</span><span class="p">,</span> <span class="n">dst</span> <span class="ow">in</span> <span class="n">dg</span><span class="o">.</span><span class="n">edges</span><span class="p">()}</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">&quot;off&quot;</span><span class="p">)</span>

<span class="k">return</span> <span class="n">plt</span><span class="o">.</span><span class="n">gca</span><span class="p">()</span>


<span class="n">minimum_in_degree</span> <span class="o">=</span> <span class="mi">10</span>
<span class="n">exchange_dg</span> <span class="o">=</span> <span class="n">get_exchange_dg</span><span class="p">(</span><span class="n">exchange</span><span class="p">,</span> <span class="n">minimum_in_degree</span><span class="p">)</span>
<span class="n">ax</span> <span class="o">=</span> <span class="n">draw_dg</span><span class="p">(</span><span class="n">exchange_dg</span><span class="p">,</span> <span class="mf">0.01</span><span class="p">)</span>
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span>
<span class="n">exchange</span><span class="o">.</span><span class="n">name</span> <span class="o">+</span> <span class="sa">f</span><span class="s2">&quot; - Minimum indegree (Base Currencies) = </span><span class="si">{</span><span class="n">minimum_in_degree</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="nb">print</span><span class="p">(</span>
<span class="n">exchange</span><span class="o">.</span><span class="n">name</span>
<span class="o">+</span> <span class="sa">f</span><span class="s2">&quot; - Network obtained filtering for minimum indegree (Base Currencies) = </span><span class="si">{</span><span class="n">minimum_in_degree</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="p">)</span>

<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Number of nodes = </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">exchange_dg</span><span class="o">.</span><span class="n">nodes</span><span class="p">())</span><span class="si">:</span><span class="s2">3d</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Number of edges = </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">exchange_dg</span><span class="o">.</span><span class="n">edges</span><span class="p">())</span><span class="si">:</span><span class="s2">3d</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>Number of nodes = 155
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>Binance US - Network obtained filtering for minimum indegree (Base Currencies) = 10
Number of nodes = 155
Number of edges = 449
</pre></div>
</div>
<img alt="../../_images/78e40867aeb67dfff6e2c0c320dd2cc0ca8ef10a1981f09a8663c0c2b8c88fc5.png" src="../../_images/78e40867aeb67dfff6e2c0c320dd2cc0ca8ef10a1981f09a8663c0c2b8c88fc5.png" />
<img alt="../../_images/331e0c01101d7ba15285fdc6bd15ab5c93717fb08397a2be205230b90d946bb0.png" src="../../_images/331e0c01101d7ba15285fdc6bd15ab5c93717fb08397a2be205230b90d946bb0.png" />
</div>
</div>
</section>
Expand All @@ -740,30 +742,21 @@ <h2>Exchange order book<a class="headerlink" href="#exchange-order-book" title="
<p>The following cell reads and displays a previously saved order book. Cells at the end of this notebook demonstrate how to retrieve an order book from an exchange and save it as a Pandas DataFrame.</p>
<div class="cell docutils container">
<div class="cell_input docutils container">
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="k">if</span> <span class="s2">&quot;google.colab&quot;</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
<span class="n">csv</span> <span class="o">=</span> <span class="s2">&quot;Binance_US_orderbook_20230313_152616.csv&quot;</span>
<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">filename</span> <span class="o">=</span> <span class="s2">&quot;Binance_US_orderbook_saved.csv&quot;</span>
<span class="k">if</span> <span class="s2">&quot;google.colab&quot;</span> <span class="ow">in</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">:</span>
<span class="n">order_book</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span>
<span class="s2">&quot;https://raw.githubusercontent.com/mobook/MO-book/main/notebooks/04/&quot;</span> <span class="o">+</span> <span class="n">csv</span><span class="p">,</span>
<span class="s2">&quot;https://raw.githubusercontent.com/mobook/MO-book/main/notebooks/04/data/&quot;</span>
<span class="o">+</span> <span class="n">filename</span><span class="p">,</span>
<span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
<span class="p">)</span>

<span class="k">else</span><span class="p">:</span>
<span class="c1"># find all previously saved order books</span>
<span class="n">fnames</span> <span class="o">=</span> <span class="nb">sorted</span><span class="p">(</span><span class="n">glob</span><span class="o">.</span><span class="n">glob</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;*orderbook*&quot;</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">&quot; &quot;</span><span class="p">,</span> <span class="s2">&quot;_&quot;</span><span class="p">)))</span>
<span class="n">fname</span> <span class="o">=</span> <span class="n">fnames</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>

<span class="c1"># read the last order book from the list of order books</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Reading: </span><span class="si">{</span><span class="n">fname</span><span class="si">}</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
<span class="n">order_book</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="n">fname</span><span class="p">,</span> <span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="n">order_book</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">read_csv</span><span class="p">(</span><span class="s2">&quot;data/&quot;</span> <span class="o">+</span> <span class="n">filename</span><span class="p">,</span> <span class="n">index_col</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>

<span class="n">display</span><span class="p">(</span><span class="n">order_book</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>Reading: Binance_US_orderbook_saved.csv
</pre></div>
</div>
<div class="output text_html"><div>
<style scoped>
.dataframe tbody tr th:only-of-type {
Expand Down Expand Up @@ -1505,7 +1498,7 @@ <h2>Modelling the arbitrage search problem as a graph<a class="headerlink" href=
</div>
</div>
<div class="cell_output docutils container">
<img alt="../../_images/9525828aee4956663c2f63de809e22d4322c78ab2de9c6bdf85489d494fb863a.png" src="../../_images/9525828aee4956663c2f63de809e22d4322c78ab2de9c6bdf85489d494fb863a.png" />
<img alt="../../_images/d1d412c48358ebfbd002a217e8b904cf374f5cb716d5469a3933d357d6f8f79d.png" src="../../_images/d1d412c48358ebfbd002a217e8b904cf374f5cb716d5469a3933d357d6f8f79d.png" />
</div>
</div>
</section>
Expand Down Expand Up @@ -1584,7 +1577,7 @@ <h2>Find order books that have arbitrage opportunities<a class="headerlink" href
Return = 5.002 basis points
</pre></div>
</div>
<img alt="../../_images/aaa4c91cb2955d8ef1f244926f55cf9beda7118b0f86320e2b6b95130035e20e.png" src="../../_images/aaa4c91cb2955d8ef1f244926f55cf9beda7118b0f86320e2b6b95130035e20e.png" />
<img alt="../../_images/b7839168395c04636d4d3ca4880e56ce3ffe27de0cd4c53c54a3e897603f126e.png" src="../../_images/b7839168395c04636d4d3ca4880e56ce3ffe27de0cd4c53c54a3e897603f126e.png" />
</div>
</div>
<p>Note this may or may not be the trading cycle with maximum return. There may be other cycles with higher or lower returns, and that allow higher or lower trading volumes.</p>
Expand Down Expand Up @@ -1701,11 +1694,11 @@ <h2>Brute force search arbitrage with simple cycles<a class="headerlink" href="#
</div>
</div>
<div class="cell_output docutils container">
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>Trading cycle with 7 trades: USDT --&gt; ADA --&gt; BTC --&gt; ETH --&gt; USD --&gt; USDC --&gt; USDT
<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>Trading cycle with 8 trades: USDT --&gt; ADA --&gt; BTC --&gt; ETH --&gt; USD --&gt; BUSD --&gt; USDC --&gt; USDT
Return = 14.774 basis points
</pre></div>
</div>
<img alt="../../_images/749a1e74684bb83fc23c73b1f949936e4628dbbe4087808e81d58fedb67ae609.png" src="../../_images/749a1e74684bb83fc23c73b1f949936e4628dbbe4087808e81d58fedb67ae609.png" />
<img alt="../../_images/c3018b18d57bdbfb0d81a1d2b0865cddf1fbdc3546ef55dd637ea008e8ec1e65.png" src="../../_images/c3018b18d57bdbfb0d81a1d2b0865cddf1fbdc3546ef55dd637ea008e8ec1e65.png" />
</div>
</div>
</section>
Expand Down Expand Up @@ -1943,7 +1936,7 @@ <h2>Pyomo model for arbitrage with capacity constraints<a class="headerlink" hre
</div>
</div>
<div class="cell_output docutils container">
<img alt="../../_images/c8e09848a0061a31c2320dab857f119655d6501dcc36977800ba51e26f0a88a9.png" src="../../_images/c8e09848a0061a31c2320dab857f119655d6501dcc36977800ba51e26f0a88a9.png" />
<img alt="../../_images/8fe7be5a2fedb472960cc6e8d5a6e7ebef36528ae6ed33a3aa505374e9875be3.png" src="../../_images/8fe7be5a2fedb472960cc6e8d5a6e7ebef36528ae6ed33a3aa505374e9875be3.png" />
</div>
</div>
<p>If we want to be even more precise about the execution of the trading strategy, we can formulate a printout of the list of orders that we, as the counter party to the orders stated in the order book, should issue for our strategy to take place.</p>
Expand Down
2 changes: 1 addition & 1 deletion searchindex.js

Large diffs are not rendered by default.

0 comments on commit d1bda92

Please sign in to comment.