From 682623d8252cf7ba4f33627c936e86f76069d9c3 Mon Sep 17 00:00:00 2001 From: matttyb80 Date: Wed, 26 Jan 2022 17:08:08 -0500 Subject: [PATCH 1/3] add print for classes, fix decimal import --- model/parts/delegate_front_runner.py | 6 ++++++ model/parts/indexer.py | 8 +++++++- model/parts/portfolio.py | 8 +++++++- model/sys_params.py | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/model/parts/delegate_front_runner.py b/model/parts/delegate_front_runner.py index cd5f784..4860421 100644 --- a/model/parts/delegate_front_runner.py +++ b/model/parts/delegate_front_runner.py @@ -98,5 +98,11 @@ def generateOutput(self): if self.plan: # output must be a list of events. self.output.append(self.plan) + + def __str__(self): + """ + Print all attributes of a class + """ + return str(self.__class__) + ": " + str(self.__dict__) diff --git a/model/parts/indexer.py b/model/parts/indexer.py index 7365b50..97e354e 100644 --- a/model/parts/indexer.py +++ b/model/parts/indexer.py @@ -35,4 +35,10 @@ def __init__(self, id, pool_delegated_stake = Decimal(0), shares = Decimal(0), p self.subgraphs = {} # key is subgraphDeploymentID, value is Subgraph - self.buffered_rewards_assigned = 0 # this is indexing rewards--we cannot attribute to subgraph until allocationCloseds event \ No newline at end of file + self.buffered_rewards_assigned = 0 # this is indexing rewards--we cannot attribute to subgraph until allocationCloseds event + + def __str__(self): + """ + Print all attributes of a class + """ + return str(self.__class__) + ": " + str(self.__dict__) \ No newline at end of file diff --git a/model/parts/portfolio.py b/model/parts/portfolio.py index 9e24569..36125ec 100644 --- a/model/parts/portfolio.py +++ b/model/parts/portfolio.py @@ -21,4 +21,10 @@ def __init__(self, id, holdings = Decimal(1000000000), eth_holdings = Decimal(10 self.delegate_block_number = delegate_block_number self.withdraw_block_number = withdraw_block_number self.indexer_ROI = indexer_ROI - self.indexer_ROI_time = indexer_ROI_time \ No newline at end of file + self.indexer_ROI_time = indexer_ROI_time + + def __str__(self): + """ + Print all attributes of a class + """ + return str(self.__class__) + ": " + str(self.__dict__) \ No newline at end of file diff --git a/model/sys_params.py b/model/sys_params.py index 6c4b4ba..efa29e8 100644 --- a/model/sys_params.py +++ b/model/sys_params.py @@ -1,5 +1,5 @@ from .parts import utils -from decimal import * +from decimal import Decimal from sys import platform R_i_rate = [0.03] From b291f9195ada54d3b9c3ed43ebd21b3815f76999 Mon Sep 17 00:00:00 2001 From: matttyb80 Date: Fri, 28 Jan 2022 10:52:26 -0500 Subject: [PATCH 2/3] no tax case --- delegator_portfolio.ipynb | 136 +++++++++++++++++++++++++------------- getAgent.ipynb | 133 ++++++++++++++++++------------------- model/sys_params.py | 2 +- 3 files changed, 155 insertions(+), 116 deletions(-) diff --git a/delegator_portfolio.ipynb b/delegator_portfolio.ipynb index d197e83..6fdd6f1 100644 --- a/delegator_portfolio.ipynb +++ b/delegator_portfolio.ipynb @@ -81,6 +81,8 @@ " indexers\n", " delegator_portfolios\n", " block_number\n", + " epoch\n", + " injected_event_shift\n", " simulation\n", " subset\n", " run\n", @@ -91,62 +93,72 @@ " \n", " \n", " 0\n", - " 4\n", + " 6\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " {}\n", " 11474009\n", + " 4\n", + " 0\n", " 0\n", " 0\n", " 1\n", - " 4\n", + " 6\n", " 1\n", " \n", " \n", " 1\n", - " 8\n", + " 12\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " {}\n", " 11474009\n", + " 4\n", + " 0\n", " 0\n", " 0\n", " 1\n", - " 4\n", + " 6\n", " 2\n", " \n", " \n", " 2\n", - " 12\n", + " 18\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " {}\n", " 11474307\n", + " 4\n", + " 0\n", " 0\n", " 0\n", " 1\n", - " 4\n", + " 6\n", " 3\n", " \n", " \n", " 3\n", - " 16\n", + " 24\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':...\n", " 11474332\n", + " 4\n", + " 0\n", " 0\n", " 0\n", " 1\n", - " 4\n", + " 6\n", " 4\n", " \n", " \n", " 4\n", - " 20\n", + " 30\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':...\n", " 11474426\n", + " 4\n", + " 0\n", " 0\n", " 0\n", " 1\n", - " 4\n", + " 6\n", " 5\n", " \n", " \n", @@ -155,25 +167,25 @@ ], "text/plain": [ " index indexers \\\n", - "0 4 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "1 8 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "2 12 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "3 16 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "4 20 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "0 6 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "1 12 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "2 18 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "3 24 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "4 30 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", "\n", - " delegator_portfolios block_number \\\n", - "0 {} 11474009 \n", - "1 {} 11474009 \n", - "2 {} 11474307 \n", - "3 {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':... 11474332 \n", - "4 {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':... 11474426 \n", + " delegator_portfolios block_number epoch \\\n", + "0 {} 11474009 4 \n", + "1 {} 11474009 4 \n", + "2 {} 11474307 4 \n", + "3 {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':... 11474332 4 \n", + "4 {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':... 11474426 4 \n", "\n", - " simulation subset run substep timestep \n", - "0 0 0 1 4 1 \n", - "1 0 0 1 4 2 \n", - "2 0 0 1 4 3 \n", - "3 0 0 1 4 4 \n", - "4 0 0 1 4 5 " + " injected_event_shift simulation subset run substep timestep \n", + "0 0 0 0 1 6 1 \n", + "1 0 0 0 1 6 2 \n", + "2 0 0 0 1 6 3 \n", + "3 0 0 0 1 6 4 \n", + "4 0 0 0 1 6 5 " ] }, "execution_count": 3, @@ -213,40 +225,53 @@ " \n", " \n", " 0xd776a7306ee6a060cebb46b46d305e88fd39ba84\n", + " 1\n", " \n", " \n", " \n", " \n", " 3\n", " <model.parts.portfolio.Portfolio object at 0x7...\n", + " <model.parts.portfolio.Portfolio object at 0x7...\n", " \n", " \n", " 4\n", " <model.parts.portfolio.Portfolio object at 0x7...\n", + " <model.parts.portfolio.Portfolio object at 0x7...\n", " \n", " \n", " 5\n", " <model.parts.portfolio.Portfolio object at 0x7...\n", + " <model.parts.portfolio.Portfolio object at 0x7...\n", " \n", " \n", " 6\n", " <model.parts.portfolio.Portfolio object at 0x7...\n", + " <model.parts.portfolio.Portfolio object at 0x7...\n", " \n", " \n", " 7\n", " <model.parts.portfolio.Portfolio object at 0x7...\n", + " <model.parts.portfolio.Portfolio object at 0x7...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " 0xd776a7306ee6a060cebb46b46d305e88fd39ba84\n", - "3 " + "Decimal('1000000000')" ] }, "execution_count": 5, @@ -289,18 +314,39 @@ } ], "source": [ - "delegator_values_df['0xd776a7306ee6a060cebb46b46d305e88fd39ba84'].items()" + "delegator_values_df[1][3].holdings" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, + "id": "d68afee1-1308-4a27-a3e0-c5a520bccb59", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "delegator_values_df[1].items()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "id": "8607a3dc-3e77-4433-b5c3-461196e4d7bd", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -314,21 +360,21 @@ "source": [ "import matplotlib.pyplot as plt\n", "ROI_list = []\n", - "for i, values in delegator_values_df['0xd776a7306ee6a060cebb46b46d305e88fd39ba84'].items():\n", + "for i, values in delegator_values_df[1].items():\n", " ROI_list.append(values.ROI)\n", "plt.plot(delegator_values_df.index, ROI_list)\n", - "plt.title('ROI of Delegator 0xd776a7306ee6a060cebb46b46d305e88fd39ba84');" + "plt.title('ROI of Front Running Delegator');" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "id": "89c1a520-bd1d-49f8-a928-51fb9cfe1116", "metadata": {}, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
" ] @@ -341,11 +387,11 @@ ], "source": [ "holdings_list = []\n", - "for i, values in delegator_values_df['0xd776a7306ee6a060cebb46b46d305e88fd39ba84'].items():\n", + "for i, values in delegator_values_df[1].items():\n", " holdings_list.append(values.holdings)\n", "plt.plot(delegator_values_df.index, holdings_list)\n", - "plt.title('GRT Holdings of Delegator 0xd776a7306ee6a060cebb46b46d305e88fd39ba84')\n", - "plt.ylim(900000000, 10000000000);" + "plt.title('GRT Holdings of Front Running Delegator')\n", + "plt.ylim(0, 1100000000);" ] }, { diff --git a/getAgent.ipynb b/getAgent.ipynb index 8c2e1d1..1e41a68 100644 --- a/getAgent.ipynb +++ b/getAgent.ipynb @@ -18,17 +18,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "stakeDelegateds: 154 events\n", - "stakeDelegatedLockeds: 14 events\n", - "stakeDelegatedWithdrawns: 0 events\n", - "allocationCloseds: 6 events\n", - "allocationCollecteds: 0 events\n", - "stakeDepositeds: 7 events\n", - "rewardsAssigneds: 6 events\n", - "delegationParametersUpdateds: 5 events\n", - "allocationCreateds: 8 events\n", - "TOTAL NUMBER OF EVENTS: 200\n", - "You should set SIMULATION_TIME_STEPS in config.py to a minimum of 200 to capture all events.\n", + "stakeDelegateds: 605 events\n", + "stakeDelegatedLockeds: 375 events\n", + "stakeDelegatedWithdrawns: 326 events\n", + "allocationCloseds: 47 events\n", + "allocationCollecteds: 16 events\n", + "stakeDepositeds: 25 events\n", + "rewardsAssigneds: 47 events\n", + "delegationParametersUpdateds: 6 events\n", + "allocationCreateds: 51 events\n", + "TOTAL NUMBER OF EVENTS: 1529\n", + "You should set SIMULATION_TIME_STEPS in config.py to a minimum of 1529 to capture all events.\n", "\n" ] } @@ -89,91 +89,85 @@ " indexers\n", " delegator_portfolios\n", " block_number\n", + " epoch\n", " injected_event_shift\n", " simulation\n", " subset\n", " run\n", " substep\n", " timestep\n", - " cumulative_indexing_revenue\n", - " cumulative_query_revenue\n", " \n", " \n", " \n", " \n", " 0\n", - " 15\n", + " 6\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " {}\n", " 11474009\n", + " 4\n", " 0\n", " 0\n", " 0\n", " 1\n", - " 15\n", + " 6\n", " 1\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " \n", " \n", " 1\n", - " 30\n", + " 12\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " {}\n", " 11474009\n", + " 4\n", " 0\n", " 0\n", " 0\n", " 1\n", - " 15\n", + " 6\n", " 2\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " \n", " \n", " 2\n", - " 45\n", + " 18\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", - " {'0x9fe0a203e190d87cef6b4b80b24fae73f243b3ea':...\n", + " {}\n", " 11474307\n", + " 4\n", " 0\n", " 0\n", " 0\n", " 1\n", - " 15\n", + " 6\n", " 3\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " \n", " \n", " 3\n", - " 60\n", + " 24\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", - " {'0x9fe0a203e190d87cef6b4b80b24fae73f243b3ea':...\n", + " {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':...\n", " 11474332\n", + " 4\n", " 0\n", " 0\n", " 0\n", " 1\n", - " 15\n", + " 6\n", " 4\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " \n", " \n", " 4\n", - " 75\n", + " 30\n", " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", - " {'0x9fe0a203e190d87cef6b4b80b24fae73f243b3ea':...\n", + " {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':...\n", " 11474426\n", + " 4\n", " 0\n", " 0\n", " 0\n", " 1\n", - " 15\n", + " 6\n", " 5\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", - " {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':...\n", " \n", " \n", "\n", @@ -181,39 +175,25 @@ ], "text/plain": [ " index indexers \\\n", - "0 15 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "1 30 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "2 45 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "3 60 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "4 75 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "\n", - " delegator_portfolios block_number \\\n", - "0 {} 11474009 \n", - "1 {} 11474009 \n", - "2 {'0x9fe0a203e190d87cef6b4b80b24fae73f243b3ea':... 11474307 \n", - "3 {'0x9fe0a203e190d87cef6b4b80b24fae73f243b3ea':... 11474332 \n", - "4 {'0x9fe0a203e190d87cef6b4b80b24fae73f243b3ea':... 11474426 \n", + "0 6 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "1 12 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "2 18 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "3 24 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", + "4 30 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", "\n", - " injected_event_shift simulation subset run substep timestep \\\n", - "0 0 0 0 1 15 1 \n", - "1 0 0 0 1 15 2 \n", - "2 0 0 0 1 15 3 \n", - "3 0 0 0 1 15 4 \n", - "4 0 0 0 1 15 5 \n", + " delegator_portfolios block_number epoch \\\n", + "0 {} 11474009 4 \n", + "1 {} 11474009 4 \n", + "2 {} 11474307 4 \n", + "3 {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':... 11474332 4 \n", + "4 {'0xd776a7306ee6a060cebb46b46d305e88fd39ba84':... 11474426 4 \n", "\n", - " cumulative_indexing_revenue \\\n", - "0 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "1 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "2 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "3 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "4 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "\n", - " cumulative_query_revenue \n", - "0 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "1 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "2 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "3 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... \n", - "4 {'0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e':... " + " injected_event_shift simulation subset run substep timestep \n", + "0 0 0 0 1 6 1 \n", + "1 0 0 0 1 6 2 \n", + "2 0 0 0 1 6 3 \n", + "3 0 0 0 1 6 4 \n", + "4 0 0 0 1 6 5 " ] }, "execution_count": 3, @@ -227,11 +207,24 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "id": "260a79c6-d6b3-400a-93b2-8fe9ee10bb7a", "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "self.id=1, self.shares=Decimal('0E-25'), self.holdings=Decimal('0'), self.undelegated_tokens=0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.indexers.loc[1528]['0x7ab4cf25330ed7277ac7ab59380b68eea68abb0e'].delegators[1]" + ] } ], "metadata": { diff --git a/model/sys_params.py b/model/sys_params.py index 099db8b..83fd446 100644 --- a/model/sys_params.py +++ b/model/sys_params.py @@ -19,7 +19,7 @@ # TODO: check this tax rate out--0% passes tests, 0.005 does not. # delegation tax rate is 0.5% as documented here: https://thegraph.com/docs/delegating#delegation-risks # delegation_tax_rate = [Decimal(0)] -delegation_tax_rate = [Decimal(0.005)] +delegation_tax_rate = [Decimal(0.000)] delegation_leverage = [16] delegator_initial_holdings = [Decimal(10e9)] From 7b2ff769c9b84e79b269b6194d123194f15cd7ae Mon Sep 17 00:00:00 2001 From: matttyb80 Date: Thu, 3 Mar 2022 09:57:22 -0500 Subject: [PATCH 3/3] agent nnotebook start for frd --- getAgent.ipynb | 2 +- model/sys_params.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/getAgent.ipynb b/getAgent.ipynb index 1e41a68..c8e2e54 100644 --- a/getAgent.ipynb +++ b/getAgent.ipynb @@ -243,7 +243,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.5" + "version": "3.8.10" } }, "nbformat": 4, diff --git a/model/sys_params.py b/model/sys_params.py index 83fd446..099db8b 100644 --- a/model/sys_params.py +++ b/model/sys_params.py @@ -19,7 +19,7 @@ # TODO: check this tax rate out--0% passes tests, 0.005 does not. # delegation tax rate is 0.5% as documented here: https://thegraph.com/docs/delegating#delegation-risks # delegation_tax_rate = [Decimal(0)] -delegation_tax_rate = [Decimal(0.000)] +delegation_tax_rate = [Decimal(0.005)] delegation_leverage = [16] delegator_initial_holdings = [Decimal(10e9)]