{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "6dab5b4c-6218-4bca-acf6-91a55a2d0861", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " \n", " Loading BokehJS ...\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " const force = true;\n", "\n", " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", "const JS_MIME_TYPE = 'application/javascript';\n", " const HTML_MIME_TYPE = 'text/html';\n", " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " const CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " const script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " const cell = handle.cell;\n", "\n", " const id = cell.output_area._bokeh_element_id;\n", " const server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id != null && id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd_clean, {\n", " iopub: {\n", " output: function(msg) {\n", " const id = msg.content.text.trim();\n", " if (id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd_destroy);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " const output_area = handle.output_area;\n", " const output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " const bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " const script_attrs = bk_div.children[0].attributes;\n", " for (let i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " const toinsert = this.create_output_subarea(\n", " metadata,\n", " CLASS_NAME,\n", " EXEC_MIME_TYPE\n", " );\n", " this.keyboard_manager.register_events(toinsert);\n", " // Render to node\n", " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " const events = require('base/js/events');\n", " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " const NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"

\\n\"+\n", " \"\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " const el = document.getElementById(\"1001\");\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", " function run_callbacks() {\n", " try {\n", " root._bokeh_onload_callbacks.forEach(function(callback) {\n", " if (callback != null)\n", " callback();\n", " });\n", " } finally {\n", " delete root._bokeh_onload_callbacks\n", " }\n", " console.debug(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", " function load_libs(css_urls, js_urls, callback) {\n", " if (css_urls == null) css_urls = [];\n", " if (js_urls == null) js_urls = [];\n", "\n", " root._bokeh_onload_callbacks.push(callback);\n", " if (root._bokeh_is_loading > 0) {\n", " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", " if (js_urls == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = css_urls.length + js_urls.length;\n", "\n", " function on_load() {\n", " root._bokeh_is_loading--;\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n", " run_callbacks()\n", " }\n", " }\n", "\n", " function on_error(url) {\n", " console.error(\"failed to load \" + url);\n", " }\n", "\n", " for (let i = 0; i < css_urls.length; i++) {\n", " const url = css_urls[i];\n", " const element = document.createElement(\"link\");\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\n", " element.rel = \"stylesheet\";\n", " element.type = \"text/css\";\n", " element.href = url;\n", " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", " document.body.appendChild(element);\n", " }\n", "\n", " for (let i = 0; i < js_urls.length; i++) {\n", " const url = js_urls[i];\n", " const element = document.createElement('script');\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\n", " element.async = false;\n", " element.src = url;\n", " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", " };\n", "\n", " function inject_raw_css(css) {\n", " const element = document.createElement(\"style\");\n", " element.appendChild(document.createTextNode(css));\n", " document.body.appendChild(element);\n", " }\n", "\n", " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n", " const css_urls = [];\n", "\n", " const inline_js = [ function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", "function(Bokeh) {\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " if (root.Bokeh !== undefined || force === true) {\n", " for (let i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }\n", "if (force === true) {\n", " display_loaded();\n", " }} else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!root._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " } else if (force !== true) {\n", " const cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", " }\n", "\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(css_urls, js_urls, function() {\n", " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"1001\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n const cell = $(document.getElementById(\"1001\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# we use bokeh for plotting\n", "from bokeh.io import output_notebook, show\n", "from bokeh.layouts import column\n", "from decimal import Decimal\n", "\n", "output_notebook()" ] }, { "cell_type": "markdown", "id": "2610e815", "metadata": {}, "source": [ "How Uniswap works\n", "---\n", "\n", "![uniswap](https://docs.uniswap.org/assets/images/anatomy-d22fb7ab46013a1195f086ee672468c7.jpg)\n", "\n", "Uniswap is an automated liquidity protocol powered by a constant product formula and implemented in a system of non-upgradeable smart contracts on the Ethereum blockchain. It obviates the need for trusted intermediaries, prioritizing decentralization, censorship resistance, and security. Uniswap is open-source software licensed under the GPL.\n", "\n", "Each Uniswap smart contract, or pair, manages a liquidity pool made up of reserves of two ERC-20 tokens.\n", "\n", "Anyone can become a liquidity provider (LP) for a pool by depositing an equivalent value of each underlying token in return for pool tokens. These tokens track pro-rata LP shares of the total reserves, and can be redeemed for the underlying assets at any time." ] }, { "cell_type": "code", "execution_count": 2, "id": "1a568232", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"6ddf2b43-c8f5-4a04-98b7-dbc911992b35\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1003\"}],\"sizing_mode\":\"stretch_both\"},\"id\":\"1075\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"1053\",\"type\":\"Selection\"},{\"attributes\":{\"below\":[{\"id\":\"1014\"}],\"center\":[{\"id\":\"1016\"},{\"id\":\"1020\"},{\"id\":\"1055\"}],\"left\":[{\"id\":\"1017\"}],\"renderers\":[{\"id\":\"1043\"},{\"id\":\"1062\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"1004\"},\"toolbar\":{\"id\":\"1029\"},\"width\":900,\"x_range\":{\"id\":\"1006\"},\"x_scale\":{\"id\":\"1010\"},\"y_range\":{\"id\":\"1008\"},\"y_scale\":{\"id\":\"1012\"}},\"id\":\"1003\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"label\":{\"value\":\"B Pool\"},\"renderers\":[{\"id\":\"1062\"}]},\"id\":\"1074\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1008\",\"type\":\"DataRange1d\"},{\"attributes\":{\"source\":{\"id\":\"1037\"}},\"id\":\"1063\",\"type\":\"CDSView\"},{\"attributes\":{\"factors\":[\"Before Swap\",\"After Swap\"]},\"id\":\"1006\",\"type\":\"FactorRange\"},{\"attributes\":{},\"id\":\"1012\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Pool balance history\"},\"id\":\"1004\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1010\",\"type\":\"CategoricalScale\"},{\"attributes\":{},\"id\":\"1015\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1056\"},{\"id\":\"1074\"}]},\"id\":\"1055\",\"type\":\"Legend\"},{\"attributes\":{\"axis\":{\"id\":\"1014\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1016\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"Reserves\",\"coordinates\":null,\"formatter\":{\"id\":\"1047\"},\"group\":null,\"major_label_policy\":{\"id\":\"1048\"},\"ticker\":{\"id\":\"1018\"}},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label\":\"Simulation Steps\",\"coordinates\":null,\"formatter\":{\"id\":\"1050\"},\"group\":null,\"major_label_policy\":{\"id\":\"1051\"},\"ticker\":{\"id\":\"1015\"}},\"id\":\"1014\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1026\",\"type\":\"HelpTool\"},{\"attributes\":{\"label\":{\"value\":\"A Pool\"},\"renderers\":[{\"id\":\"1043\"}]},\"id\":\"1056\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1047\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"axis\":{\"id\":\"1017\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{\"range\":{\"id\":\"1006\"},\"value\":-0.1},\"id\":\"1038\",\"type\":\"Dodge\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"A\",\"@A{0,0.000}\"],[\"B\",\"@B{0,0.000}\"]]},\"id\":\"1028\",\"type\":\"HoverTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1037\"},\"glyph\":{\"id\":\"1040\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1042\"},\"nonselection_glyph\":{\"id\":\"1041\"},\"view\":{\"id\":\"1044\"}},\"id\":\"1043\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"A\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1038\"}}},\"id\":\"1040\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"A\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1038\"}}},\"id\":\"1041\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1048\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1027\"}},\"id\":\"1023\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1050\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1025\",\"type\":\"ResetTool\"},{\"attributes\":{\"source\":{\"id\":\"1037\"}},\"id\":\"1044\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"A\":[100.0,90.93381686310063],\"B\":[100.0,109.97008973080757],\"steps\":[\"Before Swap\",\"After Swap\"]},\"selected\":{\"id\":\"1053\"},\"selection_policy\":{\"id\":\"1052\"}},\"id\":\"1037\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1051\",\"type\":\"AllLabels\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1027\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"B\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1057\"}}},\"id\":\"1060\",\"type\":\"VBar\"},{\"attributes\":{\"range\":{\"id\":\"1006\"},\"value\":0.1},\"id\":\"1057\",\"type\":\"Dodge\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"B\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1057\"}}},\"id\":\"1061\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"A\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1038\"}}},\"id\":\"1042\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"B\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1057\"}}},\"id\":\"1059\",\"type\":\"VBar\"},{\"attributes\":{\"tools\":[{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"},{\"id\":\"1025\"},{\"id\":\"1026\"},{\"id\":\"1028\"}]},\"id\":\"1029\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1052\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1037\"},\"glyph\":{\"id\":\"1059\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1061\"},\"nonselection_glyph\":{\"id\":\"1060\"},\"view\":{\"id\":\"1063\"}},\"id\":\"1062\",\"type\":\"GlyphRenderer\"}],\"root_ids\":[\"1075\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n", " const render_items = [{\"docid\":\"6ddf2b43-c8f5-4a04-98b7-dbc911992b35\",\"root_ids\":[\"1075\"],\"roots\":{\"1075\":\"c6cdb4d9-8b45-47b2-a65f-30e46d1600de\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "1075" } }, "output_type": "display_data" } ], "source": [ "from cpy_amm.market import MarketPair, Pool, TradeOrder\n", "from cpy_amm.swap import constant_product_swap\n", "from cpy_amm.plotting import new_pool_figure\n", "\n", "# liquidity pool made up of reserves of Token A \n", "pool_token_A = Pool(\"A\", 100)\n", "# liquidity pool made up of reserves of Token B \n", "pool_token_B = Pool(\"B\", 100)\n", "# create a market for A/B\n", "mkt = MarketPair(pool_token_B, pool_token_A, 0.003, 0)\n", "# amount of tokens A to swap in\n", "trade_order = TradeOrder(\"A/B\", 10, mkt.swap_fee)\n", "# swap 10 tokens A for tokens B\n", "constant_product_swap(mkt, trade_order) \n", "# plotting the reserves before and after swap \n", "p = new_pool_figure(pool_token_A, pool_token_B, steps=[\"Before Swap\", \"After Swap\"])\n", "# display plot\n", "show(column(p, sizing_mode=\"stretch_both\"))" ] }, { "cell_type": "markdown", "id": "ed7916b6", "metadata": {}, "source": [ "![constant product](https://docs.uniswap.org/assets/images/trade-b19a05be2c43a62708ab498766dc6d13.jpg)\n", "\n", "Pairs act as automated market makers, standing ready to accept one token for the other as long as the \"constant product\" formula is preserved. This formula, most simply expressed as `x * y = k`, states that trades must not change the product (`k`) of a pair’s reserve balances (`x` and `y`). Because `k` remains unchanged from the reference frame of a trade, it is often referred to as the invariant. This formula has the desirable property that larger trades (relative to reserves) execute at exponentially worse rates than smaller ones.\n", "\n", "Because the relative price of the two pair assets can only be changed through trading, divergences between the Uniswap price and external prices create arbitrage opportunities. This mechanism ensures that Uniswap prices always trend toward the market-clearing price.\n", "\n", "⚠️ **Please not that contrary to UNISWAP, we use the convention BASE/QUOTE. In our case Uniswap pair A/B corresponds to B/A eg. to buy the pair represented by the market you need to input the quote token, in this case A, to receive the base token, in this case B. The price however remains the same eg. A / B (Quote / Base)**" ] }, { "cell_type": "code", "execution_count": 3, "id": "b8fd6aa3", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"f91efe1d-f964-471e-a02c-bbec8616f30c\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1136\"}],\"sizing_mode\":\"stretch_both\"},\"id\":\"1263\",\"type\":\"Column\"},{\"attributes\":{\"label\":{\"value\":\"Y=K/X\"},\"renderers\":[{\"id\":\"1173\"}]},\"id\":\"1186\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1159\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1188\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1187\"},\"glyph\":{\"id\":\"1188\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1190\"},\"name\":\"7773417308351653464\",\"nonselection_glyph\":{\"id\":\"1189\"},\"view\":{\"id\":\"1192\"}},\"id\":\"1191\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"tools\":[{\"id\":\"1155\"},{\"id\":\"1156\"},{\"id\":\"1157\"},{\"id\":\"1158\"},{\"id\":\"1159\"},{\"id\":\"1160\"},{\"id\":\"1205\"},{\"id\":\"1235\"},{\"id\":\"1261\"}]},\"id\":\"1162\",\"type\":\"Toolbar\"},{\"attributes\":{\"below\":[{\"id\":\"1147\"}],\"center\":[{\"id\":\"1150\"},{\"id\":\"1154\"},{\"id\":\"1185\"}],\"left\":[{\"id\":\"1151\"}],\"renderers\":[{\"id\":\"1173\"},{\"id\":\"1191\"},{\"id\":\"1211\"},{\"id\":\"1217\"},{\"id\":\"1241\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"1137\"},\"toolbar\":{\"id\":\"1162\"},\"width\":900,\"x_range\":{\"id\":\"1139\"},\"x_scale\":{\"id\":\"1143\"},\"y_range\":{\"id\":\"1141\"},\"y_scale\":{\"id\":\"1145\"}},\"id\":\"1136\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.3,\"line_color\":\"red\",\"line_width\":20,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1208\",\"type\":\"Line\"},{\"attributes\":{\"callback\":null,\"names\":[\"7773417308351653464\"],\"tooltips\":[[\"B\",\"1200.000\"],[\"A\",\"400.000\"],[\"Mid Price\",\"3.000\"]]},\"id\":\"1205\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1178\",\"type\":\"AllLabels\"},{\"attributes\":{\"callback\":null,\"names\":[\"2958324245051749702\"],\"tooltips\":[[\"B\",\"1210.000\"],[\"A\",\"396.694\"],[\"Mid Price (after swap)\",\"3.050\"]]},\"id\":\"1261\",\"type\":\"HoverTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1240\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"1169\"}},\"id\":\"1174\",\"type\":\"CDSView\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1161\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1189\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"1237\"}},\"id\":\"1242\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.6,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1170\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1171\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1141\",\"type\":\"DataRange1d\"},{\"attributes\":{\"data\":{\"x\":[1210.0],\"y\":[396.6942148760331]},\"selected\":{\"id\":\"1259\"},\"selection_policy\":{\"id\":\"1258\"}},\"id\":\"1237\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1237\"},\"glyph\":{\"id\":\"1238\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1240\"},\"name\":\"2958324245051749702\",\"nonselection_glyph\":{\"id\":\"1239\"},\"view\":{\"id\":\"1242\"}},\"id\":\"1241\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1232\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1182\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1233\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1156\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1202\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":[1200.0,1210.0],\"y\":[400.0,396.6942148760331]},\"selected\":{\"id\":\"1231\"},\"selection_policy\":{\"id\":\"1230\"}},\"id\":\"1207\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1239\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"1207\"}},\"id\":\"1212\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1155\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1139\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1258\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1203\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1143\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1207\"},\"glyph\":{\"id\":\"1208\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1210\"},\"nonselection_glyph\":{\"id\":\"1209\"},\"view\":{\"id\":\"1212\"}},\"id\":\"1211\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1172\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1214\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1152\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Constant Product AMM Curve for the pair B/A\"},\"id\":\"1137\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1213\"},\"glyph\":{\"id\":\"1214\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1216\"},\"name\":\"2857237936039437881\",\"nonselection_glyph\":{\"id\":\"1215\"},\"view\":{\"id\":\"1218\"}},\"id\":\"1217\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1151\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1154\",\"type\":\"Grid\"},{\"attributes\":{\"data\":{\"x\":[1204.9896265113655],\"y\":[398.34367818557536]},\"selected\":{\"id\":\"1233\"},\"selection_policy\":{\"id\":\"1232\"}},\"id\":\"1213\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1259\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"red\",\"line_width\":20,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1210\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1181\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1180\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"red\",\"line_width\":20,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1209\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1213\"}},\"id\":\"1218\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1183\",\"type\":\"Selection\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1216\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"names\":[\"2857237936039437881\"],\"tooltips\":[[\"B\",\"1204.990\"],[\"A\",\"398.344\"],[\"Swap Execution Price\",\"3.025\"]]},\"id\":\"1235\",\"type\":\"HoverTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1169\"},\"glyph\":{\"id\":\"1170\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1172\"},\"nonselection_glyph\":{\"id\":\"1171\"},\"view\":{\"id\":\"1174\"}},\"id\":\"1173\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1238\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1215\",\"type\":\"Circle\"},{\"attributes\":{\"axis_label\":\"Amount B\",\"coordinates\":null,\"formatter\":{\"id\":\"1177\"},\"group\":null,\"major_label_policy\":{\"id\":\"1178\"},\"ticker\":{\"id\":\"1152\"}},\"id\":\"1151\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1148\",\"type\":\"BasicTicker\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1186\"}]},\"id\":\"1185\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1231\",\"type\":\"Selection\"},{\"attributes\":{\"axis_label\":\"Amount A\",\"coordinates\":null,\"formatter\":{\"id\":\"1180\"},\"group\":null,\"major_label_policy\":{\"id\":\"1181\"},\"ticker\":{\"id\":\"1148\"}},\"id\":\"1147\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1160\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1145\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1230\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis\":{\"id\":\"1147\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1150\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1190\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1177\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"source\":{\"id\":\"1187\"}},\"id\":\"1192\",\"type\":\"CDSView\"},{\"attributes\":{\"overlay\":{\"id\":\"1161\"}},\"id\":\"1157\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"data\":{\"x\":[1200.0],\"y\":[400.0]},\"selected\":{\"id\":\"1203\"},\"selection_policy\":{\"id\":\"1202\"}},\"id\":\"1187\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]}},\"selected\":{\"id\":\"1183\"},\"selection_policy\":{\"id\":\"1182\"}},\"id\":\"1169\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1158\",\"type\":\"SaveTool\"}],\"root_ids\":[\"1263\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n", " const render_items = [{\"docid\":\"f91efe1d-f964-471e-a02c-bbec8616f30c\",\"root_ids\":[\"1263\"],\"roots\":{\"1263\":\"91b1db6d-730a-4e70-9571-a735f2e62804\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "1263" } }, "output_type": "display_data" } ], "source": [ "from cpy_amm.plotting import new_price_impact_figure\n", "\n", "# liquidity pool made up of reserves of Token A \n", "pool_token_A = Pool(\"A\", 1200)\n", "# liquidity pool made up of reserves of Token B \n", "pool_token_B = Pool(\"B\", 400)\n", "# create a market for B/A with 0.03% fee\n", "mkt = MarketPair(pool_token_A, pool_token_B, 0.003, 0)\n", "# swap 10 A for B\n", "trade_order = TradeOrder(\"B/A\", 10, mkt.swap_fee)\n", "# new plot with price impact of swapping 3 tokens A\n", "p = new_price_impact_figure(mkt, trade_order)\n", "# display plot\n", "show(column(p, sizing_mode=\"stretch_both\"))" ] }, { "cell_type": "markdown", "id": "1a2b4913", "metadata": {}, "source": [ "First liquidity provider\n", "---\n", "\n", "Each Uniswap liquidity pool is a trading venue for a pair of ERC20 tokens. When a pool contract is created, its balances of each token are 0; in order for the pool to begin facilitating trades, someone must seed it with an initial deposit of each token.\n", "\n", "The first liquidity provider is the one who sets the initial price of the pool. They are incentivized to deposit an equal value of both tokens into the pool. To see why, consider the case where the first liquidity provider deposits tokens at a ratio different from the current market rate. This immediately creates a profitable arbitrage opportunity, which is likely to be taken by an external party. " ] }, { "cell_type": "code", "execution_count": 4, "id": "7b942cf8", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"e66ceb25-6ca1-47b3-8813-9945535e0fc2\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1382\"},{\"id\":\"1453\"}],\"sizing_mode\":\"stretch_both\"},\"id\":\"1525\",\"type\":\"Column\"},{\"attributes\":{},\"id\":\"1387\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1423\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1424\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1426\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1427\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.6,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1416\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1389\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1428\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1449\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1429\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1448\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1415\"},\"glyph\":{\"id\":\"1416\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1418\"},\"nonselection_glyph\":{\"id\":\"1417\"},\"view\":{\"id\":\"1420\"}},\"id\":\"1419\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1502\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"below\":[{\"id\":\"1464\"}],\"center\":[{\"id\":\"1466\"},{\"id\":\"1470\"},{\"id\":\"1505\"}],\"left\":[{\"id\":\"1467\"}],\"renderers\":[{\"id\":\"1493\"},{\"id\":\"1512\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"1454\"},\"toolbar\":{\"id\":\"1479\"},\"width\":900,\"x_range\":{\"id\":\"1456\"},\"x_scale\":{\"id\":\"1460\"},\"y_range\":{\"id\":\"1458\"},\"y_scale\":{\"id\":\"1462\"}},\"id\":\"1453\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]}},\"selected\":{\"id\":\"1429\"},\"selection_policy\":{\"id\":\"1428\"}},\"id\":\"1415\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1418\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1501\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1500\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"1393\"}],\"center\":[{\"id\":\"1396\"},{\"id\":\"1400\"},{\"id\":\"1431\"}],\"left\":[{\"id\":\"1397\"}],\"renderers\":[{\"id\":\"1419\"},{\"id\":\"1437\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"1383\"},\"toolbar\":{\"id\":\"1408\"},\"width\":900,\"x_range\":{\"id\":\"1385\"},\"x_scale\":{\"id\":\"1389\"},\"y_range\":{\"id\":\"1387\"},\"y_scale\":{\"id\":\"1391\"}},\"id\":\"1382\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1497\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1498\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1503\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"UNI\":[791.1392405063291,495.017254041078],\"USDT\":[5000.0,7991.026919242273],\"steps\":[\"Before Swap\",\"After Swap\"]},\"selected\":{\"id\":\"1503\"},\"selection_policy\":{\"id\":\"1502\"}},\"id\":\"1487\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1488\"}}},\"id\":\"1492\",\"type\":\"VBar\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1432\"}]},\"id\":\"1431\",\"type\":\"Legend\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1488\"}}},\"id\":\"1490\",\"type\":\"VBar\"},{\"attributes\":{\"label\":{\"value\":\"Y=K/X\"},\"renderers\":[{\"id\":\"1419\"}]},\"id\":\"1432\",\"type\":\"LegendItem\"},{\"attributes\":{\"range\":{\"id\":\"1456\"},\"value\":-0.1},\"id\":\"1488\",\"type\":\"Dodge\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1436\",\"type\":\"Circle\"},{\"attributes\":{\"data\":{\"x\":[5000.0],\"y\":[791.1392405063291]},\"selected\":{\"id\":\"1449\"},\"selection_policy\":{\"id\":\"1448\"}},\"id\":\"1433\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1488\"}}},\"id\":\"1491\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1406\",\"type\":\"HelpTool\"},{\"attributes\":{\"source\":{\"id\":\"1433\"}},\"id\":\"1438\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Constant Product AMM Curve for the pair UNI/USDT\"},\"id\":\"1383\",\"type\":\"Title\"},{\"attributes\":{\"factors\":[\"Before Swap\",\"After Swap\"]},\"id\":\"1456\",\"type\":\"FactorRange\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1434\",\"type\":\"Circle\"},{\"attributes\":{\"axis_label\":\"Amount UNI\",\"coordinates\":null,\"formatter\":{\"id\":\"1423\"},\"group\":null,\"major_label_policy\":{\"id\":\"1424\"},\"ticker\":{\"id\":\"1398\"}},\"id\":\"1397\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1433\"},\"glyph\":{\"id\":\"1434\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1436\"},\"name\":\"-8301454650589535677\",\"nonselection_glyph\":{\"id\":\"1435\"},\"view\":{\"id\":\"1438\"}},\"id\":\"1437\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"Amount USDT\",\"coordinates\":null,\"formatter\":{\"id\":\"1426\"},\"group\":null,\"major_label_policy\":{\"id\":\"1427\"},\"ticker\":{\"id\":\"1394\"}},\"id\":\"1393\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"names\":[\"-8301454650589535677\"],\"tooltips\":[[\"UNI\",\"5000.000\"],[\"USDT\",\"791.139\"],[\"Mid Price\",\"6.320\"]]},\"id\":\"1451\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1385\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1435\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1394\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1393\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1396\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1391\",\"type\":\"LinearScale\"},{\"attributes\":{\"axis\":{\"id\":\"1397\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1400\",\"type\":\"Grid\"},{\"attributes\":{\"source\":{\"id\":\"1415\"}},\"id\":\"1420\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1465\",\"type\":\"CategoricalTicker\"},{\"attributes\":{},\"id\":\"1458\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1460\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Pool balance history\"},\"id\":\"1454\",\"type\":\"Title\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1507\"}}},\"id\":\"1510\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1462\",\"type\":\"LinearScale\"},{\"attributes\":{\"label\":{\"value\":\"USDT Pool\"},\"renderers\":[{\"id\":\"1493\"}]},\"id\":\"1506\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1398\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1464\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1466\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"Reserves\",\"coordinates\":null,\"formatter\":{\"id\":\"1497\"},\"group\":null,\"major_label_policy\":{\"id\":\"1498\"},\"ticker\":{\"id\":\"1468\"}},\"id\":\"1467\",\"type\":\"LinearAxis\"},{\"attributes\":{\"range\":{\"id\":\"1456\"},\"value\":0.1},\"id\":\"1507\",\"type\":\"Dodge\"},{\"attributes\":{\"axis_label\":\"Simulation Steps\",\"coordinates\":null,\"formatter\":{\"id\":\"1500\"},\"group\":null,\"major_label_policy\":{\"id\":\"1501\"},\"ticker\":{\"id\":\"1465\"}},\"id\":\"1464\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1402\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1476\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"1401\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1507\"}}},\"id\":\"1511\",\"type\":\"VBar\"},{\"attributes\":{\"overlay\":{\"id\":\"1407\"}},\"id\":\"1403\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1507\"}}},\"id\":\"1509\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1404\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1487\"},\"glyph\":{\"id\":\"1509\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1511\"},\"nonselection_glyph\":{\"id\":\"1510\"},\"view\":{\"id\":\"1513\"}},\"id\":\"1512\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1405\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"1467\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1470\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1468\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"USDT\",\"@USDT{0,0.000}\"],[\"UNI\",\"@UNI{0,0.000}\"]]},\"id\":\"1478\",\"type\":\"HoverTool\"},{\"attributes\":{\"label\":{\"value\":\"UNI Pool\"},\"renderers\":[{\"id\":\"1512\"}]},\"id\":\"1524\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1472\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"source\":{\"id\":\"1487\"}},\"id\":\"1513\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1471\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1477\"}},\"id\":\"1473\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1474\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1475\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1417\",\"type\":\"Line\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1477\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"tools\":[{\"id\":\"1401\"},{\"id\":\"1402\"},{\"id\":\"1403\"},{\"id\":\"1404\"},{\"id\":\"1405\"},{\"id\":\"1406\"},{\"id\":\"1451\"}]},\"id\":\"1408\",\"type\":\"Toolbar\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1407\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1487\"},\"glyph\":{\"id\":\"1490\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1492\"},\"nonselection_glyph\":{\"id\":\"1491\"},\"view\":{\"id\":\"1494\"}},\"id\":\"1493\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"tools\":[{\"id\":\"1471\"},{\"id\":\"1472\"},{\"id\":\"1473\"},{\"id\":\"1474\"},{\"id\":\"1475\"},{\"id\":\"1476\"},{\"id\":\"1478\"}]},\"id\":\"1479\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"1487\"}},\"id\":\"1494\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1506\"},{\"id\":\"1524\"}]},\"id\":\"1505\",\"type\":\"Legend\"}],\"root_ids\":[\"1525\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n", " const render_items = [{\"docid\":\"e66ceb25-6ca1-47b3-8813-9945535e0fc2\",\"root_ids\":[\"1525\"],\"roots\":{\"1525\":\"37a75c30-a479-4bf4-b586-603db4fe0d37\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "1525" } }, "output_type": "display_data" } ], "source": [ "from cpy_amm.market import new_market, MarketQuote\n", "from cpy_amm.swap import constant_product_swap\n", "from cpy_amm.plotting import new_constant_product_figure, new_pool_figure\n", "\n", "# USDT/USD market price\n", "usdt_usd = MarketQuote(\"USDT/USD\", 1)\n", "# UNI/USD market price\n", "uni_usd = MarketQuote(\"UNI/USD\", 6.32)\n", "# create a 10000 USD market for UNI/USDT with 0.3%\n", "mkt = new_market(10000, usdt_usd, uni_usd, 0.003)\n", "# new plot with constant product curve\n", "cp_plot = new_constant_product_figure(mkt)\n", "# swap 3000 USDT for UNI\n", "trade_order = TradeOrder(\"UNI/USDT\", 3000, mkt.swap_fee)\n", "# swap \n", "constant_product_swap(mkt, trade_order) \n", "# plotting the reserves before and after the swap \n", "pools_plot = new_pool_figure(mkt.pool_1, mkt.pool_2, steps=[\"Before Swap\", \"After Swap\"])\n", "# display plots\n", "show(column(cp_plot, pools_plot, sizing_mode=\"stretch_both\"))" ] }, { "cell_type": "markdown", "id": "acda08c6", "metadata": {}, "source": [ "Providing Liquidity\n", "---\n", "\n", "When providing liquidity from a smart contract, the most important thing to keep in mind is that tokens deposited into a pool at any rate other than the current reserve ratio are vulnerable to being arbitraged. As an example, if the ratio of x:y in a pair is 10:2 (i.e. the price is 5), and someone naively adds liquidity at 5:2 (a price of 2.5), the contract will simply accept all tokens (changing the price to 3.75 and opening up the market to arbitrage), but only issue pool tokens entitling the sender to the amount of assets sent at the proper ratio, in this case 5:1. To avoid donating to arbitrageurs, it is imperative to add liquidity at the current price. Luckily, it's easy to ensure that this condition is met!\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "id": "a1c31e50", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"7519f599-a884-4f5a-b96b-9827e75a66b1\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"1686\"},{\"id\":\"1913\"}],\"sizing_mode\":\"stretch_both\"},\"id\":\"1985\",\"type\":\"Column\"},{\"attributes\":{\"source\":{\"id\":\"1947\"}},\"id\":\"1954\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1966\"},{\"id\":\"1984\"}]},\"id\":\"1965\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"1775\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1777\"}},\"id\":\"1782\",\"type\":\"CDSView\"},{\"attributes\":{\"data\":{\"x\":[9945.226917057904],\"y\":[1573.611853964858]},\"selected\":{\"id\":\"1849\"},\"selection_policy\":{\"id\":\"1848\"}},\"id\":\"1825\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1774\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.6,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1802\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1825\"}},\"id\":\"1830\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1708\",\"type\":\"SaveTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1711\"}},\"id\":\"1707\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1828\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1825\"},\"glyph\":{\"id\":\"1826\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1828\"},\"name\":\"-3775048253563167326\",\"nonselection_glyph\":{\"id\":\"1827\"},\"view\":{\"id\":\"1830\"}},\"id\":\"1829\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1705\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1879\",\"type\":\"Selection\"},{\"attributes\":{\"source\":{\"id\":\"1853\"}},\"id\":\"1858\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1706\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1848\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1827\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1702\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"1701\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1704\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"names\":[\"-3775048253563167326\"],\"tooltips\":[[\"UNI\",\"9945.227\"],[\"USDT\",\"1573.612\"],[\"Mid Price\",\"6.320\"]]},\"id\":\"1851\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1727\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1963\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1849\",\"type\":\"Selection\"},{\"attributes\":{\"axis_label\":\"Amount UNI\",\"coordinates\":null,\"formatter\":{\"id\":\"1727\"},\"group\":null,\"major_label_policy\":{\"id\":\"1728\"},\"ticker\":{\"id\":\"1702\"}},\"id\":\"1701\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1958\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"1957\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1733\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1732\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1753\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1689\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1752\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1962\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1731\",\"type\":\"AllLabels\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1856\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":[12417.840375586857],\"y\":[1964.8481606941225]},\"selected\":{\"id\":\"1909\"},\"selection_policy\":{\"id\":\"1908\"}},\"id\":\"1881\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1853\"},\"glyph\":{\"id\":\"1854\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1856\"},\"nonselection_glyph\":{\"id\":\"1855\"},\"view\":{\"id\":\"1858\"}},\"id\":\"1857\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"below\":[{\"id\":\"1697\"}],\"center\":[{\"id\":\"1700\"},{\"id\":\"1704\"},{\"id\":\"1735\"}],\"left\":[{\"id\":\"1701\"}],\"renderers\":[{\"id\":\"1723\"},{\"id\":\"1741\"},{\"id\":\"1761\"},{\"id\":\"1781\"},{\"id\":\"1805\"},{\"id\":\"1829\"},{\"id\":\"1857\"},{\"id\":\"1885\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"1687\"},\"toolbar\":{\"id\":\"1712\"},\"width\":900,\"x_range\":{\"id\":\"1689\"},\"x_scale\":{\"id\":\"1693\"},\"y_range\":{\"id\":\"1691\"},\"y_scale\":{\"id\":\"1695\"}},\"id\":\"1686\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1730\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1739\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1740\",\"type\":\"Circle\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1855\",\"type\":\"Line\"},{\"attributes\":{\"source\":{\"id\":\"1881\"}},\"id\":\"1886\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1737\"},\"glyph\":{\"id\":\"1738\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1740\"},\"name\":\"-8301454650589535677\",\"nonselection_glyph\":{\"id\":\"1739\"},\"view\":{\"id\":\"1742\"}},\"id\":\"1741\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1738\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"1757\"}},\"id\":\"1762\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"1737\"}},\"id\":\"1742\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"1695\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1960\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"C5l+PBdah0CeW5t4T3+IQDEeuLSHpIlAxODU8L/JikBWo/Es+O6LQOllDmkwFI1AfCgrpWg5jkAO60fhoF6PQNFWso7sQZBAGrjArIjUkEBkGc/KJGeRQK163ejA+ZFA9tvrBl2MkkBAPfok+R6TQImeCEOVsZNA0v8WYTFElEAcYSV/zdaUQGbCM51paZVAryNCuwX8lUD4hFDZoY6WQELmXvc9IZdAi0dtFdqzl0DUqHszdkaYQB4KilES2ZhAaGuYb65rmUCwzKaNSv6ZQPottavmkJpARI/DyYIjm0CM8NHnHrabQNZR4AW7SJxAILPuI1fbnEBqFP1B822dQLJ1C2CPAJ5A/NYZfiuTnkBGOCicxyWfQI6ZNrpjuJ9AbH0i7H8loEARrin7zW6gQLXeMAocuKBAWg84GWoBoUD/Pz8ouEqhQKRwRjcGlKFASKFNRlTdoUDt0VRVoiaiQJICXGTwb6JANjNjcz65okDbY2qCjAKjQICUcZHaS6NAJcV4oCiVo0DJ9X+vdt6jQG4mh77EJ6RAE1eOzRJxpEC3h5XcYLqkQFy4nOuuA6VAAemj+vxMpUClGasJS5alQEpKshiZ36VA73q5J+copkCUq8A2NXKmQDjcx0WDu6ZA3QzPVNEEp0CCPdZjH06nQCdu3XJtl6dAy57kgbvgp0Bwz+uQCSqoQBUA859Xc6hAuTD6rqW8qEBeYQG+8wWpQAOSCM1BT6lAqMIP3I+YqUBM8xbr3eGpQPEjHvorK6pAllQlCXp0qkA6hSwYyL2qQN+1MycWB6tAhOY6NmRQq0AoF0JFspmrQM1HSVQA46tAcnhQY04srEAXqVdynHWsQLvZXoHqvqxAYApmkDgIrUAFO22fhlGtQKlrdK7Umq1ATpx7vSLkrUDzzILMcC2uQJf9idu+dq5APC6R6gzArkDhXpj5WgmvQIaPnwipUq9AKsCmF/ebr0DP8K0mReWvQLqQ2ppJF7BADCleovA7sEBeweGpl2CwQLFZZbE+hbBAA/LouOWpsEBVimzAjM6wQKgi8Mcz87BA+rpzz9oXsUBMU/fWgTyxQJ/ret4oYbFA8YP+5c+FsUBDHILtdqqxQJa0BfUdz7FA6EyJ/MTzsUA75QwEbBiyQI19kAsTPbJA3xUUE7phskAyrpcaYYayQIRGGyIIq7JA1t6eKa/PskAodyIxVvSyQHsPpjj9GLNAzacpQKQ9s0AfQK1HS2KzQHLYME/yhrNAxHC0Vpmrs0AWCTheQNCzQGmhu2Xn9LNAuzk/bY4ZtEAO0sJ0NT60QGBqRnzcYrRAsgLKg4OHtEAFm02LKqy0QFcz0ZLR0LRAqctUmnj1tED8Y9ihHxq1QE78W6nGPrVAoJTfsG1jtUDzLGO4FIi1QEXF5r+7rLVAl11qx2LRtUDq9e3OCfa1QDyOcdawGrZAjib13Vc/tkDhvnjl/mO2QDNX/OyliLZAhu9/9EyttkDYhwP889G2QCoghwOb9rZAfbgKC0Ibt0DPUI4S6T+3QCHpERqQZLdAdIGVITeJt0DGGRkp3q23QBiynDCF0rdAa0ogOCz3t0C94qM/0xu4QA97J0d6QLhAYhOrTiFluEC0qy5WyIm4QAZEsl1vrrhAWdw1ZRbTuECrdLlsvfe4QP0MPXRkHLlAUKXAewtBuUCiPUSDsmW5QPXVx4pZirlAR25LkgCvuUCZBs+Zp9O5QOyeUqFO+LlAPjfWqPUcukCQz1mwnEG6QONn3bdDZrpANQBhv+qKukCHmOTGka+6QNowaM441LpALMnr1d/4ukB+YW/dhh27QNH58uQtQrtAI5J27NRmu0B1Kvrze4u7QMjCffsisLtAGlsBA8rUu0Bt84QKcfm7QL+LCBIYHrxAESSMGb9CvEBkvA8hZme8QLZUkygNjLxACO0WMLSwvEBbhZo3W9W8QK0dHj8C+rxA/7WhRqkevUBSTiVOUEO9QKTmqFX3Z71A9n4sXZ6MvUBJF7BkRbG9QJuvM2zs1b1A7Ue3c5P6vUBA4Dp7Oh++QJJ4voLhQ75A5RBCiohovkA3qcWRL42+QIlBSZnWsb5A3NnMoH3WvkAuclCoJPu+QIAK1K/LH79A06JXt3JEv0AlO9u+GWm/QHfTXsbAjb9AymvizWeyv0AcBGbVDte/QG6c6dy1+79AYZo2ci4QwECKZvj1gSLAQLMyunnVNMBA3P57/ShHwEAFyz2BfFnAQC6X/wTQa8BAWGPBiCN+wECBL4MMd5DAQKr7RJDKosBA08cGFB61wED8k8iXccfAQCZgihvF2cBATyxMnxjswEB4+A0jbP7AQKHEz6a/EMFAypCRKhMjwUDzXFOuZjXBQB0pFTK6R8FARvXWtQ1awUBvwZg5YWzBQJiNWr20fsFAwlkcQQiRwUDrJd7EW6PBQBTyn0ivtcFAPb5hzALIwUBmiiNQVtrBQI9W5dOp7MFAuSKnV/3+wUDi7mjbUBHCQAu7Kl+kI8JANIfs4vc1wkBdU65mS0jCQIYfcOqeWsJAsOsxbvJswkDZt/PxRX/CQAKEtXWZkcJAK1B3+eyjwkBUHDl9QLbCQH7o+gCUyMJAp7S8hOfawkDQgH4IO+3CQPlMQIyO/8JAIhkCEOIRw0BL5cOTNSTDQHWxhReJNsNAnn1Hm9xIw0DHSQkfMFvDQPAVy6KDbcNAGeKMJtd/w0BCrk6qKpLDQGx6EC5+pMNAlUbSsdG2w0C+EpQ1JcnDQOfeVbl428NAEKsXPcztw0A6d9nAHwDEQGNDm0RzEsRAjA9dyMYkxEC12x5MGjfEQN6n4M9tScRAB3SiU8FbxEAxQGTXFG7EQFoMJltogMRAg9jn3ruSxECspKliD6XEQNVwa+Zit8RA/jwtarbJxEAoCe/tCdzEQFHVsHFd7sRAeqFy9bAAxUCjbTR5BBPFQMw59vxXJcVA9gW4gKs3xUAf0nkE/0nFQEieO4hSXMVAcWr9C6ZuxUCaNr+P+YDFQMMCgRNNk8VA7c5Cl6ClxUAWmwQb9LfFQD9nxp5HysVAaDOIIpvcxUCR/0mm7u7FQLrLCypCAcZA5JfNrZUTxkANZI8x6SXGQDYwUbU8OMZAX/wSOZBKxkCIyNS841zGQLKUlkA3b8ZA22BYxIqBxkAELRpI3pPGQC3528sxpsZAVsWdT4W4xkB/kV/T2MrGQKldIVcs3cZA0inj2n/vxkD79aRe0wHHQCTCZuImFMdATY4oZnomx0B2WurpzTjHQKAmrG0hS8dAyfJt8XRdx0Dyvi91yG/HQBuL8fgbgsdARFezfG+Ux0BtI3UAw6bHQJfvNoQWucdAwLv4B2rLx0Dph7qLvd3HQBJUfA8R8MdAOyA+k2QCyEBl7P8WuBTIQI64wZoLJ8hAt4SDHl85yEDgUEWiskvIQAkdByYGXshAMunIqVlwyEBctYotrYLIQIWBTLEAlchArk0ONVSnyEDXGdC4p7nIQADmkTz7y8hAKbJTwE7eyEBTfhVEovDIQHxK18f1AslApRaZS0kVyUDO4lrPnCfJQPeuHFPwOclAIXve1kNMyUBKR6Bal17JQHMTYt7qcMlAnN8jYj6DyUDFq+XlkZXJQO53p2nlp8lAGERp7Ti6yUBBECtxjMzJQGrc7PTf3slAk6iueDPxyUC8dHD8hgPKQOVAMoDaFcpADw30Ay4oykA42bWHgTrKQGGldwvVTMpAinE5jyhfykCzPfsSfHHKQN0JvZbPg8pABtZ+GiOWykAvokCedqjKQFhuAiLKuspAgTrEpR3NykCqBoYpcd/KQNTSR63E8cpA/Z4JMRgEy0Ama8u0axbLQE83jTi/KMtAeANPvBI7y0ChzxBAZk3LQMub0sO5X8tA9GeURw1yy0AdNFbLYITLQEYAGE+0lstAb8zZ0gepy0CZmJtWW7vLQMJkXdquzctA6zAfXgLgy0AU/eDhVfLLQD3JomWpBMxAZpVk6fwWzECQYSZtUCnMQLkt6PCjO8xA4vmpdPdNzEALxmv4SmDMQDSSLXyecsxAXV7v//GEzECHKrGDRZfMQLD2cgeZqcxA2cI0i+y7zEACj/YOQM7MQCtbuJKT4MxAVSd6FufyzEB+8zuaOgXNQKe//R2OF81A0Iu/oeEpzUD5V4ElNTzNQCIkQ6mITs1ATPAELdxgzUB1vMawL3PNQJ6IiDSDhc1Ax1RKuNaXzUDwIAw8KqrNQBntzb99vM1AQ7mPQ9HOzUBshVHHJOHNQJVRE0t4881Avh3VzssFzkDn6ZZSHxjOQBC2WNZyKs5AOoIaWsY8zkBjTtzdGU/OQIwanmFtYc5AteZf5cBzzkDesiFpFIbOQAh/4+xnmM5AMUulcLuqzkBaF2f0Dr3OQIPjKHhiz85ArK/q+7XhzkDVe6x/CfTOQP9HbgNdBs9AKBQwh7AYz0BR4PEKBCvPQHqss45XPc9Ao3h1EqtPz0DMRDeW/mHPQPYQ+RlSdM9AH926naWGz0BIqXwh+ZjPQHF1PqVMq89AmkEAKaC9z0DEDcKs88/PQO3ZgzBH4s9AFqZFtJr0z0AfuQMcdwPQQDSf5N2gDNBASIXFn8oV0EBda6Zh9B7QQHJRhyMeKNBAhjdo5Ucx0ECbHUmncTrQQK8DKmmbQ9BAxOkKK8VM0EDZz+vs7lXQQO21zK4YX9BAApytcEJo0EAWgo4ybHHQQCtob/SVetBAQE5Qtr+D0EBUNDF46YzQQGkaEjoTltBAfQDz+zyf0ECS5tO9ZqjQQKbMtH+QsdBAu7KVQbq60EDPmHYD5MPQQOR+V8UNzdBA+WQ4hzfW0EANSxlJYd/QQCIx+gqL6NBANhfbzLTx0EBL/buO3vrQQF/jnFAIBNFAdMl9EjIN0UCJr17UWxbRQJ2VP5aFH9FAsnsgWK8o0UDGYQEa2THRQNtH4tsCO9FA8C3DnSxE0UAEFKRfVk3RQBn6hCGAVtFALeBl46lf0UBCxkal02jRQFesJ2f9cdFAa5IIKSd70UCAeOnqUITRQJReyqx6jdFAqUSrbqSW0UC9Kowwzp/RQNIQbfL3qNFA5/ZNtCGy0UD73C52S7vRQBDDDzh1xNFAJKnw+Z7N0UA5j9G7yNbRQE51sn3y39FAYluTPxzp0UB3QXQBRvLRQIsnVcNv+9FAoA02hZkE0kC18xZHww3SQMnZ9wjtFtJA3r/YyhYg0kDypbmMQCnSQAeMmk5qMtJAG3J7EJQ70kAwWFzSvUTSQEU+PZTnTdJAWSQeVhFX0kBuCv8XO2DSQILw39lkadJAl9bAm45y0kCsvKFduHvSQMCigh/ihNJA1Yhj4QuO0kDpbkSjNZfSQP5UJWVfoNJAEzsGJ4mp0kAnIefosrLSQDwHyKrcu9JAUO2obAbF0kBl04kuMM7SQHm5avBZ19JAjp9LsoPg0kCjhSx0renSQLdrDTbX8tJAzFHu9wD80kDgN8+5KgXTQPUdsHtUDtNACgSRPX4X00Ae6nH/pyDTQDPQUsHRKdNAR7Yzg/sy00BcnBRFJTzTQHGC9QZPRdNAhWjWyHhO00CaTreKolfTQK40mEzMYNNAwxp5DvZp00DXAFrQH3PTQOzmOpJJfNNAAc0bVHOF00AVs/wVnY7TQCqZ3dfGl9NAPn++mfCg00BTZZ9bGqrTQGhLgB1Es9NAfDFh322800CRF0Khl8XTQKX9ImPBztNAuuMDJevX00DPyeTmFOHTQOOvxag+6tNA+JWmamjz00AMfIcskvzTQCFiaO67BdRANUhJsOUO1EBKLipyDxjUQF8UCzQ5IdRAc/rr9WIq1ECI4My3jDPUQJzGrXm2PNRAsayOO+BF1EDGkm/9CU/UQNp4UL8zWNRA714xgV1h1EADRRJDh2rUQBgr8wSxc9RALRHUxtp81EBB97SIBIbUQFbdlUouj9RAasN2DFiY1EB/qVfOgaHUQJOPOJCrqtRAqHUZUtWz1EC9W/oT/7zUQNFB29UoxtRA5ie8l1LP1ED6DZ1ZfNjUQA/0fRum4dRAJNpe3c/q1EA4wD+f+fPUQE2mIGEj/dRAYYwBI00G1UB2cuLkdg/VQItYw6agGNVAnz6kaMoh1UC0JIUq9CrVQMgKZuwdNNVA3fBGrkc91UDx1idwcUbVQAa9CDKbT9VAG6Pp88RY1UAvicq17mHVQERvq3cYa9VAWFWMOUJ01UBtO237a33VQIIhTr2VhtVAlgcvf7+P1UCr7Q9B6ZjVQL/T8AITotVA1LnRxDyr1UDpn7KGZrTVQP2Fk0iQvdVAEmx0CrrG1UAmUlXM48/VQDs4No4N2dVATx4XUDfi1UBkBPgRYevVQHnq2NOK9NVAjdC5lbT91UCitppX3gbWQLacexkIENZAy4Jc2zEZ1kDgaD2dWyLWQPROHl+FK9ZACTX/IK801kAdG+Di2D3WQDIBwaQCR9ZARuehZixQ1kBbzYIoVlnWQHCzY+p/YtZAhJlErKlr1kCZfyVu03TWQK1lBjD9fdZAwkvn8SaH1kDXMcizUJDWQOsXqXV6mdZAAP6JN6Si1kAU5Gr5zavWQCnKS7v3tNZAPrAsfSG+1kBSlg0/S8fWQGd87gB10NZAe2LPwp7Z1kCQSLCEyOLWQKQukUby69ZAuRRyCBz11kDO+lLKRf7WQOLgM4xvB9dA98YUTpkQ10ALrfUPwxnXQCCT1tHsItdANXm3kxYs10BJX5hVQDXXQF5FeRdqPtdAcita2ZNH10CHETubvVDXQJz3G13nWddAsN38HhFj10DFw93gOmzXQNmpvqJkdddA7o+fZI5+10ACdoAmuIfXQBdcYejhkNdALEJCqgua10BAKCNsNaPXQFUOBC5frNdAafTk74i110B+2sWxsr7XQJPApnPcx9dAp6aHNQbR10C8jGj3L9rXQNBySblZ49dA5Vgqe4Ps10D6Pgs9rfXXQA4l7P7W/tdAIwvNwAAI2EA38a2CKhHYQEzXjkRUGthAYL1vBn4j2EB1o1DIpyzYQIqJMYrRNdhAnm8STPs+2ECzVfMNJUjYQMc71M9OUdhA3CG1kXha2EDxB5ZTomPYQAXudhXMbNhAGtRX1/V12EAuujiZH3/YQEOgGVtJiNhAWIb6HHOR2EBsbNvenJrYQIFSvKDGo9hAlTidYvCs2ECqHn4kGrbYQL4EX+ZDv9hA0+o/qG3I2EDo0CBql9HYQPy2ASzB2thAEZ3i7erj2EAlg8OvFO3YQDpppHE+9thAT0+FM2j/2EBjNWb1kQjZQHgbR7e7EdlAjAEoeeUa2UCh5wg7DyTZQLbN6fw4LdlAyrPKvmI22UDfmauAjD/ZQPN/jEK2SNlACGZtBOBR2UAcTE7GCVvZQDEyL4gzZNlARhgQSl1t2UBa/vALh3bZQG/k0c2wf9lAg8qyj9qI2UCYsJNRBJLZQK2WdBMum9lAwXxV1Vek2UDWYjaXga3ZQOpIF1mrttlA/y74GtW/2UAUFdnc/sjZQCj7uZ4o0tlAPeGaYFLb2UBRx3sifOTZQGatXOSl7dlAepM9ps/22UCPeR5o+f/ZQKRf/ykjCdpAuEXg60wS2kDNK8GtdhvaQOERom+gJNpA9veCMcot2kAL3mPz8zbaQB/ERLUdQNpANKold0dJ2kBIkAY5cVLaQF125/qaW9pAclzIvMRk2kCGQql+7m3aQJsoikAYd9pArw5rAkKA2kDE9EvEa4naQNjaLIaVktpA7cANSL+b2kACp+4J6aTaQBaNz8sSrtpAK3OwjTy32kA/WZFPZsDaQFQ/chGQydpAaSVT07nS2kB9CzSV49vaQJLxFFcN5dpAptf1GDfu2kC7vdbaYPfaQNCjt5yKANtA5ImYXrQJ20D5b3kg3hLbQA1WWuIHHNtAIjw7pDEl20A2IhxmWy7bQEsI/SeFN9tAYO7d6a5A20B01L6r2EnbQIm6n20CU9tAnaCALyxc20CyhmHxVWXbQMdsQrN/bttA21Ijdal320DwOAQ304DbQAQf5fj8idtAGQXGuiaT20Au66Z8UJzbQELRhz56pdtAV7doAKSu20BrnUnCzbfbQICDKoT3wNtAlGkLRiHK20CpT+wHS9PbQL41zcl03NtA0huui57l20DnAY9NyO7bQPvnbw/y99tAEM5Q0RsB3EAltDGTRQrcQDmaElVvE9xAToDzFpkc3EBiZtTYwiXcQHdMtZrsLtxAjDKWXBY43ECgGHceQEHcQLX+V+BpStxAyeQ4opNT3EDeyhlkvVzcQPKw+iXnZdxAB5fb5xBv3EAcfbypOnjcQDBjnWtkgdxARUl+LY6K3EBZL1/vt5PcQG4VQLHhnNxAg/sgcwum3ECX4QE1Na/cQKzH4vZeuNxAwK3DuIjB3EDVk6R6ssrcQOl5hTzc09xA/l9m/gXd3EATRkfAL+bcQCcsKIJZ79xAPBIJRIP43EBQ+OkFrQHdQGXeysfWCt1AesSriQAU3UCOqoxLKh3dQKOQbQ1UJt1At3ZOz30v3UDMXC+RpzjdQOFCEFPRQd1A9SjxFPtK3UAKD9LWJFTdQB71sphOXd1AM9uTWnhm3UBHwXQcom/dQFynVd7LeN1AcY02oPWB3UCFcxdiH4vdQJpZ+CNJlN1Arj/Z5XKd3UDDJbqnnKbdQNgLm2nGr91A7PF7K/C43UAB2FztGcLdQBW+Pa9Dy91AKqQecW3U3UA/iv8yl93dQFNw4PTA5t1AaFbBturv3UB8PKJ4FPndQJEigzo+At5ApQhk/GcL3kC67kS+kRTeQM/UJYC7Hd5A47oGQuUm3kD4oOcDDzDeQAyHyMU4Od5AIW2ph2JC3kA2U4pJjEveQEo5awu2VN5AXx9Mzd9d3kBzBS2PCWfeQIjrDVEzcN5AndHuEl153kCxt8/UhoLeQMadsJawi95A2oORWNqU3kDvaXIaBJ7eQANQU9wtp95AGDY0nlew3kAtHBVggbneQEEC9iGrwt5AVujW49TL3kBqzrel/tTeQH+0mGco3t5AlJp5KVLn3kCogFrre/DeQL1mO62l+d5A0Uwcb88C30DmMv0w+QvfQPsY3vIiFd9AD/++tEwe30Ak5Z92diffQDjLgDigMN9ATbFh+sk530Bhl0K880LfQHZ9I34dTN9Ai2MEQEdV30CfSeUBcV7fQLQvxsOaZ99AyBWnhcRw30Dd+4dH7nnfQPLhaAkYg99ABshJy0GM30AbriqNa5XfQC+UC0+Vnt9ARHrsEL+n30BZYM3S6LDfQG1GrpQSut9AgiyPVjzD30CWEnAYZszfQKv4UNqP1d9Av94xnLne30DUxBJe4+ffQOmq8x8N8d9A/ZDU4Tb630CJu9pRsAHgQJMuyzJFBuBAnqG7E9oK4ECoFKz0bg/gQLKHnNUDFOBAvfqMtpgY4EDHbX2XLR3gQNHgbXjCIeBA3FNeWVcm4EDmxk467CrgQPA5PxuBL+BA+qwv/BU04EAFICDdqjjgQA+TEL4/PeBAGQYBn9RB4EAkefF/aUbgQC7s4WD+SuBAOF/SQZNP4EBC0sIiKFTgQE1FswO9WOBAV7ij5FFd4EBhK5TF5mHgQGuehKZ7ZuBAdhF1hxBr4ECAhGVopW/gQIr3VUk6dOBAlWpGKs944ECf3TYLZH3gQKlQJ+z4geBAs8MXzY2G4EC+NgiuIovgQMip+I63j+BA0hzpb0yU4EDdj9lQ4ZjgQOcCyjF2neBA8XW6Egui4ED76Krzn6bgQAZcm9Q0q+BAEM+Ltcmv4EAaQnyWXrTgQCW1bHfzuOBALyhdWIi94EA5m005HcLgQEQOPhqyxuBAToEu+0bL4EBY9B7c28/gQGJnD71w1OBAbdr/nQXZ4EB3TfB+mt3gQIHA4F8v4uBAjDPRQMTm4ECWpsEhWevgQKAZsgLu7+BAqoyi44L04EC1/5LEF/ngQL9yg6Ws/eBAyeVzhkEC4UDUWGRn1gbhQN7LVEhrC+FA6D5FKQAQ4UDzsTUKlRThQP0kJuspGeFAB5gWzL4d4UARCwetUyLhQBx+943oJuFAJvHnbn0r4UAwZNhPEjDhQDvXyDCnNOFARUq5ETw54UBPvany0D3hQFkwmtNlQuFAZKOKtPpG4UBuFnuVj0vhQHiJa3YkUOFAg/xbV7lU4UCNb0w4TlnhQJfiPBnjXeFAolUt+ndi4UCsyB3bDGfhQLY7Dryha+FAwK7+nDZw4UDLIe99y3ThQNWU315geeFA3wfQP/V94UDqesAgioLhQPTtsAEfh+FA/mCh4rOL4UAI1JHDSJDhQBNHgqTdlOFAHbpyhXKZ4UAnLWNmB57hQDKgU0ecouFAPBNEKDGn4UBGhjQJxqvhQFH5JOpasOFAW2wVy++04UBl3wWshLnhQG9S9owZvuFAesXmba7C4UCEONdOQ8fhQI6rxy/Yy+FAmR64EG3Q4UCjkajxAdXhQK0EmdKW2eFAt3eJsyve4UDC6nmUwOLhQMxdanVV5+FA1tBaVurr4UDhQ0s3f/DhQOu2OxgU9eFA9Sks+aj54UAAnRzaPf7hQAoQDbvSAuJAFIP9m2cH4kAe9u18/AviQClp3l2REOJAM9zOPiYV4kA9T78fuxniQEjCrwBQHuJAUjWg4eQi4kBcqJDCeSfiQGYbgaMOLOJAcY5xhKMw4kB7AWJlODXiQIV0UkbNOeJAkOdCJ2I+4kA=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]}},\"selected\":{\"id\":\"1775\"},\"selection_policy\":{\"id\":\"1774\"}},\"id\":\"1757\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"x\":[5000.0],\"y\":[791.1392405063291]},\"selected\":{\"id\":\"1753\"},\"selection_policy\":{\"id\":\"1752\"}},\"id\":\"1737\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1961\",\"type\":\"AllLabels\"},{\"attributes\":{\"callback\":null,\"names\":[\"-8301454650589535677\"],\"tooltips\":[[\"UNI\",\"5000.000\"],[\"USDT\",\"791.139\"],[\"Mid Price\",\"6.320\"]]},\"id\":\"1755\",\"type\":\"HoverTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Constant Product AMM Curve for the pair UNI/USDT\"},\"id\":\"1687\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1691\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1693\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"UNI\":[791.1392405063291,1182.3755472355936,1573.611853964858,1964.8481606941225],\"USDT\":[5000.0,7472.613458528952,9945.226917057904,12417.840375586857],\"steps\":[\"L0\",\"L1\",\"L2\",\"L3\"]},\"selected\":{\"id\":\"1963\"},\"selection_policy\":{\"id\":\"1962\"}},\"id\":\"1947\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1709\",\"type\":\"ResetTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"1736\"}]},\"id\":\"1735\",\"type\":\"Legend\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1948\"}}},\"id\":\"1952\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1948\"}}},\"id\":\"1950\",\"type\":\"VBar\"},{\"attributes\":{\"range\":{\"id\":\"1916\"},\"value\":-0.1},\"id\":\"1948\",\"type\":\"Dodge\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1711\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1948\"}}},\"id\":\"1951\",\"type\":\"VBar\"},{\"attributes\":{\"line_alpha\":0.6,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1720\",\"type\":\"Line\"},{\"attributes\":{\"factors\":[\"L0\",\"L1\",\"L2\",\"L3\"]},\"id\":\"1916\",\"type\":\"FactorRange\"},{\"attributes\":{\"axis\":{\"id\":\"1697\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"1700\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1882\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1884\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1881\"},\"glyph\":{\"id\":\"1882\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1884\"},\"name\":\"8695101188993470514\",\"nonselection_glyph\":{\"id\":\"1883\"},\"view\":{\"id\":\"1886\"}},\"id\":\"1885\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"names\":[\"8695101188993470514\"],\"tooltips\":[[\"UNI\",\"12417.840\"],[\"USDT\",\"1964.848\"],[\"Mid Price\",\"6.320\"]]},\"id\":\"1911\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"1878\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1759\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1728\",\"type\":\"AllLabels\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1883\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"1698\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1909\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]}},\"selected\":{\"id\":\"1823\"},\"selection_policy\":{\"id\":\"1822\"}},\"id\":\"1801\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1908\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"axis_label\":\"Amount USDT\",\"coordinates\":null,\"formatter\":{\"id\":\"1730\"},\"group\":null,\"major_label_policy\":{\"id\":\"1731\"},\"ticker\":{\"id\":\"1698\"}},\"id\":\"1697\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1778\",\"type\":\"Circle\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1780\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1777\"},\"glyph\":{\"id\":\"1778\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1780\"},\"name\":\"-210810992596613344\",\"nonselection_glyph\":{\"id\":\"1779\"},\"view\":{\"id\":\"1782\"}},\"id\":\"1781\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"callback\":null,\"names\":[\"-210810992596613344\"],\"tooltips\":[[\"UNI\",\"7472.613\"],[\"USDT\",\"1182.376\"],[\"Mid Price\",\"6.320\"]]},\"id\":\"1799\",\"type\":\"HoverTool\"},{\"attributes\":{\"source\":{\"id\":\"1801\"}},\"id\":\"1806\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1779\",\"type\":\"Circle\"},{\"attributes\":{\"line_alpha\":0.6,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1758\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1797\",\"type\":\"Selection\"},{\"attributes\":{\"below\":[{\"id\":\"1924\"}],\"center\":[{\"id\":\"1926\"},{\"id\":\"1930\"},{\"id\":\"1965\"}],\"left\":[{\"id\":\"1927\"}],\"renderers\":[{\"id\":\"1953\"},{\"id\":\"1972\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"1914\"},\"toolbar\":{\"id\":\"1939\"},\"width\":900,\"x_range\":{\"id\":\"1916\"},\"x_scale\":{\"id\":\"1920\"},\"y_range\":{\"id\":\"1918\"},\"y_scale\":{\"id\":\"1922\"}},\"id\":\"1913\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"1796\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"1719\"}},\"id\":\"1724\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1967\"}}},\"id\":\"1970\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1925\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"label\":{\"value\":\"USDT Pool\"},\"renderers\":[{\"id\":\"1953\"}]},\"id\":\"1966\",\"type\":\"LegendItem\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Pool balance history\"},\"id\":\"1914\",\"type\":\"Title\"},{\"attributes\":{\"range\":{\"id\":\"1916\"},\"value\":0.1},\"id\":\"1967\",\"type\":\"Dodge\"},{\"attributes\":{},\"id\":\"1918\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1920\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1967\"}}},\"id\":\"1971\",\"type\":\"VBar\"},{\"attributes\":{},\"id\":\"1922\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"1967\"}}},\"id\":\"1969\",\"type\":\"VBar\"},{\"attributes\":{\"axis\":{\"id\":\"1924\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"1926\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"Reserves\",\"coordinates\":null,\"formatter\":{\"id\":\"1957\"},\"group\":null,\"major_label_policy\":{\"id\":\"1958\"},\"ticker\":{\"id\":\"1928\"}},\"id\":\"1927\",\"type\":\"LinearAxis\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1947\"},\"glyph\":{\"id\":\"1969\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1971\"},\"nonselection_glyph\":{\"id\":\"1970\"},\"view\":{\"id\":\"1973\"}},\"id\":\"1972\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis_label\":\"Simulation Steps\",\"coordinates\":null,\"formatter\":{\"id\":\"1960\"},\"group\":null,\"major_label_policy\":{\"id\":\"1961\"},\"ticker\":{\"id\":\"1925\"}},\"id\":\"1924\",\"type\":\"CategoricalAxis\"},{\"attributes\":{},\"id\":\"1936\",\"type\":\"HelpTool\"},{\"attributes\":{\"label\":{\"value\":\"UNI Pool\"},\"renderers\":[{\"id\":\"1972\"}]},\"id\":\"1984\",\"type\":\"LegendItem\"},{\"attributes\":{\"source\":{\"id\":\"1947\"}},\"id\":\"1973\",\"type\":\"CDSView\"},{\"attributes\":{\"axis\":{\"id\":\"1927\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"1930\",\"type\":\"Grid\"},{\"attributes\":{\"tools\":[{\"id\":\"1705\"},{\"id\":\"1706\"},{\"id\":\"1707\"},{\"id\":\"1708\"},{\"id\":\"1709\"},{\"id\":\"1710\"},{\"id\":\"1755\"},{\"id\":\"1799\"},{\"id\":\"1851\"},{\"id\":\"1911\"}]},\"id\":\"1712\",\"type\":\"Toolbar\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1804\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1928\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"USDT\",\"@USDT{0,0.000}\"],[\"UNI\",\"@UNI{0,0.000}\"]]},\"id\":\"1938\",\"type\":\"HoverTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]}},\"selected\":{\"id\":\"1879\"},\"selection_policy\":{\"id\":\"1878\"}},\"id\":\"1853\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1801\"},\"glyph\":{\"id\":\"1802\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1804\"},\"nonselection_glyph\":{\"id\":\"1803\"},\"view\":{\"id\":\"1806\"}},\"id\":\"1805\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1932\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"label\":{\"value\":\"Y=K/X\"},\"renderers\":[{\"id\":\"1723\"},{\"id\":\"1761\"},{\"id\":\"1805\"},{\"id\":\"1857\"}]},\"id\":\"1736\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"1931\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"1937\"}},\"id\":\"1933\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"1934\",\"type\":\"SaveTool\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1803\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1935\",\"type\":\"ResetTool\"},{\"attributes\":{\"line_alpha\":0.6,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1854\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"1822\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1826\",\"type\":\"Circle\"},{\"attributes\":{\"data\":{\"x\":[7472.613458528952],\"y\":[1182.3755472355936]},\"selected\":{\"id\":\"1797\"},\"selection_policy\":{\"id\":\"1796\"}},\"id\":\"1777\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1823\",\"type\":\"Selection\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"1937\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"1710\",\"type\":\"HelpTool\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]}},\"selected\":{\"id\":\"1733\"},\"selection_policy\":{\"id\":\"1732\"}},\"id\":\"1719\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1722\",\"type\":\"Line\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1721\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1947\"},\"glyph\":{\"id\":\"1950\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1952\"},\"nonselection_glyph\":{\"id\":\"1951\"},\"view\":{\"id\":\"1954\"}},\"id\":\"1953\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1757\"},\"glyph\":{\"id\":\"1758\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1760\"},\"nonselection_glyph\":{\"id\":\"1759\"},\"view\":{\"id\":\"1762\"}},\"id\":\"1761\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"1760\",\"type\":\"Line\"},{\"attributes\":{\"tools\":[{\"id\":\"1931\"},{\"id\":\"1932\"},{\"id\":\"1933\"},{\"id\":\"1934\"},{\"id\":\"1935\"},{\"id\":\"1936\"},{\"id\":\"1938\"}]},\"id\":\"1939\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"1719\"},\"glyph\":{\"id\":\"1720\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"1722\"},\"nonselection_glyph\":{\"id\":\"1721\"},\"view\":{\"id\":\"1724\"}},\"id\":\"1723\",\"type\":\"GlyphRenderer\"}],\"root_ids\":[\"1985\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n", " const render_items = [{\"docid\":\"7519f599-a884-4f5a-b96b-9827e75a66b1\",\"root_ids\":[\"1985\"],\"roots\":{\"1985\":\"41be81e9-f45e-4b05-8387-fcfeec76c78b\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "1985" } }, "output_type": "display_data" } ], "source": [ "from cpy_amm.market import new_market, MarketQuote\n", "from cpy_amm.swap import constant_product_swap\n", "from cpy_amm.plotting import new_constant_product_figure, new_pool_figure\n", "\n", "# USDT/USD market price\n", "usdt_usd = MarketQuote(\"USDT/USD\", 1)\n", "# UNI/USD market price\n", "uni_usd = MarketQuote(\"UNI/USD\", 6.32)\n", "# create a 10000 USD market for UNI/USDT\n", "mkt = new_market(10000, usdt_usd, uni_usd, 0.003)\n", "# new plot with constant product curve\n", "cp_plot = new_constant_product_figure(mkt)\n", "# USDT/USD new market price\n", "usdt_usd = MarketQuote(\"USDT/USD\", 1)\n", "# UNI/USD new market price\n", "uni_usd = MarketQuote(\"UNI/USD\", 6.46)\n", "# deposit 5000$ 3 times, mid price must not change \n", "for _ in range(0,3):\n", " # add 5000$ liquidity using new market quotes\n", " mkt.add_liquidity(5000, usdt_usd, uni_usd)\n", " # new plot with constant product curve\n", " cp_plot = new_constant_product_figure(mkt, bokeh_figure=cp_plot)\n", "# plotting the reserves before and after swap \n", "pool_plot = new_pool_figure(mkt.pool_1, mkt.pool_2, steps=[\"L0\", \"L1\", \"L2\", \"L3\"])\n", "# display plots\n", "show(column(cp_plot, pool_plot, sizing_mode=\"stretch_both\"))" ] }, { "cell_type": "markdown", "id": "b0bc3740", "metadata": {}, "source": [ "Constant Product AMM Order Book\n", "---\n", "\n", "From the paper [On Equivalence of Automated Market Maker and Limit Order Book Systems](https://professorjey.com/assets/papers/AMM_Order_Book_Equivalence_DRAFT_2020_10_16.pdf) the equation for the cumulative quantity at any mid price is given by:\n", "\n", "$$ Q_{cum}(p)=\\begin{cases}\n", "\\begin{aligned}\n", "\\ & x_{0}(\\sqrt{\\frac{P_{0}}{P}} - 1) & \\text{if } p < p_{0} \\newline\n", "\\ & 0 &\\text{if } p = p_{0} \\newline\n", "\\ & x_{0}(1 - \\sqrt{\\frac{P_{0}}{P}}) & \\text{if } p < p_{0}\n", "\\end{aligned}\n", "\\end{cases} $$" ] }, { "cell_type": "code", "execution_count": 6, "id": "c917798d", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"92c5281f-524c-44d5-aeb2-c2b6e0e82418\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2240\"}],\"sizing_mode\":\"stretch_both\"},\"id\":\"2313\",\"type\":\"Column\"},{\"attributes\":{\"fields\":[\"bid\"]},\"id\":\"2275\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"2291\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2286\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2292\",\"type\":\"Selection\"},{\"attributes\":{\"below\":[{\"id\":\"2251\"}],\"center\":[{\"id\":\"2254\"},{\"id\":\"2258\"},{\"id\":\"2294\"}],\"left\":[{\"id\":\"2255\"}],\"renderers\":[{\"id\":\"2282\"},{\"id\":\"2300\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"2241\"},\"toolbar\":{\"id\":\"2266\"},\"width\":900,\"x_range\":{\"id\":\"2243\"},\"x_scale\":{\"id\":\"2247\"},\"y_range\":{\"id\":\"2245\"},\"y_scale\":{\"id\":\"2249\"}},\"id\":\"2240\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"data\":{\"ask\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3.0012004801921455,8.992805755395072,14.970059880239361,20.933014354066472,26.881720430107503,32.816229116944264,38.73659117997585,44.64285714285643,50.53507728894069,56.41330166270664,62.2775800711739,68.12796208530814,73.96449704141995,79.78723404255261,85.59622195985771,91.39150943396291,97.17314487632522,102.94117647058843,108.69565217391353,114.43661971830998,120.16412661195797,125.87822014051453,131.5789473684209,137.26635514018648,142.94049008167943,148.60139860139788,154.24912689173397,159.8837209302323,165.50522648083543,171.11368909512703,176.70915411355625,182.29166666666686,187.86127167630062,193.41801385681256,198.9619377162627,204.49308755760288,210.01150747986253,215.5172413793105,221.01033295063132,226.49082568807322,231.95876288659824,237.4141876430208,242.85714285714243,248.2876712328763,253.70581527936142,259.1116173120722,264.5051194539244,269.8863636363635,275.255391600453,280.61224489795813,285.9569648924115,291.28959276017997,296.6101694915252,301.91873589164754,307.21533258173616,312.5,317.77277840269903,323.03370786516905,328.2828282828282,333.52017937219756,338.7458006718924,343.9597315436238,349.1620111731841,354.35267857142793,359.5317725752506,364.699331848552,369.8553948832034,374.9999999999998,380.1331853496109,385.2549889135248,390.3654485049829,395.46460176991036,400.5524861878446,405.62913907284724,410.6945975744208,415.74889867841415,420.79207920792004,425.8241758241754,430.8452250274425,435.8552631578949,440.85432639649537,445.84245076586484,450.8196721311475,455.7860262008734,460.7415485278077,465.68627450980335,470.6202393906417,475.54347826086916,480.4560260586316,485.35791757049805,490.24918743228505,495.1298701298695,499.9999999999993,504.85961123110155,509.7087378640774,514.5474137931033,519.375672766415,524.1935483870968,529.0010741138557,533.7982832618027,538.5852090032156,543.3618843683086,548.1283422459893,552.8846153846151,557.630736392743,562.3667377398717,567.0926517571884,571.8085106382975,576.5143464399574,581.2101910828021,585.8960763520677,590.572033898304,595.2380952380943,599.8942917547562,604.5406546990495,609.1772151898733,613.8040042149628,618.4210526315786,623.0283911671919,627.6260504201675,632.214060860441,636.7924528301888,641.3612565445026,645.92050209205,650.4702194357365,655.0104384133615,659.541188738269,664.0624999999994,668.5744016649326,673.0769230769229,677.5700934579437,682.0539419087135,686.5284974093261,690.9937888198752,695.4498448810748,699.896694214876,704.3343653250772,708.7628865979384,713.1822863027803,717.5925925925919,721.9938335046244,726.3860369609854,730.769230769231,735.1434426229514,739.5087001023543,743.8650306748468,748.2124616956077,752.5510204081626,756.880733944954,761.2016293279022,765.5137334689721,769.817073170731,774.1116751269034,778.3975659229203,782.6747720364735,786.943319838056,791.2032355915067,795.4545454545453,799.697275479313,803.9314516129032,808.1570996978849,812.3742454728372,816.5829145728643,820.7831325301207,824.9749247743232,829.1583166332666,833.3333333333331,837.4999999999999,841.6583416583412,845.8083832335328,849.9501495513456,854.0836653386452,858.2089552238798,862.3260437375741,866.4349553128097,870.535714285714,874.6283448959358,878.7128712871283,882.7893175074187,886.857707509881,890.9180651530107,894.9704142011833,899.0147783251228,903.0511811023617,907.0796460176989,911.1001964636539,915.1128557409222,919.1176470588231,923.1145935357488,927.1037181996084,931.0850439882695,935.0585937499994,939.0243902439022,942.9824561403505,946.9328140214211,950.8754863813234,954.8104956268222,958.73786407767,962.6576139670224,966.56976744186,970.4743465634075,974.3713733075432,978.2608695652167,982.1428571428564,986.0173577627768,989.8843930635832,993.7439846005774,997.5961538461536,1001.4409221902015,1005.2783109404994,1009.1083413231056,1012.9310344827586,1016.746411483253,1020.5544933078392,1024.355300859598,1028.1488549618318,1031.9351763584366,1035.714285714286,1039.4862036156044,1043.250950570342,1047.008547008547,1050.7590132827322,1054.502369668246,1058.2386363636358,1061.967833491012,1065.6899810964082,1069.4050991501408,1073.1132075471694,1076.8143261074458,1080.508474576271,1084.1956726246465,1087.875939849624,1091.5492957746476,1095.2157598499057,1098.8753514526707,1102.52808988764,1106.1739943872772,1109.8130841121495,1113.4453781512598,1117.070895522388,1120.6896551724137,1124.3016759776535,1127.9069767441856,1131.5055762081784,1135.0974930362113,1138.6827458256028,1142.261353104726,1145.8333333333333,1149.3987049028676,1152.9574861367837,1156.5096952908582,1160.0553505535056,1163.5944700460832,1167.127071823204,1170.6531738730446,1174.1727941176466,1177.6859504132226,1181.192660550458,1184.6929422548126,1188.1868131868127,1191.67429094236,1195.1553930530163,1198.630136986301,1202.098540145985,1205.560619872379,1209.0163934426223,1212.4658780709728,1215.9090909090908,1219.3460490463215,1222.7767695099817,1226.2012692656394,1229.6195652173908,1233.0316742081448,1236.4376130198912,1239.8373983739834,1243.2310469314073,1246.6185752930564,1249.9999999999995,1253.375337533753,1256.7446043165464,1260.1078167115904,1263.4649910233393,1266.8161434977576,1270.1612903225807,1273.5004476275735,1276.8336314847938,1280.160857908847,1283.4821428571424,1286.797502230151,1290.1069518716579,1293.4105075690118,1296.7081850533807,1300.0,1303.2859680284187,1306.5661047027504,1309.8404255319147,1313.1089459698842,1316.3716814159288,1319.6286472148538,1322.8798586572432,1326.1253309797,1329.3650793650797,1332.5991189427311,1335.8274647887324,1339.0501319261211,1342.267135325132,1345.478489903424,1348.6842105263152,1351.8843120070112,1355.07880910683,1358.2677165354328,1361.451048951049,1364.6288209606982,1367.8010471204184,1370.9677419354837,1374.128919860627,1377.2845953002604,1380.4347826086955,1383.5794960903559,1386.7187499999995,1389.852558542931,1392.9809358752166,1396.1038961038957,1399.2214532871972,1402.3336214347448,1405.440414507772,1408.5418464193267,1411.6379310344823,1414.7286821705425,1417.814113597246,1420.8942390369727,1423.9690721649483,1427.038626609442,1430.1029159519724,1433.1619537275064,1436.2157534246574,1439.2643284858852,1442.3076923076922,1445.3458582408196,1448.3788395904428,1451.406649616368,1454.4293015332194,1457.4468085106384,1460.4591836734692,1463.4664401019536,1466.4685908319186,1469.4656488549617,1472.457627118644,1475.4445385266717,1478.426395939086,1481.4032121724424,1484.3749999999995,1487.3417721518988,1490.303541315346,1493.2603201347938,1496.2121212121215,1499.158957106812,1502.100840336134,1505.0377833753148,1507.9697986577178,1510.8968985750205,1513.8190954773868,1516.7364016736396,1519.6488294314386,1522.5563909774437,1525.459098497496,1528.3569641367806,1531.2499999999995,1534.13821815154,1537.0216306156403,1539.900249376558,1542.7740863787371,1545.643153526971,1548.507462686567,1551.3670256835128,1554.221854304636,1557.0719602977667,1559.9173553719004,1562.7580511973576,1565.594059405941,1568.4253915910963,1571.252059308072,1574.074074074074,1576.8914473684208,1579.7041906327036,1582.512315270936,1585.3158326497123,1588.1147540983604,1590.9090909090905,1593.6988543371522,1596.4840556009808,1599.2647058823527,1602.0408163265304,1604.8123980424139,1607.5794621026896,1610.3420195439737,1613.100081366965,1615.853658536585,1618.602761982128,1621.3474025974024,1624.0875912408758,1626.8233387358182,1629.554655870445,1632.281553398058,1635.004042037187,1637.7221324717284,1640.4358353510895,1643.1451612903224,1645.8501208702658,1648.5507246376812,1651.24698310539,1653.9389067524112,1656.6265060240964,1659.3097913322629,1661.9887730553323,1664.6634615384614,1667.3338670936748,1669.9999999999998,1672.6618705035974,1675.3194888178912,1677.972865123703,1680.6220095693775,1683.266932270916,1685.9076433121018,1688.5441527446299,1691.1764705882354,1693.8046068308183,1696.4285714285716,1699.0483743061059,1701.6640253565768,1704.2755344418053,1706.8829113924044,1709.4861660079048,1712.085308056872,1714.6803472770316,1717.2712933753937,1719.8581560283687,1722.4409448818894,1725.019669551534,1727.5943396226412,1730.164964650432,1732.7315541601251,1735.2941176470588,1737.8526645768022,1740.4072043852775,1742.957746478873,1745.5043002345583,1748.046875,1750.5854800936766,1753.1201248049922,1755.6508183943881,1758.1775700934577,1760.7003891050583,1763.219284603421,1765.7342657342656,1768.2453416149062,1770.7525213343672,1773.255813953488,1775.755228505035,1778.250773993808,1780.7424593967514,1783.2302936630601,1785.7142857142856,1788.1944444444441,1790.670778720123,1793.1432973805856,1795.6120092378753,1798.0769230769229,1800.5380476556493,1802.9953917050689,1805.4489639293936,1807.8987730061347,1810.3448275862065,1812.7871362940273,1815.2257077276201,1817.6605504587158,1820.0916730328493,1822.5190839694656,1824.9427917620137,1827.3628048780488,1829.7791317593299,1832.191780821918,1834.6007604562735,1837.006079027355,1839.4077448747153,1841.8057663125946,1844.2001516300222,1846.5909090909083,1848.9780469341404,1851.361573373676,1853.7414965986393,1856.117824773414,1858.4905660377353,1860.8597285067874,1863.2253202712884,1865.58734939759,1867.945823927765,1870.3007518796987,1872.6521412471825,1875.0],\"bid\":[7500.0,7462.574850299402,7425.373134328359,7388.392857142858,7351.632047477743,7315.088757396448,7278.761061946903,7242.647058823531,7206.744868035189,7171.052631578947,7135.568513119534,7100.290697674419,7065.217391304351,7030.34682080925,6995.6772334293955,6961.206896551724,6926.934097421205,6892.857142857145,6858.974358974361,6825.284090909092,6791.784702549575,6758.474576271187,6725.352112676057,6692.415730337078,6659.663865546217,6627.094972067038,6594.707520891366,6562.5,6530.470914127424,6498.618784530386,6466.94214876033,6435.4395604395595,6404.109589041096,6372.950819672132,6341.961852861038,6311.141304347827,6280.487804878047,6250.0,6219.676549865229,6189.516129032259,6159.517426273457,6129.679144385027,6100.000000000001,6070.478723404256,6041.114058355439,6011.904761904761,5982.849604221637,5953.947368421053,5925.196850393701,5896.596858638745,5868.146214099214,5839.84375,5811.688311688312,5783.678756476685,5755.813953488373,5728.092783505156,5700.514138817481,5673.076923076923,5645.780051150895,5618.622448979593,5591.603053435115,5564.720812182742,5537.974683544305,5511.363636363638,5484.886649874056,5458.54271356784,5432.330827067669,5406.249999999999,5380.299251870324,5354.477611940298,5328.7841191067,5303.217821782178,5277.7777777777765,5252.463054187193,5227.272727272727,5202.205882352944,5177.261613691932,5152.439024390243,5127.737226277373,5103.155339805827,5078.692493946733,5054.347826086958,5030.120481927711,5006.009615384617,4982.0143884892095,4958.133971291867,4934.367541766112,4910.714285714286,4887.173396674583,4863.744075829383,4840.425531914895,4817.216981132075,4794.117647058823,4771.12676056338,4748.243559718971,4725.467289719627,4702.797202797205,4680.232558139535,4657.772621809745,4635.416666666666,4613.163972286375,4591.013824884794,4568.965517241379,4547.018348623854,4525.171624713958,4503.424657534248,4481.776765375856,4460.227272727273,4438.775510204082,4417.420814479638,4396.162528216705,4375.0,4353.932584269662,4332.959641255605,4312.080536912752,4291.294642857144,4270.601336302896,4250.0,4229.49002217295,4209.070796460177,4188.741721854305,4168.502202643172,4148.35164835165,4128.28947368421,4108.315098468271,4088.427947598253,4068.6274509803934,4048.9130434782614,4029.284164859004,4009.7402597402597,3990.280777537797,3970.9051724137935,3951.6129032258063,3932.4034334763946,3913.2762312633827,3894.23076923077,3875.2665245202566,3856.382978723405,3837.579617834396,3818.855932203392,3800.2114164904865,3781.6455696202534,3763.1578947368425,3744.747899159665,3726.4150943396226,3708.1589958159,3689.979123173277,3671.875000000001,3653.8461538461543,3635.892116182573,3618.0124223602484,3600.2066115702482,3582.474226804123,3564.814814814816,3547.227926078029,3529.713114754097,3512.2699386503064,3494.8979591836746,3477.5967413441954,3460.365853658538,3443.204868154159,3426.113360323886,3409.0909090909095,3392.1370967741937,3375.2515090543257,3358.433734939759,3341.6833667334668,3325.0,3308.3832335329344,3291.8326693227095,3275.347912524852,3258.928571428572,3242.5742574257433,3226.284584980238,3210.0591715976325,3193.8976377952754,3177.799607072692,3161.764705882354,3145.7925636007835,3129.882812500001,3114.035087719299,3098.249027237355,3082.52427184466,3066.86046511628,3051.2572533849134,3035.714285714285,3020.2312138728316,3004.807692307693,2989.443378119001,2974.137931034483,2958.8910133843215,2943.7022900763363,2928.571428571428,2913.498098859316,2898.4819734345356,2883.522727272727,2868.6200378071835,2853.773584905661,2838.983050847458,2824.248120300752,2809.5684803001886,2794.94382022472,2780.373831775701,2765.858208955224,2751.396648044693,2736.9888475836433,2722.6345083487936,2708.3333333333335,2694.0850277264326,2679.889298892989,2665.745856353592,2651.6544117647068,2637.614678899084,2623.6263736263745,2609.6892138939675,2595.80291970803,2581.967213114753,2568.1818181818185,2554.4464609800366,2540.7608695652184,2527.1247739602177,2513.5379061371855,2500.000000000001,2486.510791366907,2473.0700179533214,2459.6774193548385,2446.332737030411,2433.0357142857138,2419.7860962566842,2406.5836298932386,2393.4280639431627,2380.3191489361707,2367.2566371681423,2354.2402826855136,2341.2698412698405,2328.345070422535,2315.465729349736,2302.6315789473683,2289.84238178634,2277.097902097902,2264.397905759163,2251.742160278746,2239.130434782609,2226.562500000001,2214.038128249567,2201.5570934256057,2189.119170984456,2176.7241379310344,2164.3717728055067,2152.0618556701033,2139.7941680960553,2127.5684931506853,2115.3846153846157,2103.2423208191144,2091.1413969335613,2079.0816326530617,2067.0628183361628,2055.084745762712,2043.1472081218271,2031.25,2019.3929173693082,2007.5757575757568,1995.7983193277319,1984.0604026845642,1972.3618090452267,1960.702341137125,1949.0818030050084,1937.500000000001,1925.9567387687182,1914.4518272425248,1902.9850746268662,1891.556291390728,1880.1652892561992,1868.8118811881182,1857.495881383856,1846.2171052631581,1834.9753694581284,1823.7704918032794,1812.6022913256957,1801.4705882352944,1790.375203915171,1779.3159609120523,1768.2926829268297,1757.3051948051955,1746.3533225283634,1735.4368932038844,1724.5557350565443,1713.7096774193549,1702.8985507246375,1692.1221864951774,1681.380417335474,1670.6730769230771,1660.0000000000005,1649.3610223642174,1638.755980861245,1628.1847133757965,1617.6470588235304,1607.1428571428569,1596.6719492868465,1586.234177215191,1575.8293838862558,1565.4574132492116,1555.1181102362211,1544.8113207547176,1534.5368916797497,1524.2946708463955,1514.0845070422538,1503.90625,1493.7597503900158,1483.6448598130846,1473.5614307931567,1463.5093167701862,1453.4883720930236,1443.498452012384,1433.53941267388,1423.6111111111115,1413.713405238829,1403.8461538461556,1394.009216589862,1384.2024539877307,1374.4257274119454,1364.6788990825687,1354.9618320610691,1345.2743902439024,1335.6164383561643,1325.9878419452898,1316.3884673748105,1306.8181818181833,1297.276853252648,1287.7643504531723,1278.2805429864252,1268.825301204819,1259.3984962406014,1250.0,1240.6296851574216,1231.2874251497008,1221.9730941704042,1212.6865671641795,1203.427719821163,1194.1964285714291,1184.9925705794951,1175.8160237388727,1166.666666666667,1157.5443786982241,1148.4490398818314,1139.3805309734516,1130.3387334315173,1121.323529411765,1112.334801762115,1103.3724340175943,1094.4363103953146,1085.5263157894735,1076.6423357664235,1067.7842565597673,1058.9519650655034,1050.1453488372092,1041.3642960812774,1032.6086956521751,1023.8784370477572,1015.1734104046251,1006.4935064935077,997.838616714698,989.2086330935257,980.603448275863,972.0229555236737,963.4670487106023,954.9356223175964,946.4285714285725,937.9457917261058,929.4871794871784,921.052631578947,912.6420454545458,904.2553191489367,895.8923512747874,887.5530410183874,879.2372881355936,870.9449929478142,862.6760563380287,854.4303797468367,846.207865168539,838.0084151472655,829.8319327731097,821.678321678323,813.5474860335202,805.4393305439334,797.3537604456826,789.2906815020862,781.25,773.2316227461866,765.2354570637121,757.2614107883812,749.3093922651927,741.3793103448274,733.4710743801653,725.5845942228334,717.7197802197799,709.8765432098763,702.054794520548,694.2544459644329,686.4754098360659,678.7175989085947,670.9809264305188,663.2653061224503,655.5706521739136,647.896879240164,640.2439024390238,632.6116373477674,625.0,617.4089068825916,609.8382749326148,602.2880215343207,594.7580645161288,587.248322147651,579.7587131367288,572.2891566265054,564.8395721925136,557.4098798397864,550.0000000000005,542.6098535286284,535.2393617021278,527.8884462151401,520.5570291777195,513.2450331125838,505.95238095238136,498.6789960369886,491.4248021108192,484.18972332015863,476.9736842105265,469.77660972404743,462.59842519685066,455.4390563564881,448.2984293193726,441.17647058823485,434.07310704960736,426.9882659713164,419.921875,412.8738621586481,405.8441558441561,398.8326848249024,391.83937823834225,384.86416558861646,377.9069767441867,370.967741935484,364.04639175257824,357.1428571428581,350.2570694087415,343.388960205393,336.53846153846143,329.70550576184365,322.89002557544745,316.09195402298894,309.31122448979664,302.5477707006363,295.80152671755735,289.0724269377387,282.3604060913709,275.66539923954304,268.9873417721522,262.32616940581545,255.68181818181878,249.05422446406143,242.44332493702836,235.8490566037741,229.27135678391997,222.71016311166903,216.16541353383533,209.6370463078856,203.12500000000065,196.629213483146,190.14962593516205,183.6861768368614,177.23880597014906,170.80745341614966,164.3920595533499,157.9925650557612,151.60891089108895,145.24103831891176,138.8888888888884,132.55240443896477,126.23152709359653,119.92619926199266,113.63636363636354,107.36196319018454,101.10294117647189,94.85924112607181,88.63080684596625,82.41758241758323,76.21951219512258,70.03654080389832,63.86861313868675,57.715674362089906,51.57766990291357,45.454545454546306,39.346246973366306,33.252720677146016,27.173913043478937,21.10977080820198,15.060240963855609,9.025270758122872,3.0048076923083755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\"mid\":[1.0111999999999999,1.017282392302212,1.023383022662302,1.0295018910802693,1.0356389975561149,1.0417943420898377,1.0479679246814382,1.0541597453309166,1.0603698040382727,1.0665981008035064,1.0728446356266177,1.0791094085076067,1.0853924194464732,1.0916936684432177,1.0980131554978403,1.1043508806103401,1.1107068437807175,1.1170810450089728,1.1234734842951057,1.1298841616391166,1.136313077041005,1.1427602305007711,1.1492256220184147,1.1557092515939362,1.1622111192273357,1.1687312249186124,1.175269568667767,1.181826150474799,1.188400970339709,1.194994028262497,1.2016053242431621,1.208234858281705,1.214882630378126,1.221548640532424,1.2282328887446001,1.2349353750146543,1.241656099342586,1.248395061728395,1.2551522621720819,1.2619277006736462,1.2687213772330892,1.275533291850409,1.2823634445256067,1.289211835258682,1.296078464049635,1.3029633308984663,1.3098664358051746,1.3167877787697606,1.3237273597922246,1.3306851788725662,1.3376612360107858,1.3446555312068826,1.3516680644608572,1.3586988357727097,1.3657478451424396,1.3728150925700473,1.3799005780555331,1.3870043015988962,1.394126263200137,1.4012664628592555,1.4084249005762521,1.415601576351126,1.4227964901838777,1.4300096420745068,1.4372410320230138,1.4444906600293985,1.4517585260936614,1.4590446302158016,1.4663489723958192,1.4736715526337147,1.4810123709294878,1.4883714272831392,1.4957487216946679,1.503144254164074,1.510558024691358,1.5179900332765195,1.525440279919559,1.5329087646204764,1.5403954873792711,1.5479004481959435,1.5554236470704936,1.562965084002922,1.5705247589932276,1.5781026720414109,1.5856988231474716,1.5933132123114102,1.6009458395332266,1.608596704812921,1.616265808150493,1.6239531495459425,1.6316587289992692,1.6393825465104748,1.6471246020795571,1.6548848957065174,1.6626634273913552,1.670460197134071,1.678275204934664,1.6861084507931352,1.6939599347094842,1.7018296566837108,1.7097176167158148,1.7176238148057965,1.7255482509536566,1.7334909251593937,1.7414518374230088,1.7494309877445011,1.7574283761238714,1.7654440025611196,1.7734778670562457,1.781529969609249,1.7896003102201299,1.797688888888889,1.8057957056155258,1.81392076040004,1.8220640532424315,1.830225584142701,1.8384053531008484,1.8466033601168734,1.854819605190776,1.8630540883225568,1.871306809512215,1.8795777687597508,1.887866966065164,1.8961744014284556,1.9045000748496246,1.912843986328671,1.9212061358655952,1.929586523460397,1.9379851491130766,1.9464020128236346,1.9548371145920695,1.9632904544183822,1.9717620323025729,1.9802518482446412,1.9887599022445872,1.9972861943024105,2.0058307244181117,2.0143934925916906,2.0229744988231473,2.031573743112481,2.040191225459694,2.048826945864784,2.057480904327751,2.066153100848596,2.0748435354273194,2.0835522080639195,2.0922791187583982,2.1010242675107538,2.1097876543209875,2.118569279189099,2.1273691421150884,2.136187243098955,2.1450235821406993,2.153878159240321,2.1627509743978215,2.171642027613199,2.180551318886454,2.1894788482175866,2.1984246156065974,2.2073886210534854,2.2163708645582516,2.225371346120896,2.234390065741417,2.243427023419816,2.2524822191560934,2.2615556529502476,2.27064732480228,2.2797572347121897,2.288885382679977,2.2980317687056426,2.307196392789185,2.316379254930606,2.3255803551299046,2.3347996933870805,2.344037269702135,2.3532930840750663,2.3625671365058754,2.371859426994562,2.3811699555411265,2.3904987221455687,2.3998457268078885,2.409210969528086,2.418594450306162,2.427996169142115,2.437416126035946,2.4468543209876548,2.456310753997241,2.465785425064704,2.475278334190046,2.484789481373265,2.494318866614362,2.5038664899133365,2.5134323512701893,2.5230164506849193,2.5326187881575266,2.5422393636880125,2.5518781772763757,2.561535228922616,2.5712105186267347,2.580904046388731,2.5906158122086045,2.600345816086356,2.6100940580219856,2.619860538015493,2.6296452560668775,2.63944821217614,2.6492694063432807,2.659108838568298,2.668966508851194,2.6788424171919667,2.6887365635906173,2.6986489480471456,2.708579570561552,2.7185284311338362,2.728495529763998,2.7384808664520373,2.7484844411979554,2.75850625400175,2.7685463048634222,2.7786045937829718,2.7886811207603994,2.7987758857957052,2.8088888888888883,2.8190201300399496,2.8291696092488885,2.8393373265157047,2.8495232818403995,2.8597274752229707,2.86994990666342,2.8801905761617475,2.8904494837179517,2.9007266293320346,2.9110220130039943,2.921335634733832,2.9316674945215486,2.942017592367142,2.952385928270613,2.962772502231962,2.973177314251188,2.983600364328292,2.994041652463274,3.0045011786561333,3.0149789429068705,3.0254749452154854,3.0359891855819776,3.0465216640063484,3.057072380488597,3.0676413350287226,3.0782285276267265,3.088833958282607,3.0994576269963656,3.110099533768002,3.1207596785975165,3.1314380614849076,3.1421346824301772,3.1528495414333255,3.16358263849435,3.174333973613253,3.1851035467900335,3.1958913580246917,3.2066974073172276,3.217521694667641,3.2283642200759313,3.2392249835421003,3.2501039850661466,3.2610012246480706,3.2719167022878737,3.2828504179855527,3.293802371741111,3.304772563554546,3.3157609934258585,3.3267676613550488,3.3377925673421167,3.348835711387063,3.3598970934898857,3.370976713650587,3.3820745718691665,3.393190668145623,3.4043250024799576,3.4154775748721695,3.426648385322259,3.4378374338302264,3.449044720396072,3.4602702450197946,3.471514007701395,3.4827760084408728,3.494056247238228,3.5053547240934626,3.516671439006574,3.5280063919775633,3.53935958300643,3.5507310120931743,3.5621206792377964,3.573528584440296,3.5849547277006732,3.5963991090189285,3.6078617283950614,3.619342585829073,3.6308416813209607,3.642359014870726,3.6538945864783705,3.665448396143892,3.6770204438672907,3.688610729648567,3.7002192534877216,3.711846015384754,3.7234910153396634,3.735154253352452,3.746835729423117,3.7585354435516596,3.7702533957380813,3.781989585982379,3.793744014284555,3.8055166806446086,3.8173075850625398,3.8291167275383486,3.8409441080720357,3.8527897266635995,3.8646535833130424,3.8765356780203626,3.8884360107855596,3.900354581608636,3.912291390489589,3.9242464374284194,3.9362197224251276,3.9482112454797136,3.9602210065921772,3.972249005762518,3.9842952429907386,3.9963597182768353,4.00844243162081,4.0205433830226625,4.032662572482392,4.0447999999999995,4.056955665575485,4.069129569208848,4.081321710900089,4.093532090649207,4.105760708456203,4.118007564321077,4.130272658243829,4.142555990224459,4.154857560262965,4.167177368359351,4.179515414513612,4.191871698725753,4.20424622099577,4.2166389813236655,4.22904997970944,4.241479216153091,4.253926690654619,4.2663924032140255,4.2788763538313095,4.291378542506471,4.303898969239509,4.316437634030427,4.328994536879221,4.341569677785893,4.354163056750443,4.366774673772871,4.379404528853176,4.392052621991359,4.4047189531874205,4.417403522441359,4.430106329753176,4.44282737512287,4.455566658550442,4.468324180035891,4.481099939579218,4.493893937180425,4.5067061728395075,4.519536646556467,4.532385358331305,4.54525230816402,4.558137496054614,4.5710409220030845,4.583962586009433,4.596902488073659,4.609860628195762,4.622837006375745,4.635831622613604,4.648844476909341,4.661875569262955,4.674924899674448,4.687992468143819,4.701078274671068,4.714182319256193,4.727304601899196,4.740445122600077,4.753603881358836,4.766780878175474,4.779976113049988,4.79318958598238,4.8064212969726485,4.819671246020796,4.83293943312682,4.846225858290723,4.859530521512504,4.872853422792161,4.886194562129696,4.89955393952511,4.9129315549784005,4.926327408489569,4.939741500058616,4.953173829685539,4.966624397370344,4.9800932031130225,4.99358024691358,5.007085528772015,5.0206090486883275,5.034150806662518,5.047710802694588,5.061289036784533,5.074885508932357,5.088500219138058,5.102133167401636,5.115784353723092,5.129453778102427,5.1431414405396385,5.156847341034728,5.170571479587696,5.18431385619854,5.198074470867263,5.211853323593863,5.225650414378341,5.239465743220697,5.253299310120932,5.267151115079042,5.281021158095032,5.294909439168898,5.308815958300642,5.322740715490265,5.336683710737766,5.350644944043143,5.364624415406398,5.3786221248275305,5.392638072306541,5.406672257843429,5.4207246814381955,5.434795343090839,5.448884242801359,5.4629913805697585,5.477116756396034,5.491260370280189,5.505422222222221,5.51960231222213,5.533800640279917,5.548017206395585,5.562252010569128,5.576505052800548,5.590776333089846,5.605065851437022,5.6193736078420775,5.6336996023050085,5.648043834825818,5.662406305404504,5.676787014041069,5.691185960735511,5.70560314548783,5.720038568298027,5.7344922291661025,5.748964128092055,5.763454265075886,5.777962640117594,5.7924892532171794,5.807034104374643,5.821597193589985,5.8361785208632035,5.850778086194302,5.865395889583277,5.880031931030129,5.894686210534859,5.909358728097467,5.924049483717954,5.938758477396316,5.953485709132557,5.9682311789266755,5.9829948867786715,5.997776832688545,6.012577016656296,6.027395438681925,6.042232098765432,6.057086996906816,6.071960133106078,6.086851507363218,6.101761119678236,6.116688970051131,6.131635058481904,6.146599384970554,6.1615819495170845,6.176582752121491,6.191601792783774,6.206639071503935,6.2216945882819745,6.236768343117894,6.251860336011688,6.26697056696336,6.2820990359729105,6.297245743040338,6.312410688165643,6.327593871348826,6.342795292589886,6.358014951888825,6.373252849245641,6.388508984660335,6.403783358132906,6.419075969663356,6.434386819251682,6.449715906897887,6.465063232601969,6.480428796363931,6.49581259818377,6.511214638061484,6.526634915997077,6.542073431990548,6.557530186041899,6.573005178151125,6.5884984083182285,6.604009876543211,6.61953958282607,6.635087527166807,6.650653709565421,6.666238130021914,6.681840788536284,6.6974616851085305,6.713100819738656,6.7287581924266595,6.744433803172541,6.7601276519762985,6.775839738837935,6.791570063757449,6.807318626734843,6.8230854277701125,6.838870466863259,6.854673744014284,6.870495259223186,6.886335012489969,6.902193003814626,6.918069233197162,6.933963700637575,6.949876406135866,6.965807349692035,6.981756531306081,6.9977239509780045,7.013709608707806,7.0297135044954855,7.045735638341043,7.061776010244478,7.077834620205789,7.09391146822498,7.110006554302047,7.1261198784369935,7.142251440629819,7.1584012408805195,7.1745692791890985,7.190755555555556,7.206960069979888,7.223182822462103,7.239423813002192,7.25568304160016,7.271960508256004,7.288256212969726,7.3045701557413265,7.320902336570804,7.33725275545816,7.353621412403394,7.370008307406505,7.386413440467494,7.40283681158636,7.419278420763104,7.435738267997726,7.452216353290225,7.468712676640602,7.48522723804886,7.501760037514992,7.518311075039003,7.53488035062089,7.551467864260656,7.568073615958302,7.5846976057138225,7.601339833527222,7.618000299398498,7.634679003327652,7.651375945314684,7.668091125359593,7.684824543462381,7.701576199623045,7.718346093841588,7.735134226118008,7.7519405964523065,7.768765204844482,7.785608051294536,7.802469135802467,7.819348458368278,7.836246018991965,7.853161817673529,7.870095854412971,7.887048129210291,7.904018642065488,7.921007392978565,7.938014381949518,7.955039608978349,7.972083074065057,7.989144777209642,8.006224718412106,8.023322897672447,8.040439314990666,8.057573970366763,8.074726863800738,8.09189799529259,8.109087364842319,8.126294972449925,8.14352081811541,8.160764901838773,8.178027223620017,8.195307783459135,8.21260658135613,8.229923617311004,8.247258891323755,8.264612403394384,8.281984153522894,8.299374141709277,8.31678236795354,8.334208832255678,8.351653534615696,8.369116475033593,8.386597653509366,8.404097070043015,8.421614724634544,8.43915061728395,8.456704747991234,8.474277116756396,8.491867723579434,8.50947656846035,8.527103651399145,8.54474897239582,8.562412531450368,8.580094328562797,8.597794363733101,8.615512636961284,8.633249148247344,8.651003897591286,8.668776884993102,8.686568110452797,8.704377573970367,8.722205275545816,8.740051215179143,8.757915392870347,8.77579780861943,8.79369846242639,8.811617354291227,8.829554484213942,8.847509852194536,8.865483458233006,8.883475302329353,8.90148538448358,8.919513704695687,8.937560262965668,8.955625059293526,8.973708093679264,8.991809366122878,9.009928876624373,9.028066625183742,9.04622261180099,9.064396836476117,9.08258929920912,9.1008,9.119028938848759,9.137276115755395,9.155541530719908,9.1738251837423,9.19212707482257,9.210447203960715,9.22878557115674,9.247142176410643,9.265517019722424,9.28391010109208,9.302321420519618,9.320750978005032,9.339198773548322,9.357664807149492,9.376149078808536,9.394651588525461,9.413172336300262,9.431711322132942,9.450268546023501,9.468844007971935,9.487437707978248,9.506049646042438,9.524679822164506,9.543328236344452,9.561994888582275,9.580679778877975,9.599382907231554,9.618104273643011,9.636843878112348,9.65560172063956,9.674377801224647,9.693172119867615,9.71198467656846,9.730815471327181,9.749664504143784,9.76853177501826,9.787417283950615,9.806321030940849,9.82524301598896,9.844183239094951,9.863141700258817,9.88211839948056,9.901113336760185,9.920126512097681,9.93915792549306,9.958207576946315,9.977275466457447,9.996361594026457,10.015465959653346,10.034588563338113,10.053729405080757,10.072888484881279,10.092065802739677,10.111261358655954,10.130475152630106,10.149707184662137,10.168957454752048,10.188225962899836,10.207512709105501,10.226817693369043,10.246140915690464,10.265482376069764,10.284842074506939,10.304220011001991,10.323616185554924,10.343030598165733,10.362463248834418,10.381914137560983,10.401383264345425,10.420870629187744,10.440376232087944,10.459900073046018,10.479442152061972,10.499002469135803,10.51858102426751,10.538177817457097,10.55779284870456,10.5774261180099,10.59707762537312,10.616747370794215,10.63643535427319,10.656141575810045,10.675866035404775,10.69560873305738,10.715369668767867,10.73514884253623,10.75494625436247,10.774761904246587,10.794595792188582,10.814447918188456,10.834318282246208,10.85420688436184,10.874113724535345,10.89403880276673,10.913982119055992,10.933943673403133,10.953923465808149,10.973921496271045,10.993937764791818,11.013972271370466,11.034025016006996,11.054095998701404,11.074185219453689,11.09429267826385,11.114418375131887,11.134562310057806,11.154724483041598,11.174904894083271,11.195103543182821,11.215320430340247,11.235555555555553,11.255808918828738,11.276080520159798,11.296370359548739,11.316678436995554,11.337004752500247,11.357349306062819,11.377712097683268,11.398093127361594,11.418492395097799,11.43890990089188,11.45934564474384,11.47979962665368,11.500271846621397,11.52076230464699,11.541271000730461,11.561797934871807,11.582343107071035,11.602906517328138,11.623488165643119,11.644088052015977,11.664706176446714,11.685342538935329,11.705997139481825,11.726669978086194,11.747361054748444,11.768070369468568,11.78879792224657,11.809543713082451,11.83030774197621,11.851090008927844,11.871890513937359,11.892709257004752,11.913546238130023,11.934401457313168,11.955274914554193,11.976166609853095,11.997076543209877,12.018004714624533,12.038951124097068,12.059915771627482,12.080898657215773,12.101899780861942,12.122919142565987,12.143956742327912,12.165012580147714,12.186086656025394,12.207178969960951,12.228289521954387,12.249418312005698,12.270565340114889,12.291730606281957,12.312914110506902,12.334115852789724,12.355335833130429,12.376574051529007,12.397830507985462,12.419105202499797,12.440398135072009,12.461709305702097,12.483038714390066,12.504386361135907,12.52575224593963,12.547136368801231,12.568538729720709,12.589959328698066,12.611398165733302,12.632855240826412,12.6543305539774,12.675824105186267,12.697335894453012,12.718865921777631,12.740414187160132,12.761980690600508,12.783565432098762,12.805168411654899,12.82678962926891,12.848429084940797,12.870086778670563,12.891762710458204,12.913456880303725,12.935169288207124,12.956899934168401,12.978648818187553,13.000415940264586,13.022201300399495,13.044004898592288,13.065826734842952,13.087666809151495,13.109525121517914,13.13140167194221,13.153296460424388,13.17520948696444,13.19714075156237,13.219090254218179,13.241057994931868,13.263043973703434,13.285048190532875,13.307070645420195,13.329111338365392,13.351170269368467,13.37324743842942,13.395342845548251,13.417456490724957,13.439588373959543,13.461738495252007,13.483906854602349,13.50609345201057,13.528298287476666,13.550521361000639,13.572762672582492,13.595022222222221,13.61730000991983,13.639596035675313,13.661910299488676,13.684242801359916,13.706593541289035,13.728962519276033,13.751349735320906,13.773755189423657,13.796178881584288,13.818620811802791,13.841080980079179,13.86355938641344,13.88605603080558,13.908570913255597,13.931104033763491,13.953655392329267,13.976224988952918,13.998812823634447,14.02141889637385,14.044043207171136,14.066685756026295,14.089346542939333,14.112025567910251,14.134722830939046,14.157438332025718,14.180172071170267,14.202924048372697,14.225694263633002,14.248482716951186,14.271289408327245,14.294114337761185,14.316957505252999,14.339818910802693,14.362698554410265,14.385596436075714,14.408512555799039,14.431446913580247,14.45439950941933,14.477370343316291,14.500359415271125,14.523366725283843,14.546392273354435,14.569436059482904,14.592498083669254,14.61557834591348,14.638676846215581,14.661793584575562,14.684928560993427,14.708081775469163,14.731253228002778,14.754442918594268,14.777650847243638,14.800877013950887,14.824121418716011,14.847384061539016,14.870664942419895,14.893964061358654,14.917281418355294,14.940617013409808,14.963970846522198,14.987342917692468,15.010733226920614,15.034141774206638,15.05756855955054,15.08101358295232,15.104476844411977,15.127958343929512,15.151458081504925,15.17497605713822,15.198512270829386,15.222066722578434,15.245639412385357,15.269230340250159,15.292839506172838,15.316466910153395,15.34011255219183,15.363776432288143,15.387458550442332,15.411158906654402,15.434877500924348,15.45861433325217,15.482369403637872,15.50614271208145,15.529934258582905,15.553744043142238,15.577572065759451,15.60141832643454,15.625282825167506,15.649165561958355,15.673066536807077,15.696985749713678,15.720923200678154,15.74487888970051,15.768852816780743,15.792844981918854,15.816855385114843,15.840884026368709,15.864930905680453,15.888996023050073,15.913079378477576,15.937180971962954,15.961300803506207,15.985438873107341,16.00959518076635,16.03376972648324,16.057962510258005,16.082173532090646,16.106402791981168,16.130650289929566,16.154916025935847,16.179199999999998]},\"selected\":{\"id\":\"2292\"},\"selection_policy\":{\"id\":\"2291\"}},\"id\":\"2273\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Bid\"},\"renderers\":[{\"id\":\"2282\"}]},\"id\":\"2295\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2259\",\"type\":\"PanTool\"},{\"attributes\":{\"fill_alpha\":0.2,\"fill_color\":\"red\",\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2276\"}},\"y2\":{\"expr\":{\"id\":\"2277\"}}},\"id\":\"2299\",\"type\":\"VArea\"},{\"attributes\":{\"fill_alpha\":0.4,\"fill_color\":\"red\",\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2276\"}},\"y2\":{\"expr\":{\"id\":\"2277\"}}},\"id\":\"2297\",\"type\":\"VArea\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2295\"},{\"id\":\"2312\"}]},\"id\":\"2294\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"2249\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"red\",\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2276\"}},\"y2\":{\"expr\":{\"id\":\"2277\"}}},\"id\":\"2298\",\"type\":\"VArea\"},{\"attributes\":{\"overlay\":{\"id\":\"2265\"}},\"id\":\"2261\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"axis_label\":\"UNI/USDT Mid Price\",\"coordinates\":null,\"formatter\":{\"id\":\"2289\"},\"group\":null,\"major_label_policy\":{\"id\":\"2290\"},\"ticker\":{\"id\":\"2252\"}},\"id\":\"2251\",\"type\":\"LinearAxis\"},{\"attributes\":{\"range_padding\":0},\"id\":\"2245\",\"type\":\"DataRange1d\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2273\"},\"glyph\":{\"id\":\"2297\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2299\"},\"name\":\"ask\",\"nonselection_glyph\":{\"id\":\"2298\"},\"view\":{\"id\":\"2301\"}},\"id\":\"2300\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2247\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2264\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2289\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Constant Product AMM Depth for the pair UNI/USDT\"},\"id\":\"2241\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2256\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis_label\":\"Order Size\",\"coordinates\":null,\"formatter\":{\"id\":\"2286\"},\"group\":null,\"major_label_policy\":{\"id\":\"2287\"},\"ticker\":{\"id\":\"2256\"}},\"id\":\"2255\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2262\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis\":{\"id\":\"2251\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2254\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2260\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2265\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"range_padding\":0},\"id\":\"2243\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2287\",\"type\":\"AllLabels\"},{\"attributes\":{\"fill_alpha\":0.2,\"fill_color\":\"green\",\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"green\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2274\"}},\"y2\":{\"expr\":{\"id\":\"2275\"}}},\"id\":\"2281\",\"type\":\"VArea\"},{\"attributes\":{\"source\":{\"id\":\"2273\"}},\"id\":\"2301\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"2273\"}},\"id\":\"2283\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2252\",\"type\":\"BasicTicker\"},{\"attributes\":{\"label\":{\"value\":\"Ask\"},\"renderers\":[{\"id\":\"2300\"}]},\"id\":\"2312\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis\":{\"id\":\"2255\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2258\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2290\",\"type\":\"AllLabels\"},{\"attributes\":{\"tools\":[{\"id\":\"2259\"},{\"id\":\"2260\"},{\"id\":\"2261\"},{\"id\":\"2262\"},{\"id\":\"2263\"},{\"id\":\"2264\"}]},\"id\":\"2266\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2273\"},\"glyph\":{\"id\":\"2279\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2281\"},\"name\":\"bid\",\"nonselection_glyph\":{\"id\":\"2280\"},\"view\":{\"id\":\"2283\"}},\"id\":\"2282\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fields\":[]},\"id\":\"2274\",\"type\":\"Stack\"},{\"attributes\":{\"fields\":[\"bid\",\"ask\"]},\"id\":\"2277\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"2263\",\"type\":\"ResetTool\"},{\"attributes\":{\"fill_alpha\":0.4,\"fill_color\":\"green\",\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"green\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2274\"}},\"y2\":{\"expr\":{\"id\":\"2275\"}}},\"id\":\"2279\",\"type\":\"VArea\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"green\",\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"green\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2274\"}},\"y2\":{\"expr\":{\"id\":\"2275\"}}},\"id\":\"2280\",\"type\":\"VArea\"},{\"attributes\":{\"fields\":[\"bid\"]},\"id\":\"2276\",\"type\":\"Stack\"}],\"root_ids\":[\"2313\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n", " const render_items = [{\"docid\":\"92c5281f-524c-44d5-aeb2-c2b6e0e82418\",\"root_ids\":[\"2313\"],\"roots\":{\"2313\":\"d59c72dc-4ec6-4496-88d0-11b5c6d005fc\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "2313" } }, "output_type": "display_data" } ], "source": [ "from cpy_amm.market import new_market, MarketQuote\n", "from cpy_amm.plotting import new_order_book_figure\n", "\n", "# USDT/USD market price\n", "usdt_usd = MarketQuote(\"USDT/USD\", 1)\n", "# UNI/USD market price\n", "uni_usd = MarketQuote(\"UNI/USD\", 6.32)\n", "# create a 10000 USD market for UNI/USDT\n", "mkt = new_market(10000, usdt_usd, uni_usd, 0.003)\n", "# new plot with constant product curve\n", "order_book_plot = new_order_book_figure(mkt, x_min=2000, x_max=8000)\n", "# display plots\n", "show(column(order_book_plot, sizing_mode=\"stretch_both\"))" ] }, { "cell_type": "markdown", "id": "9eb06dbc", "metadata": {}, "source": [ "Autoviz for constant product AMMs\n", "---" ] }, { "cell_type": "code", "execution_count": 7, "id": "7c85ae1a", "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"393c97ea-5ba2-41ec-b6f3-c0eb887bd220\":{\"defs\":[],\"roots\":{\"references\":[{\"attributes\":{\"children\":[{\"id\":\"2801\"},{\"id\":\"2802\"}],\"sizing_mode\":\"stretch_both\"},\"id\":\"2803\",\"type\":\"Column\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2554\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2491\"},\"glyph\":{\"id\":\"2492\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2494\"},\"nonselection_glyph\":{\"id\":\"2493\"},\"view\":{\"id\":\"2496\"}},\"id\":\"2495\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2690\"},\"glyph\":{\"id\":\"2693\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2695\"},\"nonselection_glyph\":{\"id\":\"2694\"},\"view\":{\"id\":\"2697\"}},\"id\":\"2696\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2583\",\"type\":\"Circle\"},{\"attributes\":{\"line_alpha\":0.3,\"line_color\":\"red\",\"line_width\":20,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2601\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2512\",\"type\":\"Circle\"},{\"attributes\":{\"tools\":[{\"id\":\"2674\"},{\"id\":\"2675\"},{\"id\":\"2676\"},{\"id\":\"2677\"},{\"id\":\"2678\"},{\"id\":\"2679\"},{\"id\":\"2681\"}]},\"id\":\"2682\",\"type\":\"Toolbar\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2508\"}]},\"id\":\"2507\",\"type\":\"Legend\"},{\"attributes\":{\"factors\":[\"Before Swap\",\"After Swap\"]},\"id\":\"2659\",\"type\":\"FactorRange\"},{\"attributes\":{\"source\":{\"id\":\"2491\"}},\"id\":\"2496\",\"type\":\"CDSView\"},{\"attributes\":{\"source\":{\"id\":\"2690\"}},\"id\":\"2697\",\"type\":\"CDSView\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2494\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2709\"},{\"id\":\"2727\"}]},\"id\":\"2708\",\"type\":\"Legend\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2493\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":[5000.0,5500.0],\"y\":[791.1392405063291,719.21749136939]},\"selected\":{\"id\":\"2624\"},\"selection_policy\":{\"id\":\"2623\"}},\"id\":\"2600\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"source\":{\"id\":\"2600\"}},\"id\":\"2605\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2600\"},\"glyph\":{\"id\":\"2601\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2603\"},\"nonselection_glyph\":{\"id\":\"2602\"},\"view\":{\"id\":\"2605\"}},\"id\":\"2604\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2579\"}]},\"id\":\"2578\",\"type\":\"Legend\"},{\"attributes\":{\"range_padding\":0},\"id\":\"2733\",\"type\":\"DataRange1d\"},{\"attributes\":{\"range_padding\":0},\"id\":\"2731\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2607\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2606\"},\"glyph\":{\"id\":\"2607\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2609\"},\"name\":\"5828833226412872436\",\"nonselection_glyph\":{\"id\":\"2608\"},\"view\":{\"id\":\"2611\"}},\"id\":\"2610\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2467\",\"type\":\"LinearScale\"},{\"attributes\":{\"data\":{\"x\":[5244.044240850758],\"y\":[754.321668706956]},\"selected\":{\"id\":\"2626\"},\"selection_policy\":{\"id\":\"2625\"}},\"id\":\"2606\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"data\":{\"ask\":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12.481278082875358,36.764705882352814,60.81281518837134,84.62901003739364,108.21662912545216,131.5789473684209,154.71917741778972,177.6404711334234,200.34592101470128,222.83856159142968,245.12137077582096,267.19727117680446,289.069131377912,310.7397671798717,332.21194280908253,353.4883720930232,374.57171960366685,395.4646017699115,416.16958795998914,436.6892015348067,457.0259208731242,477.18218036943097,497.16037140539015,516.962843295638,536.5919042087386,556.0498220640569,575.338825405261,594.4611042511899,613.4188109247391,632.2140608604404,650.8489333913798,669.3254725160397,687.6456876456871,705.8115543328747,723.8250149815939,741.6879795396419,759.4023261736987,776.9699019276288,794.3925233644861,811.6719771926878,828.8100208768262,845.8083832335328,862.6687650128379,879.3928394654343,895.9822528962286,912.4386252045819,928.7635504116065,944.9585971748653,961.0253092908549,976.9652061855666,992.7797833935009,1008.4705130254113,1024.0388442251046,1039.4862036156044,1054.813995734934,1070.0236034618404,1085.116388431695,1100.0936914428478,1114.9568328536984,1129.707112970711,1144.345812427634,1158.874192556137,1173.2934957481034,1187.6049458097998,1201.8097483081135,1215.9090909090908,1229.9041437089593,1243.796059557828,1257.5859743762642,1271.2750074649148,1284.8642618073625,1298.3548243663845,1311.747766373772,1325.04414361389,1338.2449967011216,1351.3513513513508,1364.3642186476452,1377.2845953002604,1390.1134639011343,1402.85179317298,1415.500538213132,1428.0606407322655,1440.5330292881063,1452.918619514273,1465.2183143443492,1477.4330042313115,1489.563567362428,1501.6108698697294,1513.5757660361553,1525.459098497496,1537.2616984402077,1548.9843857952185,1560.6279694278041,1572.1932473236345,1583.6810067710826,1595.092024539877,1606.4270670561853,1617.6868905742142,1628.8722413444011,1639.983855778286,1651.0224606101237,1661.9887730553323,1672.8835009658294,1683.707342982339,1694.4609886837397,1705.1451187335092,1715.760405023341,1726.3075108139992,1736.7870908734562,1747.1997916123987,1757.5462512171368,1767.8270997799923,1778.0429594272073,1788.1944444444441,1798.2821613999101,1808.3067092651756,1818.2686795337283,1828.1686563373123,1838.0072165601064,1847.784929950776,1857.502359232463,1867.160060210737,1876.7585818795724,1886.2984665253707,1895.7802498290966,1905.2044609665425,1914.571622706776,1923.8822515088061,1933.1368576165037,1942.3359451518113,1951.4800122062863,1960.5695509309967,1969.605047624825,1978.5869828211949,1987.5158313732584,1996.392062537582,2005.2161400563577,2013.9885222381631,2022.7096620373131,2031.3800071318194,2040.0000000000002,2048.5700779957456,2057.090673422494,2065.562213605922,2073.98512096538,2082.3598130841115,2090.6867027782628,2098.9661981647105,2107.198702727747,2115.3846153846152,2123.524330549956,2131.6182381991493,2139.666723930596,2147.670169026953,2155.6289505153463,2163.5434412265754,2171.4140098533326,2179.241021007454,2187.0248352762287,2194.765809277771,2202.4642957154856,2210.120643431635,2217.7351974600347,2225.30829907788,2232.8402858567392,2240.3314917127072,2247.7822469557545,2255.192878338279,2262.563709102866,2269.895059029296,2277.187244480785,2284.4405784494943,2291.655370601312,2298.831927319922,2305.9705517501748,2313.0715438407747,2320.135200386286,2327.161815068493,2334.1516784970913,2341.10507824976,2348.0222989116005,2354.9036221139586,2361.7493265726503,2368.559688125593,2375.3349797698493,2382.075471698113,2388.781431334622,2395.4531233705284,2402.0908097987203,2408.694749948122,2415.265200517464,2421.802415608547,2428.306646758997,2434.7781429745273,2441.217150760719,2447.623914154318,2453.9986747540647,2460.341671751067,2466.653141958716,2472.9333198421527,2479.182437547312,2485.4007249295205,2491.58840958168,2497.7457168620376,2503.872869921543,2509.9700897308076,2516.037595106668,2522.075602738367,2528.084327213342,2534.063981042654,2540.014774686038,2545.9369165765943,2551.830613145125,2557.696068844123,2563.5334861714064,2569.34306569343,2575.1250060682555,2580.8795040681903,2586.6067546021163,2592.3069507374917,2597.980283722048,2603.626943005181,2609.2471162590336,2614.840989399293,2620.408746605688,2625.9505703422046,2631.466641377021,2636.957138802157,2642.422240052862,2647.8621209267285,2653.276955602537,2658.6669166588545,2664.032175092362,2669.372900335946,2674.689260276524,2679.9814212726424,2685.249548171833,2690.4938043277225,2695.714351616921,2700.9113504556753,2706.0849598163027,2711.235337243402,2716.362638869839,2721.467019432533,2726.548632288016,2731.6076294277923,2736.644161493498,2741.6583777918436,2746.6504263093784,2751.6204537270437,2756.5686054345383,2761.495025544501,2766.3998569064975,2771.283241120828,2776.145318552157,2780.986228342959,2785.8061084267915,2790.6050955414007,2795.383325241647,2800.1409319122695,2804.878048780488,2809.5948079284335,2814.2913403054304,2818.96777574011,2823.6242429523772,2828.2608695652175,2832.877782116361,2837.4751060697895,2842.052965827105,2846.611484738748,2851.1507851150786,2855.6709882373143,2860.172214368333,2864.654582763337,2869.118211680389,2873.563218390804,2877.9897191894297,2882.3978294047815,2886.7876634090617,2891.15933462805,2895.5129555508743,2899.8486377396566,2904.1664918390466,2908.46662758563,2912.7491538172244,2917.014178482068,2921.2618086478838,2925.49215051084,2929.7053094044013,2933.9013898080734,2938.080495356037,2942.242728845679,2946.3881922460223,2950.516986706056,2954.629212562958,2958.724969350225,2962.8043558057016,2966.8674698795185,2970.914408741926,2974.9452687910484,2978.96014566053,2982.9591342271037,2986.942328618063,2990.909822218647,2994.8617076793385,2998.798076923077,3002.7190211523853,3006.6246308564128,3010.514995817899,3014.3902051200507,3018.2503471533423,3022.095509622238,3025.9257795518315,3029.7412432944147,3033.541986535963,3037.328094302554,3041.0996509667043,3044.8567402536396,3048.5994452474897,3052.3278483974104,3056.0420315236424,3059.742075823493,3063.4280618772536,3067.1000696540514,3070.7581785176317,3074.4024672320734,3078.033013967448,3081.6498963053996,3085.253191244681,3088.8429752066118,3092.4193240404807,3095.9823130288937,3099.5320168930484,3103.0685097979645,3106.5918653576437,3110.1021566401814,3113.599456172816,3117.083835946924,3120.555367422959,3124.014121535341,3127.460168697282,3130.8935788055683,3134.3144212452844,3137.7227648944895,3141.1186781288375,3144.5022288261516,3147.8734843709444,3151.2325116588936,3154.579377101267,3157.914146629296,3161.236885698509,3164.5476592930104,3167.8465319297216,3171.1335676625663,3174.408830086619,3177.6723823422103,3180.9242871189767,3184.1646066598805,3187.393402765177,3190.6107367963486,3193.8166696799854,3197.0112619116376,3200.194573559615,3203.3666642687576,3206.5275932641557,3209.677419354838,3212.816200937422,3215.9439959997144,3219.060862124291,3222.166856492027,3225.262035885592,3228.3464566929133,3231.4201749105973,3234.4832461473206,3237.535725627183,3240.5776681930256,3243.6091283097153,3246.630160067397,3249.6408171847074,3252.6411530119635,3255.6312205343106,3258.611072374843,3261.580760797689,3264.5403377110692,3267.4898546703203,3270.429362880886,3273.3589132012858,3276.278556146042,3279.1883418885864,3282.088320264135,3284.9785407725317,3287.8590525810646,3290.7299045272553,3293.5911451216184,3296.4428225503907,3299.284984678243,3302.117679050953,3304.940952898059,3307.754853135481,3310.5594263681255,3313.3547188924526,3316.140776699029,3318.9176454750445,3321.685370606814,3324.443997182248,3327.193569993302,3329.9341335383997,3332.665732024834,3335.3884093711467,3338.102209209476,3340.807174887892,3343.5033494727068,3346.190775750753,3348.8694962316545,3351.539553150061,3354.2009884678746,3356.8538438764426,3359.4981607987384,3362.133980391514,3364.761343547437,3367.380290897205,3369.990862811643,3372.593099403772,3375.187040530869,3377.7727257964984,3380.3501945525295,3382.9194859011295,3385.4806386967484,3388.0336915480684,3390.578682819951,3393.1156506353545,3395.64463287724,3398.1656671904557,3400.6787909836066,3403.1840414309,3405.6814554739867,3408.171069823767,3410.6529209621995,3413.1270451440732,3415.593478398782,3418.0522565320666,3420.503415127751,3422.946989549458,3425.3830149423115,3427.8115262346164,3430.232558139535,3432.646145156735,3435.0523215740336,3437.451121469015,3439.8425787106444,3442.226726960861,3444.603599676154,3446.9732301091317,3449.3356513100703,3451.690896128452,3454.038997214485,3456.3799870206126,3458.713897803011,3461.0407616230705,3463.360610348859,3465.673475656581,3467.97938903202,3470.2783817719655,3472.5704849856274,3474.855729596043,3477.1341463414633,3479.405765776736,3481.670618274667,3483.9287340273772,3486.1801430476426,3488.4248751702225,3490.6629600531815,3492.894427179193,3495.119305856833,3497.3376252218645,3499.5494142385096,3501.7547017007105,3503.953516233377,3506.145886293627,3508.331840172012,3510.511405993738,3512.684611719866,3514.8514851485147,3517.0120539160384,3519.166345498206,3521.3143872113674,3523.4562062136033,3525.591829505874,3527.7212839331505,3529.8445961855427,3531.961792799412,3534.0729001584787,3536.177944494915,3538.2769518904365,3540.369948277373,3542.4569594397426,3544.5380110143064,3546.61312849162,3548.682337217073,3550.7456623919225,3552.8031290743156,3554.8547621803027,3556.900586484847,3558.940626622814,3560.974907089971,3563.003452243958,3565.026286305266,3567.0434333581957,3569.0549173518207,3571.060762100927,3573.0609912869586,3575.0556284589493,3577.0446970344415,3579.02822030041,3581.006221414164,3582.9787234042556,3584.9457491713642,3586.907321489193,3588.8634630053393,3590.8141962421714,3592.75954359769,3594.6995273463876,3596.6341696400978,3598.563492508838,3600.4875178616458,3602.406267487409,3604.3197630556874,3606.2280261175283,3608.131078106278,3610.028940338379,3611.9216340141725,3613.8091802186823,3615.691599922401,3617.5689139820656,3619.4411431414273,3621.3083080320175,3623.170429173902,3625.0275269764365,3626.879621739011,3628.726733651787,3630.5688827964354,3632.4060891468625,3634.238372569929,3636.06575282617,3637.888249570505,3639.705882352941,3641.5186706192717,3643.3266337117707,3645.129790869883,3646.9281612309023,3648.72176383065,3650.5106176041504,3652.2947413862885,3654.074153912481,3655.848873819327,3657.618919645257,3659.384309831182,3661.1450627211316,3662.9011965628933,3664.6527295086353,3666.3996796155384,3668.1420648464164,3669.879903070327,3671.6132120631883,3673.3420095083793,3675.0663129973473,3676.7861400301995,3678.501508016297,3680.2124342748434,3681.9189360354653,3683.621030438793,3685.318734537032,3687.0120652945348,3688.7010395883644,3690.3856742088565,3692.0659858601725,3693.7419911608567,3695.413706644379,3697.0811487596834,3698.744333871724,3700.403278262001,3702.0579981290925,3703.708509589183,3705.354828676585,3706.9969713442574,3708.6349534643227,3710.268790828578,3711.8984991490015,3713.524094058258,3715.145591110196,3716.7630057803467,3718.376353466414,3719.9856494887626,3721.5909090909095,3723.1921474399937,3724.7893796272656,3726.3826206685535,3727.9718855047363,3729.557189002213,3731.138545953361,3732.7159710770015,3734.289479018853,3735.8590843519855,3737.424801577271,3738.986645123829,3740.5446293494706,3742.0987685411365,3743.6490769153374,3745.1955686185843,3746.7382577278195,3748.277158250846,3749.8122841267455,3751.343649226308,3752.871267352442,3754.395152240593,3755.915317559153,3757.431776909873,3758.944543828264,3760.453631784004,3761.9590541813313,3763.4608243594503,3764.9589555929188,3766.453461092041,3767.9443540032557,3769.431647409524,3770.9153543307084,3772.395487723955,3773.8720604840687,3775.3450854438915,3776.814575374669,3778.280542986425,3779.743000928324,3781.2019617890346,3782.6574380970947,3784.109442321267,3785.5579868708974,3787.0030840962627,3788.4447462889298,3789.8829856820985,3791.3178144509507,3792.7492447129907,3794.177288528389,3795.601957900321,3797.0232647753,3798.4412210435157,3799.855838539164,3801.2671290407734,3802.6751042715373,3804.0797758996337,3805.48115553855,3806.8792547474022,3808.274085031255,3809.6656578414318,3811.053984575836,3812.4390765792537,3813.820945143671,3815.1996015085742,3816.5750568612584,3817.9473223371274,3819.316409019997,3820.682327942392,3822.045090085841,3823.4047063811745,3824.761187708814,3826.114544899062,3827.4647887323945,3828.8119299397404,3830.155979202773,3831.496947154186,3832.834844377979,3834.1696814097327,3835.501468736886,3836.8302167990128,3838.1559359880907,3839.4786366487765,3840.7983290786724,3842.115023528593,3843.4287302028342,3844.73945925943,3846.0472208104234,3847.3520249221183,3848.6538816153416,3849.952800865701,3851.248792603836,3852.541866715674,3853.83203304268,3855.1193013821085,3856.4036814872475,3857.6851830676696,3858.9638157894733,3860.2395892755276,3861.5125131057116,3862.782596817157,3864.0498499044847,3865.3142818200404,3866.5759019741317,3867.8347197352614,3869.0907444303566,3870.3439853450027,3871.5944517236708,3872.842152769942,3874.08709764674,3875.3292954765493,3876.56875534164,3877.805486284289,3879.039497307002,3880.2707973727274,3881.4993954050788,3882.7253002885454,3883.94852086871,3885.1690659524606,3886.3869443082,3887.602164666058,3888.814735718099,3890.0246661185306,3891.2319644839067,3892.4366393933346,3893.638699388677,3894.8381529747544,3896.0350086195463,3897.229274754388,3898.4209597741706,3899.610072037539,3900.7966198670833,3901.980611549537,3903.162055335968,3904.340959441971,3905.517332047855,3906.6911812988374,3907.86251530523,3909.031342142623,3910.197669852075,3911.3615064402934,3912.522859879822,3913.681738109219,3914.838149033239,3915.992100523015,3917.143600416233,3918.292656517314,3919.4392765975854,3920.583468395462,3921.7252396166136,3922.8645979341427,3924.0015509887553,3925.136106388931,3926.268271711092,3927.3980544997744,3928.5254622677935,3929.650502496411,3930.7731826355,3931.89351010371,3933.011492288632,3934.127136546956,3935.2404502046384,3936.351440557058,3937.460114869177,3938.5664803756986,3939.6705442812263,3940.772313760417,3941.8717959581404,3942.968997989631,3944.0639269406392,3945.15658986759,3946.2469937977294,3947.335145729279,3948.4210526315787,3949.504721445246,3950.586159082314,3951.6653724263856,3952.7423683327743,3953.8171536286522,3954.889735113194,3955.9601195577197,3957.028313705838,3958.094324273586,3959.158157949573,3960.219821395117,3961.2793212443853,3962.336664104535,3963.3918565558456,3964.4449051518604,3965.4958164195177,3966.5445968592885,3967.59125294531,3968.6357911255186,3969.6782178217823,3970.7185394300313,3971.7567623203918,3972.7928928373126,3973.826937299696,3974.8589020010263,3975.8887932094967,3976.916617168138,3977.942380094942,3978.966088182989,3979.9877476005718,3981.0073644913195,3982.024944974322,3983.040495144248,3984.054021071472,3985.065528802194,3986.075024358558,3987.0825137387706,3988.088002917224,3989.091497844609,3990.0930044480388,3991.0925286311576,3992.0900762742644,3993.085653234423,3994.0792653455774,3995.07091841867,3996.060618241749,3997.0483705800852,3998.034181176282,3999.018055750386,4000.0],\"bid\":[45000.0,42662.21374045801,40533.272561531456,38586.38743455498,36799.16317991632,35152.73311897106,33631.09048723898,32220.566318926976,30909.41768511862,29687.500000000004,28546.004029550037,27477.243172951887,26474.480151228734,25531.784841075798,24643.91691394659,23806.228373702423,23014.582164890635,22265.283842794764,21555.02392344498,20880.82901554404,20240.020212228403,19630.177514792897,19049.10929224844,18494.825964252115,17965.517241379308,17459.53237410072,16975.36295644523,16511.627906976748,16067.060312104599,15640.495867768594,15230.86269744836,14837.172359015094,14458.51188157382,14094.036697247708,13742.964352720453,13404.568901989687,13078.175895765473,12763.157894736843,12458.930443900734,12164.948453608247,11880.702940182495,11605.718085106384,11339.548577036312,11081.777205408887,10832.012678288433,10589.88764044944,10355.056870581004,10127.195639006666,9905.998209489706,9691.176470588234,9482.458683676428,9279.58833619211,9082.323089935158,8890.433815350392,8703.703703703704,8521.927449918787,8344.910499599251,8172.4683544303825,8004.425930747203,7840.6169665809775,7680.883472962681,7525.075225677031,7373.04929403022,7224.669603524232,7079.8065296251525,6938.336520076482,6800.141743444366,6665.1097617935575,6533.1332255830075,6404.109589041096,6277.940844434411,6154.5332737829385,6033.797216699803,5915.6468531468545,5800.000000000001,5686.777920410786,5575.905145034936,5467.309304274939,5360.920970752956,5256.673511293635,5154.50294775361,5054.347826086958,4956.149093083517,4859.849980260561,4765.395894428153,4672.7343144848965,4581.814694034147,4492.588369441277,4405.008472980606,4319.0298507462685,4234.608985024959,4151.703920850129,4070.2741964772117,3990.280777537797,3911.6859946476366,3834.453484258933,3758.5481325618107,3683.9360222531304,3610.5843820031037,3538.4615384615404,3467.536870656045,3397.7807666442504,3329.1645822911455,3261.6606020509444,3195.24200164069,3129.882812500001,3065.557887937994,3002.2428708747193,2939.9141630901295,2878.5488958990545,2818.124902175615,2758.6206896551726,2700.0154154462775,2642.2888616891073,2585.4214123006836,2529.3940307506778,2474.188238814904,2419.786096256685,2366.1701813891755,2313.3235724743786,2261.22982991714,2209.872979214781,2159.237494625198,2109.308283518361,2060.0706713780924,2011.5103874227968,1963.6135508155594,1916.3666574356141,1869.7565671847071,1823.7704918032794,1778.3959831727514,1733.6209220814235,1689.433507432704,1645.8222458754667,1602.7759418374098,1560.2836879432637,1518.3348558006005,1476.9190871369299,1436.026285272516,1395.6466069142125,1355.7704542562676,1316.3884673748105,1277.4915169033563,1239.0706969772668,1201.117318435756,1163.6229022704847,1126.579173310438,1089.9780541331372,1053.811659192825,1018.0722891566274,982.7524254401732,947.8447249345079,913.3420149165372,879.2372881355936,845.5236980690472,812.1945543402387,779.2433182922598,746.6635987114589,714.4491476947712,682.5938566552902,651.0917524606863,619.9369936993704,589.1238670694866,558.6467838860453,528.5002767017155,498.6789960369886,469.17770721559225,439.9912873012424,411.1147221319467,382.54310344827627,354.2716261121248,326.2955854126681,298.6103744563495,271.2114816378219,244.09448818897727,217.25506580321797,190.68897433232922,164.3920595533499,138.36025100298355,112.58955987717533,87.07607699358411,61.81597081475476,36.80548552989826,12.040939193257438,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],\"mid\":[0.06319999999999999,0.06955184694203713,0.07620778816854892,0.08316782367953539,0.0904319534749965,0.09800017755493232,0.10587249591934277,0.11404890856822789,0.12252941550158768,0.1313140167194221,0.14040271222173123,0.149795502008515,0.15949238607977348,0.16949336443550655,0.17979843707571436,0.19040760400039677,0.2013208652095539,0.21253822070318565,0.22405967048129208,0.23588521454387323,0.24801485289092892,0.2604485855224594,0.2731864124384644,0.28622833363894423,0.29957434912389874,0.31322445889332773,0.3271786629472314,0.3414369612856099,0.355999353908463,0.3708658408157908,0.3860364220075932,0.4015110974838702,0.41728986724462197,0.43337273128984843,0.4497596896195494,0.46645074223372507,0.4834458891323755,0.5007451303155007,0.5183484657831006,0.5362558955351748,0.5544674195717237,0.5729830378927475,0.5918027504982459,0.610926557388219,0.6303544585626668,0.650086454021589,0.6701225437649861,0.6904627277928578,0.7111070061052043,0.7320553787020254,0.753307845583321,0.7748644067490914,0.7967250621993363,0.8188898119340561,0.8413586559532504,0.8641315942569195,0.8872086268450634,0.9105897537176815,0.9342749748747746,0.9582642903163422,0.9825577000423846,1.0071552040529017,1.0320568023478933,1.0572624949273595,1.0827722817913008,1.1085861629397165,1.134704138372607,1.1611262080899716,1.1878523720918113,1.214882630378126,1.2422169829489145,1.2698554298041786,1.2977979709439167,1.3260446063681297,1.3545953360768175,1.3834501600699793,1.412609078347617,1.4420720909097284,1.4718391977563148,1.5019103988873759,1.532285694302911,1.562965084002922,1.5939485679874066,1.6252361462563663,1.656827818809801,1.6887235856477094,1.7209234467700931,1.7534274021769516,1.7862354518682848,1.8193475958440926,1.8527638341043742,1.8864841666491314,1.920508593478363,1.9548371145920695,1.9894697299902502,2.0244064396729056,2.059647243640036,2.095192141891641,2.131041134427721,2.1671942212482747,2.203651402353304,2.2404126777428077,2.2774780474167864,2.3148475113752385,2.352521069618166,2.3904987221455687,2.428780468957446,2.467366310053798,2.5062562454346233,2.5454502750999244,2.5849483990497,2.6247506172839508,2.6648569298026756,2.705267336605875,2.745981837693549,2.7870004330656983,2.828323122722322,2.8699499066634195,2.911880784888993,2.95411575739904,2.996654824193563,3.0394979852725594,3.082645240636031,3.126096590283977,3.1698520342163983,3.213911572433294,3.2582752049346637,3.3029429317205086,3.347914752790828,3.393190668145623,3.4387706777848916,3.484654781708635,3.5308429799168537,3.577335272409546,3.624131659186714,3.6712321402483554,3.718636715594473,3.766345385225064,3.8143581491401313,3.862675007339672,3.9112959598236867,3.9602210065921772,4.0094501476451425,4.058983382982582,4.108820712604495,4.158962136510884,4.2094076547017485,4.260157267177088,4.3112109739369,4.362568774981186,4.414230670309948,4.466196659923186,4.518466743820899,4.5710409220030845,4.623919194469744,4.677101561220879,4.73058802225649,4.784378577576576,4.838473227181136,4.892871971070169,4.947574809243677,5.002581741701661,5.057892768444121,5.113507889471053,5.16942710478246,5.225650414378341,5.282177818258699,5.33900931642353,5.396144908872837,5.453584595606617,5.5113283766248715,5.569376251927602,5.627728221514807,5.686384285386488,5.745344443542641,5.804608695983269,5.8641770427083735,5.924049483717951,5.984226019012005,6.044706648590532,6.105491372453534,6.166580190601011,6.227973103032962,6.2896701097493874,6.35167121075029,6.4139764060356645,6.4765856956055154,6.539499079459839,6.602716557598638,6.666238130021914,6.730063796729661,6.794193557721886,6.858627412998583,6.923365362559755,6.988407406405404,7.0537535445355255,7.119403776950124,7.185358103649194,7.251616524632739,7.318179039900762,7.385045649453256,7.452216353290227,7.5196911514116715,7.58747004381759,7.655553030507985,7.723940111482853,7.792631286742195,7.861626556286016,7.930925920114308,8.000529378227077,8.070436930624316,8.140648577306033,8.211164318272226,8.281984153522892,8.353108083058032,8.424536106877648,8.496268224981737,8.568304437370303,8.640644744043342,8.713289145000857,8.786237640242845,8.859490229769307,8.933046913580247,9.006907691675657,9.081072564055546,9.155541530719908,9.230314591668744,9.305391746902057,9.380772996419843,9.4564583402221,9.532447778308839,9.608741310680047,9.685338937335734,9.762240658275893,9.839446473500525,9.916956383009635,9.994770386803218,10.072888484881279,10.15131067724381,10.230036963890814,10.3090673448223,10.388401820038254,10.46804038953869,10.547983053323593,10.628229811392973,10.70878066374683,10.78963561038516,10.870794651307962,10.952257786515244,11.034025016006996,11.116096339783226,11.198471757843928,11.281151270189106,11.364134876818762,11.447422577732885,11.53101437293149,11.614910262414565,11.699110246182114,11.783614324234144,11.868422496570643,11.95353476319162,12.038951124097068,12.124671579286993,12.210696128761393,12.297024772520265,12.383657510563618,12.47059434289144,12.557835269503734,12.64538029040051,12.733229405581756,12.821382615047476,12.909839918797676,12.998601316832346,13.087666809151495,13.177036395755112,13.266710076643207,13.35668785181578,13.446969721272824,13.537555685014345,13.628445743040336,13.719639895350804,13.811138141945749,13.902940482825166,13.99504691798906,14.087457447437426,14.180172071170267,14.273190789187586,14.366513601489373,14.46014050807564,14.554071508946384,14.648306604101597,14.742845793541289,14.83768907726545,14.93283645527409,15.028287927567206,15.124043494144793,15.220103155006857,15.316466910153395,15.413134759584405,15.510106703299895,15.607382741299856,15.704962873584295,15.802847100153205,15.90103542100659,15.999527836144452,16.098324345566784,16.1974249492736,16.296829647264882,16.396538439540638,16.496551326100874,16.59686830694558,16.697489382074764,16.798414551488424,16.899643815186554,17.001177173169168,17.10301462543625,17.205156171987802,17.307601812823833,17.410351547944337,17.513405377349315,17.616763301038773,17.7204253190127,17.82439143127111,17.92866163781399,18.033235938641347,18.138114333753173,18.243296823149475,18.348783406830254,18.454574084795503,18.56066885704523,18.66706772357943,18.773770684398105,18.880777739501262,18.988088888888885,19.095704132560986,19.20362347051756,19.311846902758614,19.420374429284138,19.529206050094135,19.638341765188606,19.747781574567554,19.857525478230983,19.96757347617888,20.077925568411253,20.188581754928098,20.29954203572942,20.410806410815223,20.522374880185488,20.634247443840234,20.746424101779454,20.858904854003146,20.971689700511323,21.084778641303966,21.198171676381083,21.311868805742677,21.425870029388744,21.54017534731929,21.65478475953431,21.7696982660338,21.884915866817767,22.000437561886205,22.11626335123913,22.23239323487652,22.34882721279838,22.465565285004722,22.582607451495534,22.699953712270823,22.817604067330592,22.93555851667483,23.053817060303544,23.17237969821673,23.29124643041439,23.410417256896537,23.529892177663147,23.649671192714234,23.769754302049794,23.890141505669828,24.010832803574345,24.13182819576333,24.253127682236787,24.37473126299472,24.49663893803713,24.61885070736402,24.741366570975377,24.86418652887121,24.987310581051517,25.1107387275163,25.234470968265562,25.358507303299294,25.4828477326175,25.60749225622018,25.732440874107336,25.857693586278973,25.98325039273508,26.109111293475657,26.23527628850071,26.361745377810237,26.48851856140425,26.615595839282726,26.742977211445677,26.870662677893105,26.998652238625006,27.12694589364139,27.255543642942243,27.384445486527568,27.513651424397366,27.64316145655164,27.77297558299039,27.903093803713624,28.033516118721323,28.164242528013496,28.295273031590142,28.426607629451265,28.558246321596872,28.690189108026946,28.822435988741493,28.95498696374051,29.087842033024007,29.22100119659199,29.354464454444436,29.48823180658135,29.622303253002745,29.756678793708613,29.891358428698968,30.02634215797379,30.16162998153308,30.297221899376847,30.433117911505093,30.56931801791782,30.70582221861501,30.842630513596678,30.979742902862817,31.11715938641343,31.254879964248534,31.3929046363681,31.531233402772138,31.669866263460655,31.808803218433642,31.948044267691117,32.087589411233054,32.227438649059465,32.36759198117036,32.508049407565714,32.64881092824556,32.78987654320988,32.931246252458656,33.07292005599192,33.21489795380966,33.35717994591188,33.49976603229856,33.642656212969726,33.78585048792536,33.92934885716547,34.07315132069005,34.21725787849912,34.36166853059265,34.50638327697066,34.65140211763314,34.7967250525801,34.94235208181154,35.08828320532744,35.234518423127824,35.381057735212686,35.527901141582014,35.67504864223583,35.822500237174104,35.97025592639686,36.118315709904095,36.2666795876958,36.41534755977199,36.56431962613264,36.713595786777766,36.86317604170737,37.013060390921446,37.16324883442001,37.31374137220303,37.46453800427054,37.61563873062251,37.76704355125896,37.918752466179896,38.07076547538529,38.22308257887517,38.37570377664952,38.52862906870834,38.68185845505165,38.835391935679425,38.98922951059167,39.14337117978839,39.29781694326959,39.45256680103527,39.60762075308542,39.76297879942004,39.91864094003913,40.0746071749427,40.230877504130746,40.38745192760328,40.544330445360266,40.70151305740174,40.85899976372769,41.016790564338095,41.17488545923301,41.33328444841237,41.49198753187621,41.65099470962453,41.81030598165732,41.9699213479746,42.12984080857634,42.290064363462555,42.45059201263325,42.611423756088406,42.77255959382806,42.93399952585217,43.09574355216076,43.257791672753825,43.42014388763136,43.58280019679339,43.74576060023988,43.90902509797084,44.07259368998628,44.23646637628619,44.400643156870586,44.565124031739444,44.72990900089278,44.89499806433059,45.06039122205288,45.226088474059644,45.39208982035088,45.55839526092659,45.72500479578677,45.89191842493143,46.05913614836058,46.22665796607418,46.394483878072265,46.56261388435482,46.73104798492185,46.89978617977335,47.06882846890935,47.238174852329806,47.40782533003473,47.57777990202413,47.74803856829802,47.91860132885639,48.08946818369921,48.26063913282651,48.43211417623829,48.60389331393455,48.775976545915285,48.94836387218049,49.12105529273016,49.29405080756431,49.46735041668293,49.64095412008605,49.814861917773634,49.989073809745676,50.1635897960022,50.3384098765432,50.51353405136869,50.68896232047864,50.864694683873054,51.04073114155195,51.21707169351532,51.39371633976319,51.570665080295505,51.7479179151123,51.925474844213575,52.10333586759931,52.28150098526956,52.45997019722425,52.63874350346342,52.81782090398706,52.99720239879519,53.17688798788779,53.356877671264854,53.5371714489264,53.717769320872414,53.89867128710291,54.07987734761788,54.26138750241733,54.44320175150124,54.625320094869636,54.807742532522504,54.990469064459845,55.17349969068167,55.35683441118796,55.54047322597872,55.724416135053964,55.90866313841368,56.093214236057875,56.278069427986544,56.46322871419968,56.648692094697296,56.83445956947937,57.020531138545955,57.206906801896984,57.3935865595325,57.580570411452484,57.76785835765694,57.9554503981459,58.1433465329193,58.33154676197719,58.520051085319544,58.70885950294638,58.8979720148577,59.087388621053485,59.27710932153374,59.467134116298475,59.65746300534768,59.848095988681365,60.039033066299524,60.23027423820216,60.42181950438926,60.61366886486084,60.805822319616915,60.99827986865744,61.19104151198245,61.38410724959192,61.577477081485874,61.771151007664315,61.96512902812722,62.1594111428746,62.35399735190645,62.54888765522278,62.74408205282358,62.93958054470887,63.13538313087862,63.331489811332844,63.527900586071546,63.72461545509472,63.921634418402384,64.1189574759945,64.31658462787111,64.51451587403217,64.71275121447773,64.91129064920776,65.11013417822227,65.30928180152124,65.50873351910468,65.7084893309726,65.90854923712502,66.10891323756188,66.30958133228322,66.51055352128904,66.71182980457934,66.91341018215412,67.11529465401337,67.31748322015709,67.51997588058528,67.72277263529794,67.92587348429512,68.12927842757674,68.33298746514284,68.5370005969934,68.74131782312843,68.94593914354795,69.15086455825194,69.3560940672404,69.56162767051335,69.76746536807076,69.97360715991265,70.180053046039,70.38680302644985,70.59385710114516,70.80121527012496,71.00887753338922,71.21684389093798,71.4251143427712,71.63368888888887,71.84256752929105,72.05175026397768,72.26123709294879,72.47102801620437,72.68112303374446,72.891522145569,73.102225351678,73.31323265207149,73.52454404674945,73.73615953571188,73.94807911895879,74.16030279649017,74.37283056830601,74.58566243440636,74.79879839479119,75.01223844946048,75.22598259841423,75.44003084165246,75.65438317917517,75.86903961098234,76.084000137074,76.29926475745012,76.51483347211074,76.7307062810558,76.94688318428535,77.16336418179942,77.38014927359792,77.5972384596809,77.81463174004836,78.03232911470027,78.25033058363668,78.46863614685755,78.6872458043629,78.90615955615273,79.12537740222703,79.34489934258583,79.56472537722908,79.7848555061568,80.005289729369,80.22602804686568,80.44707045864682,80.66841696471243,80.89006756506255,81.11202225969711,81.33428104861616,81.55684393181971,81.77971090930771,82.00288198108018,82.22635714713712,82.45013640747854,82.67421976210444,82.8986072110148,83.12329875420966,83.34829439168897,83.57359412345276,83.79919794950105,84.0251058698338,84.25131788445101,84.4778339933527,84.70465419653888,84.93177849400952,85.15920688576463,85.38693937180422,85.61497595212828,85.84331662673682,86.07196139562984,86.30091025880736,86.53016321626932,86.75972026801577,86.98958141404668,87.21974665436205,87.45021598896193,87.68098941784626,87.91206694101507,88.14344855846835,88.37513427020612,88.60712407622839,88.8394179765351,89.07201597112628,89.30491806000194,89.53812424316207,89.77163452060668,90.00544889233576,90.23956735834932,90.47398991864735,90.70871657322986,90.94374732209688,91.17908216524833,91.41472110268425,91.65066413440466,91.88691126040955,92.1234624806989,92.36031779527273,92.59747720413104,92.83494070727382,93.07270830470108,93.31077999641283,93.54915578240904,93.78783566268972,94.02681963725487,94.2661077061045,94.5056998692386,94.74559612665716,94.98579647836021,95.22630092434774,95.46710946461975,95.70822209917623,95.94963882801721,96.19135965114263,96.43338456855254,96.6757135802469,96.91834668622575,97.16128388648907,97.40452518103687,97.64807056986915,97.8919200529859,98.13607363038712,98.38053130207285,98.62529306804302,98.87035892829766,99.11572888283679,99.36140293166038,99.60738107476844,99.85366331216099,100.10024964383801,100.3471400697995,100.59433459004548,100.84183320457595,101.08963591339086,101.33774271649027,101.58615361387412,101.83486860554247,102.08388769149528,102.33321087173259,102.58283814625433,102.83276951506058,103.0830049781513,103.33354453552651,103.58438818718619,103.83553593313033,104.08698777335894,104.33874370787203,104.5908037366696,104.84316785975163,105.09583607711814,105.34880838876913,105.60208479470458,105.85566529492452,106.10954988942898,106.36373857821786,106.61823136129121,106.87302823864906,107.12812921029136,107.38353427621814,107.6392434364294,107.89525669092514,108.15157403970534,108.40819548277003,108.66512102011922,108.92235065175286,109.17988437767096,109.43772219787354,109.6958641123606,109.95431012113212,110.21306022418814,110.47211442152862,110.73147271315356,110.99113509906299,111.25110157925694,111.51137215373532,111.77194682249818,112.0328255855455,112.2940084428773,112.55549539449358,112.81728644039434,113.07938158057955,113.34178081504926,113.60448414380343,113.86749156684212,114.13080308416525,114.39441869577286,114.65833840166492,114.92256220184147,115.1870900963025,115.45192208504798,115.71705816807795,115.98249834539241,116.24824261699133,116.51429098287473,116.78064344304265,117.04729999749499,117.31426064623182,117.58152538925312,117.84909422655888,118.11696715814912,118.38514418402384,118.65362530418304,118.9224105186267,119.19149982735485,119.4608932303675,119.7305907276646,120.00059231924617,120.2708980051122,120.54150778526274,120.81242165969772,121.08363962841719,121.35516169142112,121.62698784870953,121.89911810028244,122.17155244613983,122.44429088628166,122.717333420708,122.99068004941878,123.26433077241404,123.53828558969379,123.81254450125799,124.08710750710668,124.36197460723983,124.63714580165747,124.91262109035964,125.1884004733462,125.46448395061729,125.74087152217281,126.01756318801283,126.29455894813731,126.57185880254627,126.8494627512397,127.12737079421761,127.40558293147998,127.6840991630269,127.96291948885822,128.24204390897404,128.52147242337432,128.80120503205907,129.0812417350283,129.361582532282,129.6422274238202,129.92317640964285,130.20442948975,130.4859866641416,130.76784793281772,131.05001329577826,131.3324827530233,131.6152563045528,131.89833395036675,132.18171569046524,132.46540152484815,132.74939145351556,133.0336854764674,133.31828359370377,133.60318580522465,133.88839211102996,134.1739025111197,134.45971700549396,134.7458355941527,135.0322582770959,135.31898505432358,135.60601592583572,135.89335089163234,136.18098995171343,136.46893310607905,136.75718035472912,137.04573169766363,137.33458713488264,137.62374666638607,137.91321029217406,138.20297801224646,138.49304982660337,138.78342573524472,139.07410573817057,139.36508983538093,139.65637802687573,139.94797031265497,140.23986669271875,140.53206716706697,140.82457173569966,141.1173803986168,141.41049315581847,141.7039100073046,141.99763095307517,142.29165599313023,142.58598512746983,142.88061835609383,143.17555567900231,143.47079709619527,143.76634260767273,144.06219221343463,144.358345913481,144.6548037078119,144.95156559642723,145.24863157932705,145.54600165651135,145.84367582798015,146.14165409373337,146.43993645377108,146.73852290809327,147.03741345669994,147.33660809959107,147.63610683676666,147.93590966822674,148.2360165939713,148.5364276140004,148.8371427283139,149.13816193691187,149.43948523979432,149.74111263696128,150.04304412841267,150.34527971414857,150.6478193941689,150.95066316847374,151.25381103706306,151.55726299993688,151.86101905709515,152.16507920853786,152.46944345426508,152.77411179427676,153.0790842285729,153.38436075715353,153.68994138001864,153.99582609716822,154.30201490860225,154.60850781432077,154.91530481432383,155.2224059086113,155.52981109718326,155.83752038003968,156.1455337571806,156.45385122860594,156.7624727943158,157.07139845431013,157.38062820858894,157.6901620571522,158.0]},\"selected\":{\"id\":\"2780\"},\"selection_policy\":{\"id\":\"2779\"}},\"id\":\"2761\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"below\":[{\"id\":\"2739\"}],\"center\":[{\"id\":\"2742\"},{\"id\":\"2746\"},{\"id\":\"2782\"}],\"left\":[{\"id\":\"2743\"}],\"renderers\":[{\"id\":\"2770\"},{\"id\":\"2788\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"2729\"},\"toolbar\":{\"id\":\"2754\"},\"width\":900,\"x_range\":{\"id\":\"2731\"},\"x_scale\":{\"id\":\"2735\"},\"y_range\":{\"id\":\"2733\"},\"y_scale\":{\"id\":\"2737\"}},\"id\":\"2728\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"red\",\"line_width\":20,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2603\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":0.2,\"fill_color\":\"red\",\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2764\"}},\"y2\":{\"expr\":{\"id\":\"2765\"}}},\"id\":\"2787\",\"type\":\"VArea\"},{\"attributes\":{},\"id\":\"2735\",\"type\":\"LinearScale\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"red\",\"line_width\":20,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2602\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":0.4,\"fill_color\":\"red\",\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2764\"}},\"y2\":{\"expr\":{\"id\":\"2765\"}}},\"id\":\"2785\",\"type\":\"VArea\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Constant Product AMM Depth for the pair UNI/USDT\"},\"id\":\"2729\",\"type\":\"Title\"},{\"attributes\":{\"source\":{\"id\":\"2606\"}},\"id\":\"2611\",\"type\":\"CDSView\"},{\"attributes\":{\"axis_label\":\"Order Size\",\"coordinates\":null,\"formatter\":{\"id\":\"2774\"},\"group\":null,\"major_label_policy\":{\"id\":\"2775\"},\"ticker\":{\"id\":\"2744\"}},\"id\":\"2743\",\"type\":\"LinearAxis\"},{\"attributes\":{\"label\":{\"value\":\"Ask\"},\"renderers\":[{\"id\":\"2788\"}]},\"id\":\"2800\",\"type\":\"LegendItem\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2609\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2740\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"2739\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2742\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"names\":[\"5828833226412872436\"],\"tooltips\":[[\"UNI\",\"5244.044\"],[\"USDT\",\"754.322\"],[\"Swap Execution Price\",\"6.952\"]]},\"id\":\"2628\",\"type\":\"HoverTool\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"red\",\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2764\"}},\"y2\":{\"expr\":{\"id\":\"2765\"}}},\"id\":\"2786\",\"type\":\"VArea\"},{\"attributes\":{},\"id\":\"2737\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2631\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2752\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis_label\":\"UNI/USDT Mid Price\",\"coordinates\":null,\"formatter\":{\"id\":\"2777\"},\"group\":null,\"major_label_policy\":{\"id\":\"2778\"},\"ticker\":{\"id\":\"2740\"}},\"id\":\"2739\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2608\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2761\"},\"glyph\":{\"id\":\"2785\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2787\"},\"name\":\"ask\",\"nonselection_glyph\":{\"id\":\"2786\"},\"view\":{\"id\":\"2789\"}},\"id\":\"2788\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"2743\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2746\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2744\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"2761\"}},\"id\":\"2789\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2624\",\"type\":\"Selection\"},{\"attributes\":{\"children\":[{\"id\":\"2656\"},{\"id\":\"2728\"}],\"sizing_mode\":\"stretch_both\"},\"id\":\"2802\",\"type\":\"Row\"},{\"attributes\":{},\"id\":\"2570\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2748\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"2623\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2463\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2747\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"2753\"}},\"id\":\"2749\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2571\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2750\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2751\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2499\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2500\",\"type\":\"AllLabels\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2753\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2502\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":0.2,\"fill_color\":\"green\",\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"green\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2762\"}},\"y2\":{\"expr\":{\"id\":\"2763\"}}},\"id\":\"2769\",\"type\":\"VArea\"},{\"attributes\":{},\"id\":\"2503\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2573\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"label\":{\"value\":\"Bid\"},\"renderers\":[{\"id\":\"2770\"}]},\"id\":\"2783\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2625\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]},\"y\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]}},\"selected\":{\"id\":\"2505\"},\"selection_policy\":{\"id\":\"2504\"}},\"id\":\"2491\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2705\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fields\":[\"bid\"]},\"id\":\"2764\",\"type\":\"Stack\"},{\"attributes\":{},\"id\":\"2626\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2574\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]},\"y\":{\"__ndarray__\":\"n4GodGTnvkD/6OlQfXW9QKfPWLmhJLxA2VTnjZTwukACZxOpytW5QFAFktJH0bhAgHxRqoPgt0CLwlWCVAG3QPot6LDeMbZA7RmISodwtUAELcx66bu0QLq8kubNErRAgYHVpiN0s0BNCnSG+t6yQOnHNkF+UrJAQEYpkfLNsUCl2pnir1CxQPxli48g2rBA5Frmib5psEBi4HTBIv6vQDfmkCFZM69A5F8xJ1xyrkDrLpNFerqtQFa0U04SC61ApNRrmZFjrEDY75BrcsOrQMpNkZE6KqtAiW/YKHqXqkDJ9pKOygqqQC63+G/Ng6lA+gUi9ysCqUDs5IQQloWoQBymzsXBDahAZwdNq2qap0A9O4NdUSunQNCo3ww7wKZAk2jRFfFYpkC7GLujQPWlQI+WdV36lKVAYRRCGvI3pUBQPTGe/t2kQMi2JV35hqRAljm0Q74ypEDmbzuFK+GjQOFfom4hkqNACe89PYJFo0AzZm35MfuiQMksi1QWs6JAKoDaiRZtokDa+iRCGymiQHeEw3kO56FA0+3VaNumoUABM3NtbmihQJ5Aove0K6FADUfwdp3woEAzNX5JF7egQOP5YqwSf6BA9bhDrYBIoEA6RgYdUxOgQHwFCgf5vp9AR2VbKOBZn0AfLO5GQ/eeQMALNjoLl55AMCoJ9iE5nkB1kMZ5ct2dQBa0q8Dog51Ax4tAs3EsnUBw38MZ+9acQJCIg49zg5xAGykOd8oxnEBhgS3v7+GbQAwHmsjUk5tAE7RZfGpHm0DoN70io/yaQCfM72pxs5pAu+kOk8hrmkBlAMBgnCWaQBUiOxrh4JlAuU/Cf4udmUAYwX3FkFuZQAIdto3mGplAeiVm44LbmEBf3R01XJ2YQDCjMVBpYJhANCkwXKEkmEDhlZrW++mXQDFy2o5wsJdApF5xovd3l0CS0155iUCXQI93uMIeCpdAm9ZxcbDUlkDsf1C5N6CWQGvGCQyubJZAwZGHFg06lkAS3FG+TgiWQMqiGh9t15VAFThqiGKnlUC8Bmp7KXiVQI77y6i8SZVAVObM7hYclUDlQFBXM++UQHXlExYNw5RAmlX6hp+XlEBTSmos5myUQHJawq3cQpRATpjf1X4ZlEDZGbaRyPCTQAhv+u61yJNATRrbGkOhk0BcLclgbHqTQDE6TykuVJNA3tT1+IQuk0B97jRvbQmTQLlccUXk5JJAhusFTubAkkBeYFdzcJ2SQCXf8rZ/epJAWSm2MBFYkkD2NwEOIjaSQMm38JCvFJJAyPagD7fzkUB613jzNdORQGRlfLgps5FAOqum7I+TkUCncEovZnSRQK+KeTCqVZFAHW5ysFk3kUDztxN/chmRQN1jVXvy+5BAiGzHktfekEBTlRXBH8KQQEcgkA/JpZBAdDa5lNGJkEDMy9ZzN26QQHrKiNz4UpBAX1RjChQ4kEDV64xEhx2QQFlXYN1QA5BAoCskZN7Sj0DgdrJUwZ+PQDEiN3BHbY9ABaQ5rm07j0CdymEZMQqPQHvl4c6O2Y5A3mbm/YOpjkALwgrnDXqOQPxN09spS45At/YrPtUcjkAuiut/De+NQNxvWyLQwY1AvZzDtRqVjUBHl/rY6miNQDVh+Tg+PY1A0B5zkBISjUBJVXCnZeeMQISb7VI1vYxAP5p9dH+TjEAnOu75QWqMQPLf8Nx6QYxA7pfFIigZjEDrE+nbR/GLQJZfxSPYyYtAoDBlINeii0AxuSkCQ3yLQEfkggMaVotAr+SpaFowi0A+AF5/AguLQPGBo54Q5opAbr6EJoPBikBbF9V/WJ2KQLrq9RuPeYpASVyddCVWikC3554LGjOKQAartWprEIpAaVlQIxjuiUA6x17OHsyJQKEAIQx+qolA0dz3gzSJiUBpADfkQGiJQDRC+OGhR4lAwGXwOFYniUAHIEWrXAeJQLpaZAG054hAJqvcCVvIiEA98jaZUKmIQKQb0YmTiohA8fG5uyJsiEDc/o0U/U2IQE5uVX8hMIhAtOti7I4SiEA7cTNRRPWHQOcAT6hA2IdA+T8q8YK7h0D47AgwCp+HQHgp4W3VgodAlZA/uONmh0CSEywhNEuHQDmWD7/FL4dA0kSarJcUh0DOnaoIqfmGQG4pNfb43oZA1dksnIbEhkBYDmwlUaqGQNM0nsBXkIZAHQQqoJl2hkDjShz6FV2GQEZOEwjMQ4ZA07MqB7sqhkCc8uc34hGGQDZHJ95A+YVAxSYJQdbghUAhLeCqociFQG6CH2misIVAk7RJzNeYhUAKAeAnQYGFQMcLUtLdaYVA7f/tJK1ShUA2F9F7rjuFQAuF2DXhJIVAYcKStEQOhUCLNzFc2PeEQEBBepOb4YRAQI67w43LhEAG07xYrrWEQAHRssD8n4RAEa8ybHiKhEDZoCXOIHWEQMLavFv1X4RAetBljPVKhEDZu77ZIDaEQChqi792IYRA3k2qu/YMhEDN0glOoPiDQBvznfhy5INABgtWP27Qg0Dr6RKokbyDQM4enbrcqINAtn6bAE+Vg0B244kF6IGDQCshsFanboNAHDEZg4xbg0CGkIobl0iDQNvRe7LGNYNAQ18O3Bojg0DqbAUukxCDQPUZvj8v/oJA3L4nqu7rgkDsZ7wH0dmCQN16efTVx4JAVobYDf21gkBAOsjyRaSCQO2HpUOwkoJA+ug0ojuBgkD+y5ux52+CQAUmWha0XoJA5CdEdqBNgkCVFnx4rDyCQJdFbMXXK4JAjTLBBiIbgkBLwWPnigqCQGiXcxMS+oFAqpZBOLfpgUB1dUoEetmBQId0MSdayYFARDG7UVe5gUDkk8g1camBQNPYUYanmYFAkrRh9/mJgUB8kRA+aHqBQNjmfxDyaoFAgajVJZdbgUCizjc2V0yBQPj0x/oxPYFA7RCfLScugUAlPsmJNh+BQNKgQctfEIFAb13urqIBgUBBpZzy/vKAQDLX/FR05IBAjrSelQLWgEAeqe10qceAQEAmLbRouYBAehB1FUCrgEAkP65bL52AQMINj0o2j4BAnP6XplSBgEAzbhA1inOAQD1XA7zWZYBArCY8AjpYgECFn0PPs0qAQBLOXOtDPYBAHAqCH+ovgEDoB2I1piKAQIL3XPd3FYBALLKBMF8IgEDz6hVZt/Z/QNJXuW/a3H9AOYUCPyfDf0DiF05inal/QEtdO3Y8kH9Aq0KnGAR3f0DlY6fo811/QB0yhYYLRX9AOzG5k0osf0ASTOaysBN/QIM+1Yc9+35ANhVwt/DifkB8wr3nycp+QMzH3b/Isn5AhfMD6OyafkB/MnQJNoN+QPB0fs6ja35AWaZ64jVUfkD/t8Tx6zx+QJG9uKnFJX5ApxuvuMIOfkCgx/jN4vd9QKSY25kl4X1AVKmOzYrKfUDeyTYbErR9QBgC4zW7nX1AWCOJ0YWHfUCkaQKjcXF9QAUsCGB+W31Ai5swv6tFfUDekOt3+S99QOxnf0JnGn1AhekF2PQEfUCPQmnyoe98QJMIYUxu2nxAXktvoVnFfEBss92tY7B8QOusui6Mm3xACZ/W4dKGfEBNL8GFN3J8QMyQxtm5XXxA9t7snVlJfEDDg/GSFjV8QPqoRnrwIHxAdbQQFucMfEAUzyMp+vh7QDd2AXcp5XtAhBfWw3TRe0DItnbU2717QMOdXm5eqntAshWtV/yWe0BaKiNXtYN7QHp2ITSJcHtAWvmltndde0Bx9UmngEp7QMvXP8+jN3tAKihR+OAke0CngdzsNxJ7QJuT03eo/3pA0Sq5ZDLtekCvQp9/1dp6QEoeJZWRyHpAO2l1cma2ekABYETlU6R6QOj/zbtZknpANj7UxHeAekCJRp3PrW56QFLA8av7XHpAIxsbKmFLekDf4eEa3jl6QJIUjE9yKHpA0YjbmR0XekCPUAzM3wV6QEgn07i49HlAWOVbM6jjeUBv+UcPrtJ5QAXorCDKwXlAqNASPPyweUAc+XI2RKB5QBleNuWhj3lApUk0HhV/eUDm7rC3nW55QFILXIg7XnlAMI1PZ+5NeUA6Pw4stj15QGV5gq6SLXlArtb8xoMdeUDG7zJOiQ15QKUaPh2j/XhA0C6aDdHteEBTTiT5Et54QFKzGbpoznhAG4IWK9K+eECsnxQnT694QIyMaonfn3hA+UPKLYOQeEBCH0DwOYF4QE29Ma0DcnhAK+5cQeBieECuotaJz1N4QOvfCWTRRHhAoba2reU1eEBmPvFEDCd4QJ2UIAhFGHhAB9/91Y8JeEAHUpON7Pp3QGM6Ow5b7HdAkAqfN9vdd0Bra7bpbM93QE5QxgQQwXdAgg5gacSyd0Dzd2D4iaR3QBn57pJglndAErp8GkiId0DWwsNwQHp3QHcixndJbHdAbRnNEWNed0DTRmghjVB3QJLYbInHQndAbr70LBI1d0Db313vbCd3QKZUSbTXGXdAUaCaX1IMd0An8HbV3P52QPNbRPp28XZAUCmpsiDkdkCJEYvj2dZ2QAeKDnKiyXZAMQ+WQ3q8dkDIccE9Ya92QKImbUZXonZAxJixQ1yVdkDbfeIbcIh2QPcsjrWSe3ZAjfd898NudkCshLDIA2J2QG4uYxBSVXZAhmEHtq5IdkD0/kahGTx2QNK/ArqSL3ZAJptR6BkjdkDCLYAUrxZ2QCgkECdSCnZAVqa3CAP+dUCVxWCiwfF1QBnsKN2N5XVAmU5gomfZdUCvX4nbTs11QA9FWHJDwXVAkE6yUEW1dUDubq1gVKl1QE62j4xwnXVAf87OvpmRdUDeeA/iz4V1QPMNJeESenVAoP4Qp2JudUD/VgIfv2J1QMhCVTQoV3VAVJOS0p1LdUAgR2/lH0B1QN8SzFiuNHVABuy0GEkpdUDPlGAR8B11QLwpMC+jEnVAerCuXmIHdUA9qJCMLfx0QG6bs6UE8XRAy7Idl+fldEDWSf1N1tp0QJeEqLfQz3RAvuacwdbEdED2635Z6Ll0QJmhGW0Fr3RAl0Fe6i2kdECbzmO/YZl0QHGxZtqgjnRAlFfIKeuDdED50g6cQHl0QPl65B+hbnRAbo4XpAxkdEDt1pkXg1l0QBlNgGkET3RAIr4CiZBEdEBKcntlJzp0QIPUZu7IL3RAJhtjE3UldECi8S/EKxt0QEQjrvDsEHRA/EbfiLgGdEAebOV8jvxzQDDIAr1u8nNAm2WZOVnoc0Bj0yrjTd5zQMzVV6pM1HNA7hfgf1XKc0A23qFUaMBzQM65mRmFtnNA7Tziv6usc0AHsLM43KJzQN7HY3UWmXNAcVxlZ1qPc0DBIEgAqIVzQGtbuDH/e3NAHqB+7V9yc0DYiX8lymhzQPJ1u8s9X3NABkBO0rpVc0CB/m4rQUxzQBfAb8nQQnNA6Um9nmk5c0By1t6dCzBzQDLVdbm2JnNADqs95Godc0BzcwsRKBRzQCjCzTLuCnNA02WMPL0Bc0A8K2ghlfhyQCuhmtR173JAB911SV/mckASQGRzUd1yQFU96EVM1HJAMSCctE/LckCQ0zGzW8JyQLypcjVwuXJA1yQ/L42wckDsv46UsqdyQKS4b1ngnnJAiNkGchaWckDpRI/SVI1yQFVAWm+bhHJAoADPPOp7ckCFdmovQXNyQNMbvzuganJAJcF0VgdickAuXEh0dllyQIzWC4rtUHJAJd2ljGxIckAEsBFx8z9yQMzyXiyCN3JAm32xsxgvckCBLkH8tiZyQGi7WftcHnJAjIRapgoWckBdZ7byvw1yQOuR89V8BXJAyFarRUH9cUBjAYo3DfVxQNqqTqHg7HFAPQ/LeLvkcUBQY+OzndxxQLQqjkiH1HFAjA7ULHjMcUCLtM9WcMRxQG+WrbxvvHFA9NmrVHa0cUAkKRoVhKxxQB+LWfSYpHFARj3c6LSccUDOjCXp15RxQLewyesBjXFAMqRt5zKFcUBhAcfSan1xQIHcm6SpdXFAcZ/CU+9tcUCc5SHXO2ZxQERYsCWPXnFAJ4t0NulWcUCJ2YQASk9xQI5DB3uxR3FA+ksxnR9AcUBI1kdelDhxQBQFn7UPMXFA6hiampEpcUBZT6sEGiJxQGzCU+uoGnFAcUgjRj4TcUAUVLgM2gtxQMzUvzZ8BHFAmxf1uyT9cEAiqCGU0/VwQPoxHbeI7nBAamLNHETncEBiyiW9BeBwQMTAJ5DN2HBA+kTijZvRcEDa4XGub8pwQNCQAOpJw3BAVJ3FOCq8cECpiAWTELVwQODtEfH8rXBAKGZJS++mcEBfbRea559wQOxG9NXlmHBA2+Jk9+mRcEA+w/r284pwQNDhU80DhHBA3ZUacxl9cEBkegXhNHZwQIpU1w9Wb3BANPpe+HxocED6OHeTqWFwQEi9BtrbWnBAv/n/xBNUcEDfDmFNUU1wQNmyM2yURnBAsBmNGt0/cECK3Y1RKzlwQD/nYQp/MnBAI1dAPtgrcEAEbmvmNiVwQGd2MPyaHnBA+a3neAQYcEA2L/RVcxFwQEzbw4znCnBALUTPFmEEcEC/LTPbv/tvQOwLYRXI7m9AlGhYz9rhb0DEP17899RvQBQazI8fyG9AR+MPfVG7b0BFwau3ja5vQH/rNTPUoW9As4JY4ySVb0ANadG7f4hvQKsacrDke29AfYYftVNvb0CL59G9zGJvQIeelL5PVm9AzwuGq9xJb0C2add4cz1vQDSnzBoUMW9A6EK8hb4kb0B2Jg+uchhvQDmCQIgwDG9ASKndCPj/bkDV7YUkyfNuQN196s+j525ALkDO/4fbbkC7sQWpdc9uQEPDdsBsw25ASLcYO223bkBXAPQNd6tuQJ4fIi6Kn25A0YPNkKaTbkBVaDErzIduQMK0mfL6e25Aqtxi3DJwbkCpv/ndc2RuQMiJ2+y9WG5AG5SV/hBNbkCyRcUIbUFuQND0FwHSNW5AYshK3T8qbkDOmSqTth5uQObWkxg2E25ARmRyY74HbkDcf8FpT/xtQLmjiyHp8G1ALWnqgIvlbUAabAZ+NtptQIsuFw/qzm1AkfxiKqbDbUBY0D7GarhtQIA2Dtk3rW1AsjJDWQ2ibUB2JF4965ZtQECs7XvRi21AwpCOC8CAbUBxpOvitnVtQFGrvfi1am1A6UDLQ71fbUCFvui6zFRtQKgh+FTkSW1At/LoCAQ/bUDaK7jNKzRtQB4gcJpbKW1AxmIoZpMebUDTrgUo0xNtQMTOOdcaCW1AkIQDa2r+bEDMca7awfNsQA0Akx0h6WxAeEkWK4jebECMAar69tNsQBpezINtyWxAbwAIvuu+bEC53vOgcbRsQIwtMyT/qWxAqUl1P5SfbEDtoXXqMJVsQHCh+xzVimxA2ZnazoCAbEDZrfH3M3ZsQNq7K5Dua2xA3kh/j7BhbECDa+7teVdsQDq3hqNKTWxAtidhqCJDbEBoDKL0ATlsQEr0eIDoLmxAwJkgRNYkbECszt43yxpsQKhoBFTHEGxAcC3tkMoGbEByv//m1PxrQIaKrU7m8mtA0bBywP7oa0DX99U0Ht9rQKe1aKRE1WtAOL7GB3LLa0DvUJZXpsFrQEgGiIzht2tAp71WnyOua0BLi8eIbKRrQHOmqUG8mmtAmVfWwhKRa0Db5jAFcIdrQI+KpgHUfWtA6VUusT50a0DYJ8kMsGprQPuZgQ0oYWtAwO9rrKZXa0CjBabiK05rQI9AV6m3RGtAZn2w+Uk7a0CkAOzM4jFrQCpmTRyCKGtALJEh4Scfa0A1nL4U1BVrQFnJg7CGDGtAf3LZrT8Da0DT+TAG//lqQE26BLPE8GpAYfjXrZDnakDN0jbwYt5qQIAztnM71WpAqsDzMRrMakDdzZUk/8JqQF5NS0XquWpAfsHLjduwakAmLtf30qdqQHMKNn3QnmpAcDK5F9SVakD42DnB3YxqQKR5mXPtg2pA4srBKAN7akAjsKTaHnJqQCUsPINAaWpAXFOKHGhgakBvPpmglVdqQNX8egnJTmpAkYdJUQJGakD/syZyQT1qQMAmPGaGNGpAxka7J9ErakBrMN2wISNqQLSo4vt3GmpAmxAUA9QRakCGWMHANQlqQMHzQS+dAGpAIcz0SAr4aUC6NUAIfe9pQLDikWf15mlAFtdeYXPeaUD2XCPw9tVpQF/4Yg6AzWlAlVuotg7FaUBXW4XjorxpQDzjko88tGlAHupwtduraUCpZsZPgKNpQPlDQVkqm2lAUFaWzNmSaUDdT4GkjoppQKO1xNtIgmlAbNQpbQh6aUDWtYBTzXFpQHYVoImXaWlACFZlCmdhaUDGdrTQO1lpQLoIeNcVUWlAPCShGfVIaUB3XieS2UBpQAS/CDzDOGlAnrVJErIwaUDmD/UPpihpQDjvGzCfIGlAmb7VbZ0YaUCzKEDEoBBpQOwNfy6pCGlAhXq8p7YAaUDRnCgryfhoQIa7+bPg8GhAESxsPf3oaEAJScLCHuFoQLBoRD9F2WhAhtNArnDRaEDougsLocloQM0v/1DWwWhAjhl7exC6aEC3LOWFT7JoQPrhqGuTqmhAI203KNyiaEArtAe3KZtoQE9GlhN8k2hARFNlOdOLaEBsovwjL4RoQC2K6c6PfGhAS+e+NfV0aEBYFBVUX21oQDPhiSXOZWhAlIrApUFeaECssWHQuVZoQNJTG6E2T2hAQMKgE7hHaEDgmaojPkBoQCW79szIOGhA+EFIC1gxaECufWfa6yloQBPpITaEImhAgiJKGiEbaEAE5LeCwhNoQIf7R2toDGhAI0PczxIFaEBkmVuswf1nQKvZsfx09mdAmtTPvCzvZ0CPSKvo6OdnQCXaPnyp4GdA0gyKc27ZZ0CDO5HKN9JnQE+RXX0Fy2dAMAL9h9fDZ0DTQ4LmrbxnQGjGBJWItWdAjq2gj2euZ0A9yXbSSqdnQMmOrFkyoGdA5hFsIR6ZZ0DE/eMlDpJnQDOOR2MCi2dAzYjO1fqDZ0A0NrV593xnQFpbPEv4dWdA1jKpRv1uZ0BAZkVoBmhnQKIHX6wTYWdA54pIDyVaZ0Bmv1iNOlNnQGrJ6iJUTGdA0BtezHFFZ0CpcRaGkz5nQOvHe0y5N2dALVf6G+MwZ0BsjQLxECpnQN8HCchCI2dA0IyGnXgcZ0CFBfhtshVnQDN43jXwDmdA9wG/8TEIZ0Dd0CKedwFnQPodlzfB+mZAeietug70ZkDQKvojYO1mQONeF3C15mZASO6hmw7gZkCH8Tqja9lmQGtph4PM0mZAWDkwOTHMZkCtIeLAmcVmQDG6TRcGv2ZAi2wnOXa4ZkC8bicj6rFmQKm9CdJhq2ZArxeOQt2kZkA/93dxXJ5mQH+Njlvfl2ZA+ryc/WWRZkBXFHFU8IpmQBnJ3Vx+hGZAabK4ExB+ZkDmQ9t1pXdmQICIIoA+cWZAXx1vL9tqZkDLLKWAe2RmQCJprHAfXmZA2Adw/MZXZkB7vN4gclFmQMKz6togS2ZApI6JJ9NEZkB2XbQDiT5mQBibZ2xCOGZAGyijXv8xZkADRmrXvytmQH+Sw9ODJWZAtgK5UEsfZkCT3ldLFhlmQCK8sMDkEmZA6XrXrbYMZkBWP+MPjAZmQCZu7uNkAGZA56cWJ0H6ZUBqxHzWIPRlQFDORO8D7mVAmP6VburnZUAvuJpR1OFlQI+DgJXB22VAYQp4N7LVZUArE7U0ps9lQP18boqdyWVALTveNZjDZUAUUUE0lr1lQNzN14KXt2VARcjkHpyxZUCAWq4FpKtlQAiefTSvpWVAhaeeqL2fZUC5gmBfz5llQGsuFVbkk2VAYJgRivyNZUBYma34F4hlQBPxQ582gmVAXkIye1h8ZUAcD9mJfXZlQGS0m8ilcGVAnmbgNNFqZUCnLRDM/2RlQPjglosxX2VA3CPjcGZZZUCiYWZ5nlNlQN7JlKLZTWVAqEzl6RdIZUDqltFMWUJlQKwO1sidPGVAaM9xW+U2ZUBopiYCMDFlQCMPebp9K2VAqy/wgc4lZUAQ1RVWIiBlQNtvdjR5GmVAfxChGtMUZUDbYycGMA9lQLyvnfSPCWVAaM+a4/IDZUAlMLjQWP5kQNjNkbnB+GRAlC/Gmy3zZEBBZPZ0nO1kQDn/xUIO6GRA+BTbAoPiZEDGN96y+txkQG50elB112RA9U5d2fLRZEBcvzZLc8xkQGAuuaP2xmRAQ3KZ4HzBZECdy47/BbxkQCziUv6RtmRArsGh2iCxZEC61jmSsqtkQKnr2yJHpmRAdCVLit6gZECmAE3GeJtkQEpOqdQVlmRA4TAqs7WQZEBaGZxfWItkQBTEzdf9hWRA3TWQGaaAZED/uLYiUXtkQEnaFvH+dWRAImaIgq9wZECeZeXUYmtkQJgbCuYYZmRA1AHVs9FgZEAexiY8jVtkQHRH4nxLVmRAMJPscwxRZEA/4iwf0EtkQEyWjHyWRmRAAzf3iV9BZEBFb1pFKzxkQHMKpqz5NmRArPHLvcoxZEAfKcB2nixkQFHNeNV0J2RAdRDu100iZEDANxp8KR1kQMaY+b8HGGRA1ZaKoegSZEBboM0ezA1kQE0sxTWyCGRAjrd15JoDZEBfwuUohv5jQNTNHQF0+WNASFkoa2T0Y0DX3xFlV+9jQN7V6OxM6mNAeaa9AEXlY0AOsaKeP+BjQNBGrMQ822NAVKjwcDzWY0AYA4ihPtFjQCJvjFRDzGNAj+wZiErHY0A=\",\"dtype\":\"float64\",\"order\":\"little\",\"shape\":[1000]}},\"selected\":{\"id\":\"2576\"},\"selection_policy\":{\"id\":\"2575\"}},\"id\":\"2562\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"2504\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"fields\":[\"bid\"]},\"id\":\"2763\",\"type\":\"Stack\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2761\"},\"glyph\":{\"id\":\"2767\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2769\"},\"name\":\"bid\",\"nonselection_glyph\":{\"id\":\"2768\"},\"view\":{\"id\":\"2771\"}},\"id\":\"2770\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2704\",\"type\":\"AllLabels\"},{\"attributes\":{\"source\":{\"id\":\"2761\"}},\"id\":\"2771\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2703\",\"type\":\"CategoricalTickFormatter\"},{\"attributes\":{},\"id\":\"2465\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"items\":[{\"id\":\"2783\"},{\"id\":\"2800\"}]},\"id\":\"2782\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"2481\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2474\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2700\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2461\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"2469\"}],\"center\":[{\"id\":\"2472\"},{\"id\":\"2476\"},{\"id\":\"2507\"}],\"left\":[{\"id\":\"2473\"}],\"renderers\":[{\"id\":\"2495\"},{\"id\":\"2513\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"2459\"},\"toolbar\":{\"id\":\"2484\"},\"width\":900,\"x_range\":{\"id\":\"2461\"},\"x_scale\":{\"id\":\"2465\"},\"y_range\":{\"id\":\"2463\"},\"y_scale\":{\"id\":\"2467\"}},\"id\":\"2458\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{},\"id\":\"2576\",\"type\":\"Selection\"},{\"attributes\":{\"line_alpha\":0.6,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2492\",\"type\":\"Line\"},{\"attributes\":{},\"id\":\"2701\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2575\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2706\",\"type\":\"Selection\"},{\"attributes\":{\"data\":{\"UNI\":[791.1392405063291,719.4131080941505],\"USDT\":[5000.0,5498.504486540379],\"steps\":[\"Before Swap\",\"After Swap\"]},\"selected\":{\"id\":\"2706\"},\"selection_policy\":{\"id\":\"2705\"}},\"id\":\"2690\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"2691\"}}},\"id\":\"2695\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"2710\"}}},\"id\":\"2712\",\"type\":\"VBar\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.5},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.5},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"2691\"}}},\"id\":\"2693\",\"type\":\"VBar\"},{\"attributes\":{\"range\":{\"id\":\"2659\"},\"value\":-0.1},\"id\":\"2691\",\"type\":\"Dodge\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"blue\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"blue\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"blue\"},\"top\":{\"field\":\"USDT\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"2691\"}}},\"id\":\"2694\",\"type\":\"VBar\"},{\"attributes\":{\"tools\":[{\"id\":\"2548\"},{\"id\":\"2549\"},{\"id\":\"2550\"},{\"id\":\"2551\"},{\"id\":\"2552\"},{\"id\":\"2553\"},{\"id\":\"2598\"},{\"id\":\"2628\"},{\"id\":\"2654\"}]},\"id\":\"2555\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"names\":[\"-5407271516308659581\"],\"tooltips\":[[\"UNI\",\"5500.000\"],[\"USDT\",\"719.217\"],[\"Mid Price (after swap)\",\"7.647\"]]},\"id\":\"2654\",\"type\":\"HoverTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2633\",\"type\":\"Circle\"},{\"attributes\":{\"source\":{\"id\":\"2630\"}},\"id\":\"2635\",\"type\":\"CDSView\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2562\"},\"glyph\":{\"id\":\"2563\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2565\"},\"nonselection_glyph\":{\"id\":\"2564\"},\"view\":{\"id\":\"2567\"}},\"id\":\"2566\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"data\":{\"x\":[5500.0],\"y\":[719.21749136939]},\"selected\":{\"id\":\"2652\"},\"selection_policy\":{\"id\":\"2651\"}},\"id\":\"2630\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"line_alpha\":0.2,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2565\",\"type\":\"Line\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2630\"},\"glyph\":{\"id\":\"2631\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2633\"},\"name\":\"-5407271516308659581\",\"nonselection_glyph\":{\"id\":\"2632\"},\"view\":{\"id\":\"2635\"}},\"id\":\"2634\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"line_alpha\":0.1,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2564\",\"type\":\"Line\"},{\"attributes\":{\"data\":{\"x\":[5000.0],\"y\":[791.1392405063291]},\"selected\":{\"id\":\"2525\"},\"selection_policy\":{\"id\":\"2524\"}},\"id\":\"2509\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Y=K/X\"},\"renderers\":[{\"id\":\"2495\"}]},\"id\":\"2508\",\"type\":\"LegendItem\"},{\"attributes\":{\"line_alpha\":0.6,\"line_color\":\"navy\",\"line_width\":2,\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2563\",\"type\":\"Line\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2632\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2651\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"source\":{\"id\":\"2509\"}},\"id\":\"2514\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2780\",\"type\":\"Selection\"},{\"attributes\":{\"below\":[{\"id\":\"2540\"}],\"center\":[{\"id\":\"2543\"},{\"id\":\"2547\"},{\"id\":\"2578\"}],\"left\":[{\"id\":\"2544\"}],\"renderers\":[{\"id\":\"2566\"},{\"id\":\"2584\"},{\"id\":\"2604\"},{\"id\":\"2610\"},{\"id\":\"2634\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"2530\"},\"toolbar\":{\"id\":\"2555\"},\"width\":900,\"x_range\":{\"id\":\"2532\"},\"x_scale\":{\"id\":\"2536\"},\"y_range\":{\"id\":\"2534\"},\"y_scale\":{\"id\":\"2538\"}},\"id\":\"2529\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"children\":[{\"id\":\"2458\"},{\"id\":\"2529\"}],\"sizing_mode\":\"stretch_both\"},\"id\":\"2801\",\"type\":\"Row\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2510\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2509\"},\"glyph\":{\"id\":\"2510\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2512\"},\"name\":\"-8301454650589535677\",\"nonselection_glyph\":{\"id\":\"2511\"},\"view\":{\"id\":\"2514\"}},\"id\":\"2513\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2652\",\"type\":\"Selection\"},{\"attributes\":{\"callback\":null,\"names\":[\"-8301454650589535677\"],\"tooltips\":[[\"UNI\",\"5000.000\"],[\"USDT\",\"791.139\"],[\"Mid Price\",\"6.320\"]]},\"id\":\"2527\",\"type\":\"HoverTool\"},{\"attributes\":{\"axis\":{\"id\":\"2473\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2476\",\"type\":\"Grid\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2511\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"2779\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2777\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"2524\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2525\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"2470\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2778\",\"type\":\"AllLabels\"},{\"attributes\":{\"data\":{\"x\":[5000.0],\"y\":[791.1392405063291]},\"selected\":{\"id\":\"2596\"},\"selection_policy\":{\"id\":\"2595\"}},\"id\":\"2580\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"label\":{\"value\":\"Y=K/X\"},\"renderers\":[{\"id\":\"2566\"}]},\"id\":\"2579\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2774\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"below\":[{\"id\":\"2667\"}],\"center\":[{\"id\":\"2669\"},{\"id\":\"2673\"},{\"id\":\"2708\"}],\"left\":[{\"id\":\"2670\"}],\"renderers\":[{\"id\":\"2696\"},{\"id\":\"2715\"}],\"sizing_mode\":\"stretch_both\",\"title\":{\"id\":\"2657\"},\"toolbar\":{\"id\":\"2682\"},\"width\":900,\"x_range\":{\"id\":\"2659\"},\"x_scale\":{\"id\":\"2663\"},\"y_range\":{\"id\":\"2661\"},\"y_scale\":{\"id\":\"2665\"}},\"id\":\"2656\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"2580\"}},\"id\":\"2585\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2482\",\"type\":\"HelpTool\"},{\"attributes\":{\"axis_label\":\"Amount USDT\",\"coordinates\":null,\"formatter\":{\"id\":\"2502\"},\"group\":null,\"major_label_policy\":{\"id\":\"2503\"},\"ticker\":{\"id\":\"2470\"}},\"id\":\"2469\",\"type\":\"LinearAxis\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.4},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.4},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2581\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2580\"},\"glyph\":{\"id\":\"2581\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2583\"},\"name\":\"-8301454650589535677\",\"nonselection_glyph\":{\"id\":\"2582\"},\"view\":{\"id\":\"2585\"}},\"id\":\"2584\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2663\",\"type\":\"CategoricalScale\"},{\"attributes\":{\"tools\":[{\"id\":\"2747\"},{\"id\":\"2748\"},{\"id\":\"2749\"},{\"id\":\"2750\"},{\"id\":\"2751\"},{\"id\":\"2752\"}]},\"id\":\"2754\",\"type\":\"Toolbar\"},{\"attributes\":{\"callback\":null,\"names\":[\"-8301454650589535677\"],\"tooltips\":[[\"UNI\",\"5000.000\"],[\"USDT\",\"791.139\"],[\"Mid Price\",\"6.320\"]]},\"id\":\"2598\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"2665\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"2661\",\"type\":\"DataRange1d\"},{\"attributes\":{\"fields\":[]},\"id\":\"2762\",\"type\":\"Stack\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"size\":{\"value\":10},\"x\":{\"field\":\"x\"},\"y\":{\"field\":\"y\"}},\"id\":\"2582\",\"type\":\"Circle\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Constant Product AMM Curve for the pair UNI/USDT\"},\"id\":\"2459\",\"type\":\"Title\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Pool balance history\"},\"id\":\"2657\",\"type\":\"Title\"},{\"attributes\":{\"fields\":[\"bid\",\"ask\"]},\"id\":\"2765\",\"type\":\"Stack\"},{\"attributes\":{\"fill_alpha\":0.4,\"fill_color\":\"green\",\"hatch_alpha\":{\"value\":0.4},\"hatch_color\":{\"value\":\"green\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2762\"}},\"y2\":{\"expr\":{\"id\":\"2763\"}}},\"id\":\"2767\",\"type\":\"VArea\"},{\"attributes\":{\"axis_label\":\"Amount UNI\",\"coordinates\":null,\"formatter\":{\"id\":\"2499\"},\"group\":null,\"major_label_policy\":{\"id\":\"2500\"},\"ticker\":{\"id\":\"2474\"}},\"id\":\"2473\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis_label\":\"Amount UNI\",\"coordinates\":null,\"formatter\":{\"id\":\"2570\"},\"group\":null,\"major_label_policy\":{\"id\":\"2571\"},\"ticker\":{\"id\":\"2545\"}},\"id\":\"2544\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2668\",\"type\":\"CategoricalTicker\"},{\"attributes\":{\"axis\":{\"id\":\"2667\"},\"coordinates\":null,\"grid_line_color\":null,\"group\":null,\"ticker\":null},\"id\":\"2669\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2478\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"2710\"}}},\"id\":\"2713\",\"type\":\"VBar\"},{\"attributes\":{\"axis_label\":\"Reserves\",\"coordinates\":null,\"formatter\":{\"id\":\"2700\"},\"group\":null,\"major_label_policy\":{\"id\":\"2701\"},\"ticker\":{\"id\":\"2671\"}},\"id\":\"2670\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2477\",\"type\":\"PanTool\"},{\"attributes\":{\"label\":{\"value\":\"USDT Pool\"},\"renderers\":[{\"id\":\"2696\"}]},\"id\":\"2709\",\"type\":\"LegendItem\"},{\"attributes\":{\"axis_label\":\"Simulation Steps\",\"coordinates\":null,\"formatter\":{\"id\":\"2703\"},\"group\":null,\"major_label_policy\":{\"id\":\"2704\"},\"ticker\":{\"id\":\"2668\"}},\"id\":\"2667\",\"type\":\"CategoricalAxis\"},{\"attributes\":{\"fill_alpha\":0.1,\"fill_color\":\"green\",\"hatch_alpha\":{\"value\":0.1},\"hatch_color\":{\"value\":\"green\"},\"x\":{\"field\":\"mid\"},\"y1\":{\"expr\":{\"id\":\"2762\"}},\"y2\":{\"expr\":{\"id\":\"2763\"}}},\"id\":\"2768\",\"type\":\"VArea\"},{\"attributes\":{},\"id\":\"2595\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"2532\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"2679\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"2775\",\"type\":\"AllLabels\"},{\"attributes\":{},\"id\":\"2480\",\"type\":\"SaveTool\"},{\"attributes\":{\"coordinates\":null,\"group\":null,\"text\":\"Constant Product AMM Curve for the pair UNI/USDT\"},\"id\":\"2530\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"2596\",\"type\":\"Selection\"},{\"attributes\":{\"overlay\":{\"id\":\"2483\"}},\"id\":\"2479\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.2},\"fill_color\":{\"value\":\"red\"},\"hatch_alpha\":{\"value\":0.2},\"hatch_color\":{\"value\":\"red\"},\"line_alpha\":{\"value\":0.2},\"line_color\":{\"value\":\"red\"},\"top\":{\"field\":\"UNI\"},\"width\":{\"value\":0.2},\"x\":{\"field\":\"steps\",\"transform\":{\"id\":\"2710\"}}},\"id\":\"2714\",\"type\":\"VBar\"},{\"attributes\":{\"range\":{\"id\":\"2659\"},\"value\":0.1},\"id\":\"2710\",\"type\":\"Dodge\"},{\"attributes\":{},\"id\":\"2536\",\"type\":\"LinearScale\"},{\"attributes\":{\"coordinates\":null,\"data_source\":{\"id\":\"2690\"},\"glyph\":{\"id\":\"2712\"},\"group\":null,\"hover_glyph\":null,\"muted_glyph\":{\"id\":\"2714\"},\"nonselection_glyph\":{\"id\":\"2713\"},\"view\":{\"id\":\"2716\"}},\"id\":\"2715\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"2534\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"2670\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2673\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2541\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"2671\",\"type\":\"BasicTicker\"},{\"attributes\":{\"axis\":{\"id\":\"2540\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2543\",\"type\":\"Grid\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"USDT\",\"@USDT{0,0.000}\"],[\"UNI\",\"@UNI{0,0.000}\"]]},\"id\":\"2681\",\"type\":\"HoverTool\"},{\"attributes\":{},\"id\":\"2538\",\"type\":\"LinearScale\"},{\"attributes\":{\"label\":{\"value\":\"UNI Pool\"},\"renderers\":[{\"id\":\"2715\"}]},\"id\":\"2727\",\"type\":\"LegendItem\"},{\"attributes\":{},\"id\":\"2553\",\"type\":\"HelpTool\"},{\"attributes\":{\"tools\":[{\"id\":\"2477\"},{\"id\":\"2478\"},{\"id\":\"2479\"},{\"id\":\"2480\"},{\"id\":\"2481\"},{\"id\":\"2482\"},{\"id\":\"2527\"}]},\"id\":\"2484\",\"type\":\"Toolbar\"},{\"attributes\":{\"source\":{\"id\":\"2690\"}},\"id\":\"2716\",\"type\":\"CDSView\"},{\"attributes\":{\"axis_label\":\"Amount USDT\",\"coordinates\":null,\"formatter\":{\"id\":\"2573\"},\"group\":null,\"major_label_policy\":{\"id\":\"2574\"},\"ticker\":{\"id\":\"2541\"}},\"id\":\"2540\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"2674\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"2675\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"2680\"}},\"id\":\"2676\",\"type\":\"BoxZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2483\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2677\",\"type\":\"SaveTool\"},{\"attributes\":{\"axis\":{\"id\":\"2469\"},\"coordinates\":null,\"group\":null,\"ticker\":null},\"id\":\"2472\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2678\",\"type\":\"ResetTool\"},{\"attributes\":{\"axis\":{\"id\":\"2544\"},\"coordinates\":null,\"dimension\":1,\"group\":null,\"ticker\":null},\"id\":\"2547\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"2545\",\"type\":\"BasicTicker\"},{\"attributes\":{\"source\":{\"id\":\"2562\"}},\"id\":\"2567\",\"type\":\"CDSView\"},{\"attributes\":{},\"id\":\"2549\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"bottom_units\":\"screen\",\"coordinates\":null,\"fill_alpha\":0.5,\"fill_color\":\"lightgrey\",\"group\":null,\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":1.0,\"line_color\":\"black\",\"line_dash\":[4,4],\"line_width\":2,\"right_units\":\"screen\",\"syncable\":false,\"top_units\":\"screen\"},\"id\":\"2680\",\"type\":\"BoxAnnotation\"},{\"attributes\":{},\"id\":\"2548\",\"type\":\"PanTool\"},{\"attributes\":{\"overlay\":{\"id\":\"2554\"}},\"id\":\"2550\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"2551\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"2552\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"2505\",\"type\":\"Selection\"}],\"root_ids\":[\"2803\"]},\"title\":\"Bokeh Application\",\"version\":\"2.4.3\"}};\n", " const render_items = [{\"docid\":\"393c97ea-5ba2-41ec-b6f3-c0eb887bd220\",\"root_ids\":[\"2803\"],\"roots\":{\"2803\":\"8cc28a23-2137-41b9-ac07-47cd3a7436ab\"}}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "2803" } }, "output_type": "display_data" } ], "source": [ "from cpy_amm.market import MarketQuote, MarketPair, new_market\n", "from cpy_amm.plotting import cp_amm_autoviz\n", "\n", "# initial liquidity in USD\n", "deposit_usd = 10000\n", "# USDT/USD market price\n", "usdt_usd = MarketQuote(\"USDT/USD\", 1)\n", "# UNI/USD market price\n", "uni_usd = MarketQuote(\"UNI/USD\", 6.32)\n", "# create a 10000 USD market for UNI/USDT\n", "mkt = new_market(10000, usdt_usd, uni_usd, 0.003)\n", "# display data\n", "cp_amm_autoviz(mkt)" ] } ], "metadata": { "kernelspec": { "display_name": "cpy_amm_sim_2", "language": "python", "name": "cpy_amm_sim_2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 5 }