Created
January 28, 2025 08:33
-
-
Save dalechyn/11b17215ae9ff7b27448477c8ec9e6e0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "id": "1f06d3c8-72c6-4f49-83f7-f255256fbc01", | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "import math\n", | |
| "import pandas as pd\n", | |
| "import numpy as np\n", | |
| "import matplotlib.pyplot as plt" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "id": "3c3e953e-3293-419f-8f3e-5ca818f053dd", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>type</th>\n", | |
| " <th>from</th>\n", | |
| " <th>token_id</th>\n", | |
| " <th>amount_eth</th>\n", | |
| " <th>amount_token</th>\n", | |
| " <th>price</th>\n", | |
| " <th>prev_price</th>\n", | |
| " <th>price_impact</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>sell</td>\n", | |
| " <td>0xb31524b2a0911161015286D71a60156c9D1387d2</td>\n", | |
| " <td>4315</td>\n", | |
| " <td>0.002911</td>\n", | |
| " <td>1.606924e+06</td>\n", | |
| " <td>1.836918e-09</td>\n", | |
| " <td>1.841748e-09</td>\n", | |
| " <td>-0.262213</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>buy</td>\n", | |
| " <td>0xb31524b2a0911161015286D71a60156c9D1387d2</td>\n", | |
| " <td>4315</td>\n", | |
| " <td>0.002956</td>\n", | |
| " <td>1.606924e+06</td>\n", | |
| " <td>1.841748e-09</td>\n", | |
| " <td>0.000000e+00</td>\n", | |
| " <td>0.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>buy</td>\n", | |
| " <td>0x67d1524a4064ED4b0FaEA72B0bB93503F8F70CD9</td>\n", | |
| " <td>4314</td>\n", | |
| " <td>0.141351</td>\n", | |
| " <td>9.768599e+06</td>\n", | |
| " <td>1.500000e-08</td>\n", | |
| " <td>1.395860e-08</td>\n", | |
| " <td>7.460642</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>buy</td>\n", | |
| " <td>0x28D3239cE9D172d8102aEB262E1d40AC65b5379e</td>\n", | |
| " <td>4314</td>\n", | |
| " <td>0.049261</td>\n", | |
| " <td>3.574721e+06</td>\n", | |
| " <td>1.395860e-08</td>\n", | |
| " <td>1.360447e-08</td>\n", | |
| " <td>2.603021</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>buy</td>\n", | |
| " <td>0xc67978F1AF906aaa56cbb3Cd17bf7975FF1e9b8D</td>\n", | |
| " <td>4314</td>\n", | |
| " <td>0.029557</td>\n", | |
| " <td>2.189557e+06</td>\n", | |
| " <td>1.360447e-08</td>\n", | |
| " <td>1.339418e-08</td>\n", | |
| " <td>1.570028</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " type from token_id amount_eth \\\n", | |
| "0 sell 0xb31524b2a0911161015286D71a60156c9D1387d2 4315 0.002911 \n", | |
| "1 buy 0xb31524b2a0911161015286D71a60156c9D1387d2 4315 0.002956 \n", | |
| "2 buy 0x67d1524a4064ED4b0FaEA72B0bB93503F8F70CD9 4314 0.141351 \n", | |
| "3 buy 0x28D3239cE9D172d8102aEB262E1d40AC65b5379e 4314 0.049261 \n", | |
| "4 buy 0xc67978F1AF906aaa56cbb3Cd17bf7975FF1e9b8D 4314 0.029557 \n", | |
| "\n", | |
| " amount_token price prev_price price_impact \n", | |
| "0 1.606924e+06 1.836918e-09 1.841748e-09 -0.262213 \n", | |
| "1 1.606924e+06 1.841748e-09 0.000000e+00 0.000000 \n", | |
| "2 9.768599e+06 1.500000e-08 1.395860e-08 7.460642 \n", | |
| "3 3.574721e+06 1.395860e-08 1.360447e-08 2.603021 \n", | |
| "4 2.189557e+06 1.360447e-08 1.339418e-08 1.570028 " | |
| ] | |
| }, | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "trades = pd.read_csv(\"./beliefs_trades.csv\")\n", | |
| "trades['prev_price'] = trades['prev_price'].fillna(0)\n", | |
| "trades[\"amount_eth\"] = pd.to_numeric(trades[\"amount_eth\"], errors=\"coerce\") # Convert to numeric\n", | |
| "trades[\"amount_token\"] = pd.to_numeric(trades[\"amount_token\"], errors=\"coerce\") # Convert to numeric\n", | |
| "\n", | |
| "trades[\"amount_eth\"] = trades[\"amount_eth\"] / 1e18\n", | |
| "trades[\"amount_token\"] = trades[\"amount_token\"] / 1e18\n", | |
| "trades[\"price_impact\"] = ((trades[\"price\"] - trades[\"prev_price\"]) / trades[\"prev_price\"]) * 100\n", | |
| "trades[\"price_impact\"] = trades[\"price_impact\"].fillna(0)\n", | |
| "trades.replace([np.inf, -np.inf], np.nan, inplace=True)\n", | |
| "trades[\"price_impact\"] = trades[\"price_impact\"].fillna(0)\n", | |
| "trades.head()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "id": "d61e2d98-b5cf-4aea-baab-ac5177495a57", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>from</th>\n", | |
| " <th>total_buys</th>\n", | |
| " <th>total_sells</th>\n", | |
| " <th>avg_buy_impact</th>\n", | |
| " <th>avg_sell_impact</th>\n", | |
| " <th>avg_price_impact</th>\n", | |
| " <th>total_trades</th>\n", | |
| " <th>total_eth_buys</th>\n", | |
| " <th>total_eth_sells</th>\n", | |
| " <th>total_volumes</th>\n", | |
| " <th>net_amount_eth</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>0</th>\n", | |
| " <td>0x000009209E16dDF2e0abE52Fc2301f0f3c9A7D50</td>\n", | |
| " <td>11</td>\n", | |
| " <td>10</td>\n", | |
| " <td>0.388012</td>\n", | |
| " <td>-0.404594</td>\n", | |
| " <td>0.010581</td>\n", | |
| " <td>21</td>\n", | |
| " <td>0.074877</td>\n", | |
| " <td>0.065685</td>\n", | |
| " <td>0.140562</td>\n", | |
| " <td>-0.009191</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1</th>\n", | |
| " <td>0x00009c28A02a48F9c9a033A0C0e0D0BA902b0000</td>\n", | |
| " <td>5</td>\n", | |
| " <td>1</td>\n", | |
| " <td>3.177801</td>\n", | |
| " <td>-2.867535</td>\n", | |
| " <td>2.170245</td>\n", | |
| " <td>6</td>\n", | |
| " <td>0.246305</td>\n", | |
| " <td>0.033266</td>\n", | |
| " <td>0.279572</td>\n", | |
| " <td>-0.213039</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2</th>\n", | |
| " <td>0x0000cf1eDaF40a9350F2B649e19D811B05DBF138</td>\n", | |
| " <td>33</td>\n", | |
| " <td>17</td>\n", | |
| " <td>4.189005</td>\n", | |
| " <td>-6.092702</td>\n", | |
| " <td>0.693225</td>\n", | |
| " <td>50</td>\n", | |
| " <td>1.839730</td>\n", | |
| " <td>0.928669</td>\n", | |
| " <td>2.768399</td>\n", | |
| " <td>-0.911061</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3</th>\n", | |
| " <td>0x0001c8cf59B0FFA553B74166dEef8bD0dc83D687</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0.026010</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.026010</td>\n", | |
| " <td>-0.026010</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4</th>\n", | |
| " <td>0x000531BB101292DaFe09a772596EB02BDa77C75d</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0.203126</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.203126</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0.002425</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.002425</td>\n", | |
| " <td>-0.002425</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>...</th>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>5623</th>\n", | |
| " <td>0xff003f002E911f9DD69675f48B442EADAbb02245</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0</td>\n", | |
| " <td>7.767491</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>7.767491</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0.167488</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.167488</td>\n", | |
| " <td>-0.167488</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>5624</th>\n", | |
| " <td>0xff3E8d9bA776662Ca6Ed1420EE366AFB436d2684</td>\n", | |
| " <td>1</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0.238566</td>\n", | |
| " <td>-0.152028</td>\n", | |
| " <td>0.043269</td>\n", | |
| " <td>2</td>\n", | |
| " <td>0.004926</td>\n", | |
| " <td>0.001978</td>\n", | |
| " <td>0.006904</td>\n", | |
| " <td>-0.002948</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>5625</th>\n", | |
| " <td>0xff522c0Eef889ff8eF7e3D18D58b38E9482b633a</td>\n", | |
| " <td>4</td>\n", | |
| " <td>2</td>\n", | |
| " <td>3.487803</td>\n", | |
| " <td>-2.615740</td>\n", | |
| " <td>1.453289</td>\n", | |
| " <td>6</td>\n", | |
| " <td>0.214286</td>\n", | |
| " <td>0.085089</td>\n", | |
| " <td>0.299375</td>\n", | |
| " <td>-0.129196</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>5626</th>\n", | |
| " <td>0xff90719ce8155624659A235D11DB05CA726b8940</td>\n", | |
| " <td>3</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0.659391</td>\n", | |
| " <td>-2.001555</td>\n", | |
| " <td>-0.005846</td>\n", | |
| " <td>4</td>\n", | |
| " <td>0.028618</td>\n", | |
| " <td>0.029708</td>\n", | |
| " <td>0.058326</td>\n", | |
| " <td>0.001089</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>5627</th>\n", | |
| " <td>0xff962e313a2b467103b5084b770b904531B0E326</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0</td>\n", | |
| " <td>0.138514</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.138514</td>\n", | |
| " <td>1</td>\n", | |
| " <td>0.007882</td>\n", | |
| " <td>0.000000</td>\n", | |
| " <td>0.007882</td>\n", | |
| " <td>-0.007882</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "<p>5628 rows × 11 columns</p>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " from total_buys total_sells \\\n", | |
| "0 0x000009209E16dDF2e0abE52Fc2301f0f3c9A7D50 11 10 \n", | |
| "1 0x00009c28A02a48F9c9a033A0C0e0D0BA902b0000 5 1 \n", | |
| "2 0x0000cf1eDaF40a9350F2B649e19D811B05DBF138 33 17 \n", | |
| "3 0x0001c8cf59B0FFA553B74166dEef8bD0dc83D687 1 0 \n", | |
| "4 0x000531BB101292DaFe09a772596EB02BDa77C75d 1 0 \n", | |
| "... ... ... ... \n", | |
| "5623 0xff003f002E911f9DD69675f48B442EADAbb02245 1 0 \n", | |
| "5624 0xff3E8d9bA776662Ca6Ed1420EE366AFB436d2684 1 1 \n", | |
| "5625 0xff522c0Eef889ff8eF7e3D18D58b38E9482b633a 4 2 \n", | |
| "5626 0xff90719ce8155624659A235D11DB05CA726b8940 3 1 \n", | |
| "5627 0xff962e313a2b467103b5084b770b904531B0E326 1 0 \n", | |
| "\n", | |
| " avg_buy_impact avg_sell_impact avg_price_impact total_trades \\\n", | |
| "0 0.388012 -0.404594 0.010581 21 \n", | |
| "1 3.177801 -2.867535 2.170245 6 \n", | |
| "2 4.189005 -6.092702 0.693225 50 \n", | |
| "3 0.000000 0.000000 0.000000 1 \n", | |
| "4 0.203126 0.000000 0.203126 1 \n", | |
| "... ... ... ... ... \n", | |
| "5623 7.767491 0.000000 7.767491 1 \n", | |
| "5624 0.238566 -0.152028 0.043269 2 \n", | |
| "5625 3.487803 -2.615740 1.453289 6 \n", | |
| "5626 0.659391 -2.001555 -0.005846 4 \n", | |
| "5627 0.138514 0.000000 0.138514 1 \n", | |
| "\n", | |
| " total_eth_buys total_eth_sells total_volumes net_amount_eth \n", | |
| "0 0.074877 0.065685 0.140562 -0.009191 \n", | |
| "1 0.246305 0.033266 0.279572 -0.213039 \n", | |
| "2 1.839730 0.928669 2.768399 -0.911061 \n", | |
| "3 0.026010 0.000000 0.026010 -0.026010 \n", | |
| "4 0.002425 0.000000 0.002425 -0.002425 \n", | |
| "... ... ... ... ... \n", | |
| "5623 0.167488 0.000000 0.167488 -0.167488 \n", | |
| "5624 0.004926 0.001978 0.006904 -0.002948 \n", | |
| "5625 0.214286 0.085089 0.299375 -0.129196 \n", | |
| "5626 0.028618 0.029708 0.058326 0.001089 \n", | |
| "5627 0.007882 0.000000 0.007882 -0.007882 \n", | |
| "\n", | |
| "[5628 rows x 11 columns]" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# Aggregate metrics for each trader\n", | |
| "trader_metrics = trades.groupby(\"from\").agg(\n", | |
| " total_buys=(\"type\", lambda x: (x == \"buy\").sum()),\n", | |
| " total_sells=(\"type\", lambda x: (x == \"sell\").sum()),\n", | |
| " avg_buy_impact=(\"price_impact\", lambda x: x[trades[\"type\"] == \"buy\"].mean() if len(x[trades[\"type\"] == \"buy\"]) > 0 else 0),\n", | |
| " avg_sell_impact=(\"price_impact\", lambda x: x[trades[\"type\"] == \"sell\"].mean() if len(x[trades[\"type\"] == \"sell\"]) > 0 else 0),\n", | |
| " avg_price_impact=(\"price_impact\", \"mean\"),\n", | |
| " total_trades=(\"type\", \"count\"),\n", | |
| " total_eth_buys=(\"amount_eth\", lambda x: x[trades[\"type\"] == \"buy\"].sum()),\n", | |
| " total_eth_sells=(\"amount_eth\", lambda x: x[trades[\"type\"] == \"sell\"].sum()),\n", | |
| " total_volumes=(\"amount_eth\", lambda x: x.sum())\n", | |
| ").reset_index()\n", | |
| "\n", | |
| "trader_metrics[\"net_amount_eth\"] = trader_metrics[\"total_eth_sells\"] - trader_metrics[\"total_eth_buys\"]\n", | |
| "trader_metrics" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "id": "781cdfd7-3716-4a1b-bfdb-9810dd0b2106", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/latex": [ | |
| "$\\displaystyle S = \\frac{log(x + 1)}{log(x + k)}\\newline\\text{;} \\space\\space x_{initial} = 0.3 \\space \\text{;} \\space k=2 \\newline \\text{;} \\space x = x_{initial} + \\sum_{i=0}^{i}w_i*m_i \\space \\text{-- where} \\space w_i \\space \\text{is multiplier for metric} \\space m_i$" | |
| ], | |
| "text/plain": [ | |
| "<IPython.core.display.Math object>" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "from IPython.display import Math\n", | |
| "Math(r'S = \\frac{log(x + 1)}{log(x + k)}\\newline\\text{;} \\space\\space x_{initial} = 0.3 \\space \\text{;} \\space k=2 \\newline \\text{;} \\space x = x_{initial} + \\sum_{i=0}^{i}w_i*m_i \\space \\text{-- where} \\space w_i \\space \\text{is multiplier for metric} \\space m_i')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 22, | |
| "id": "4015a36c-9dc5-454a-8909-67afc5e9926b", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>from</th>\n", | |
| " <th>total_buys</th>\n", | |
| " <th>total_sells</th>\n", | |
| " <th>avg_buy_impact</th>\n", | |
| " <th>avg_sell_impact</th>\n", | |
| " <th>avg_price_impact</th>\n", | |
| " <th>total_trades</th>\n", | |
| " <th>total_eth_buys</th>\n", | |
| " <th>total_eth_sells</th>\n", | |
| " <th>total_volumes</th>\n", | |
| " <th>net_amount_eth</th>\n", | |
| " <th>score_x</th>\n", | |
| " <th>score</th>\n", | |
| " <th>pump_reward</th>\n", | |
| " <th>dump_penalty</th>\n", | |
| " <th>volumes_reward</th>\n", | |
| " <th>score_range</th>\n", | |
| " <th>rag_income_penalty</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>5069</th>\n", | |
| " <td>0xca3BDaC3C6D6C7a8303D9475f251DB8D086EA1ed</td>\n", | |
| " <td>19</td>\n", | |
| " <td>20</td>\n", | |
| " <td>2.259534</td>\n", | |
| " <td>-2.351281</td>\n", | |
| " <td>-0.104986</td>\n", | |
| " <td>39</td>\n", | |
| " <td>0.588177</td>\n", | |
| " <td>0.771287</td>\n", | |
| " <td>1.359464</td>\n", | |
| " <td>0.183110</td>\n", | |
| " <td>-0.598221</td>\n", | |
| " <td>0.010000</td>\n", | |
| " <td>0.429312</td>\n", | |
| " <td>-0.470256</td>\n", | |
| " <td>0.973821</td>\n", | |
| " <td>0.5-0.6</td>\n", | |
| " <td>-1.831097</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3104</th>\n", | |
| " <td>0x8eF6d128c4De128B8ce45b442CCD6192E31f4B8c</td>\n", | |
| " <td>1</td>\n", | |
| " <td>1</td>\n", | |
| " <td>4.020120</td>\n", | |
| " <td>-4.125199</td>\n", | |
| " <td>-0.052539</td>\n", | |
| " <td>2</td>\n", | |
| " <td>0.049261</td>\n", | |
| " <td>0.110864</td>\n", | |
| " <td>0.160125</td>\n", | |
| " <td>0.061602</td>\n", | |
| " <td>-0.212383</td>\n", | |
| " <td>0.010000</td>\n", | |
| " <td>0.040201</td>\n", | |
| " <td>-0.041252</td>\n", | |
| " <td>0.104693</td>\n", | |
| " <td>0.2-0.3</td>\n", | |
| " <td>-0.616025</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1766</th>\n", | |
| " <td>0x50BfCc51d40b3de470Ee928F9207f816c1ddbeBA</td>\n", | |
| " <td>16</td>\n", | |
| " <td>16</td>\n", | |
| " <td>3.589905</td>\n", | |
| " <td>-3.750553</td>\n", | |
| " <td>-0.080324</td>\n", | |
| " <td>32</td>\n", | |
| " <td>0.686845</td>\n", | |
| " <td>0.838160</td>\n", | |
| " <td>1.525005</td>\n", | |
| " <td>0.151316</td>\n", | |
| " <td>-0.132935</td>\n", | |
| " <td>0.010000</td>\n", | |
| " <td>0.574385</td>\n", | |
| " <td>-0.600089</td>\n", | |
| " <td>1.105925</td>\n", | |
| " <td>0.6-0.7</td>\n", | |
| " <td>-1.513156</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1383</th>\n", | |
| " <td>0x3e8E2f4241CDddcfC1839f31Cc263aC69E1BAdBc</td>\n", | |
| " <td>3</td>\n", | |
| " <td>4</td>\n", | |
| " <td>3.245920</td>\n", | |
| " <td>-2.837900</td>\n", | |
| " <td>-0.230549</td>\n", | |
| " <td>7</td>\n", | |
| " <td>0.118227</td>\n", | |
| " <td>0.185125</td>\n", | |
| " <td>0.303352</td>\n", | |
| " <td>0.066899</td>\n", | |
| " <td>-0.174336</td>\n", | |
| " <td>0.010000</td>\n", | |
| " <td>0.097378</td>\n", | |
| " <td>-0.113516</td>\n", | |
| " <td>0.210789</td>\n", | |
| " <td>0.3-0.4</td>\n", | |
| " <td>-0.668987</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>1254</th>\n", | |
| " <td>0x394d3d7E0A0c3692C911a05F156b4f653a99a9Ce</td>\n", | |
| " <td>20</td>\n", | |
| " <td>20</td>\n", | |
| " <td>3.980496</td>\n", | |
| " <td>-4.324130</td>\n", | |
| " <td>-0.171817</td>\n", | |
| " <td>40</td>\n", | |
| " <td>1.312775</td>\n", | |
| " <td>1.708905</td>\n", | |
| " <td>3.021680</td>\n", | |
| " <td>0.396129</td>\n", | |
| " <td>-1.562792</td>\n", | |
| " <td>0.010000</td>\n", | |
| " <td>0.796099</td>\n", | |
| " <td>-0.864826</td>\n", | |
| " <td>2.167228</td>\n", | |
| " <td>0.7-0.8</td>\n", | |
| " <td>-3.961293</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>...</th>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " <td>...</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3136</th>\n", | |
| " <td>0x90cfab7c0DE18EA5F534e9e19484B96a02511774</td>\n", | |
| " <td>171</td>\n", | |
| " <td>141</td>\n", | |
| " <td>3.286975</td>\n", | |
| " <td>-3.879429</td>\n", | |
| " <td>0.048312</td>\n", | |
| " <td>312</td>\n", | |
| " <td>8.420152</td>\n", | |
| " <td>8.242707</td>\n", | |
| " <td>16.662859</td>\n", | |
| " <td>-0.177445</td>\n", | |
| " <td>10.450733</td>\n", | |
| " <td>0.966799</td>\n", | |
| " <td>5.620728</td>\n", | |
| " <td>-5.469995</td>\n", | |
| " <td>10.000000</td>\n", | |
| " <td>0.9-1</td>\n", | |
| " <td>-0.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>4784</th>\n", | |
| " <td>0xb52753F92dbbECC749b1fc10A3CF1Dafe9E75F89</td>\n", | |
| " <td>131</td>\n", | |
| " <td>84</td>\n", | |
| " <td>3.623467</td>\n", | |
| " <td>-4.985959</td>\n", | |
| " <td>0.259784</td>\n", | |
| " <td>215</td>\n", | |
| " <td>7.199907</td>\n", | |
| " <td>6.151507</td>\n", | |
| " <td>13.351413</td>\n", | |
| " <td>-1.048400</td>\n", | |
| " <td>10.858536</td>\n", | |
| " <td>0.968301</td>\n", | |
| " <td>4.746741</td>\n", | |
| " <td>-4.188205</td>\n", | |
| " <td>10.000000</td>\n", | |
| " <td>0.9-1</td>\n", | |
| " <td>-0.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>731</th>\n", | |
| " <td>0x21D80FB206B8C4661c78180De86a6D61821fB1D7</td>\n", | |
| " <td>85</td>\n", | |
| " <td>66</td>\n", | |
| " <td>4.907757</td>\n", | |
| " <td>-5.379777</td>\n", | |
| " <td>0.411219</td>\n", | |
| " <td>151</td>\n", | |
| " <td>8.051123</td>\n", | |
| " <td>7.383974</td>\n", | |
| " <td>15.435097</td>\n", | |
| " <td>-0.667148</td>\n", | |
| " <td>10.920941</td>\n", | |
| " <td>0.968520</td>\n", | |
| " <td>4.171594</td>\n", | |
| " <td>-3.550653</td>\n", | |
| " <td>10.000000</td>\n", | |
| " <td>0.9-1</td>\n", | |
| " <td>-0.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>5099</th>\n", | |
| " <td>0xcf002Ea96Dc7e4c9DC38b4771F618b329DF234a3</td>\n", | |
| " <td>121</td>\n", | |
| " <td>90</td>\n", | |
| " <td>4.746825</td>\n", | |
| " <td>-5.640485</td>\n", | |
| " <td>0.316219</td>\n", | |
| " <td>211</td>\n", | |
| " <td>8.399679</td>\n", | |
| " <td>7.936275</td>\n", | |
| " <td>16.335954</td>\n", | |
| " <td>-0.463404</td>\n", | |
| " <td>10.967223</td>\n", | |
| " <td>0.968681</td>\n", | |
| " <td>5.743659</td>\n", | |
| " <td>-5.076436</td>\n", | |
| " <td>10.000000</td>\n", | |
| " <td>0.9-1</td>\n", | |
| " <td>-0.000000</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3025</th>\n", | |
| " <td>0x8CB4A3a416633ABceE5322d9aC8bE2C6089AAAAA</td>\n", | |
| " <td>123</td>\n", | |
| " <td>98</td>\n", | |
| " <td>4.347880</td>\n", | |
| " <td>-4.742025</td>\n", | |
| " <td>0.317063</td>\n", | |
| " <td>221</td>\n", | |
| " <td>8.433002</td>\n", | |
| " <td>7.084175</td>\n", | |
| " <td>15.517177</td>\n", | |
| " <td>-1.348827</td>\n", | |
| " <td>11.000708</td>\n", | |
| " <td>0.968796</td>\n", | |
| " <td>5.347893</td>\n", | |
| " <td>-4.647184</td>\n", | |
| " <td>10.000000</td>\n", | |
| " <td>0.9-1</td>\n", | |
| " <td>-0.000000</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "<p>5628 rows × 18 columns</p>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " from total_buys total_sells \\\n", | |
| "5069 0xca3BDaC3C6D6C7a8303D9475f251DB8D086EA1ed 19 20 \n", | |
| "3104 0x8eF6d128c4De128B8ce45b442CCD6192E31f4B8c 1 1 \n", | |
| "1766 0x50BfCc51d40b3de470Ee928F9207f816c1ddbeBA 16 16 \n", | |
| "1383 0x3e8E2f4241CDddcfC1839f31Cc263aC69E1BAdBc 3 4 \n", | |
| "1254 0x394d3d7E0A0c3692C911a05F156b4f653a99a9Ce 20 20 \n", | |
| "... ... ... ... \n", | |
| "3136 0x90cfab7c0DE18EA5F534e9e19484B96a02511774 171 141 \n", | |
| "4784 0xb52753F92dbbECC749b1fc10A3CF1Dafe9E75F89 131 84 \n", | |
| "731 0x21D80FB206B8C4661c78180De86a6D61821fB1D7 85 66 \n", | |
| "5099 0xcf002Ea96Dc7e4c9DC38b4771F618b329DF234a3 121 90 \n", | |
| "3025 0x8CB4A3a416633ABceE5322d9aC8bE2C6089AAAAA 123 98 \n", | |
| "\n", | |
| " avg_buy_impact avg_sell_impact avg_price_impact total_trades \\\n", | |
| "5069 2.259534 -2.351281 -0.104986 39 \n", | |
| "3104 4.020120 -4.125199 -0.052539 2 \n", | |
| "1766 3.589905 -3.750553 -0.080324 32 \n", | |
| "1383 3.245920 -2.837900 -0.230549 7 \n", | |
| "1254 3.980496 -4.324130 -0.171817 40 \n", | |
| "... ... ... ... ... \n", | |
| "3136 3.286975 -3.879429 0.048312 312 \n", | |
| "4784 3.623467 -4.985959 0.259784 215 \n", | |
| "731 4.907757 -5.379777 0.411219 151 \n", | |
| "5099 4.746825 -5.640485 0.316219 211 \n", | |
| "3025 4.347880 -4.742025 0.317063 221 \n", | |
| "\n", | |
| " total_eth_buys total_eth_sells total_volumes net_amount_eth \\\n", | |
| "5069 0.588177 0.771287 1.359464 0.183110 \n", | |
| "3104 0.049261 0.110864 0.160125 0.061602 \n", | |
| "1766 0.686845 0.838160 1.525005 0.151316 \n", | |
| "1383 0.118227 0.185125 0.303352 0.066899 \n", | |
| "1254 1.312775 1.708905 3.021680 0.396129 \n", | |
| "... ... ... ... ... \n", | |
| "3136 8.420152 8.242707 16.662859 -0.177445 \n", | |
| "4784 7.199907 6.151507 13.351413 -1.048400 \n", | |
| "731 8.051123 7.383974 15.435097 -0.667148 \n", | |
| "5099 8.399679 7.936275 16.335954 -0.463404 \n", | |
| "3025 8.433002 7.084175 15.517177 -1.348827 \n", | |
| "\n", | |
| " score_x score pump_reward dump_penalty volumes_reward \\\n", | |
| "5069 -0.598221 0.010000 0.429312 -0.470256 0.973821 \n", | |
| "3104 -0.212383 0.010000 0.040201 -0.041252 0.104693 \n", | |
| "1766 -0.132935 0.010000 0.574385 -0.600089 1.105925 \n", | |
| "1383 -0.174336 0.010000 0.097378 -0.113516 0.210789 \n", | |
| "1254 -1.562792 0.010000 0.796099 -0.864826 2.167228 \n", | |
| "... ... ... ... ... ... \n", | |
| "3136 10.450733 0.966799 5.620728 -5.469995 10.000000 \n", | |
| "4784 10.858536 0.968301 4.746741 -4.188205 10.000000 \n", | |
| "731 10.920941 0.968520 4.171594 -3.550653 10.000000 \n", | |
| "5099 10.967223 0.968681 5.743659 -5.076436 10.000000 \n", | |
| "3025 11.000708 0.968796 5.347893 -4.647184 10.000000 \n", | |
| "\n", | |
| " score_range rag_income_penalty \n", | |
| "5069 0.5-0.6 -1.831097 \n", | |
| "3104 0.2-0.3 -0.616025 \n", | |
| "1766 0.6-0.7 -1.513156 \n", | |
| "1383 0.3-0.4 -0.668987 \n", | |
| "1254 0.7-0.8 -3.961293 \n", | |
| "... ... ... \n", | |
| "3136 0.9-1 -0.000000 \n", | |
| "4784 0.9-1 -0.000000 \n", | |
| "731 0.9-1 -0.000000 \n", | |
| "5099 0.9-1 -0.000000 \n", | |
| "3025 0.9-1 -0.000000 \n", | |
| "\n", | |
| "[5628 rows x 18 columns]" | |
| ] | |
| }, | |
| "execution_count": 22, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "K = 2\n", | |
| "MAX_X = 50 # approximatelly 0.995 score, which coule be rounded up to 1\n", | |
| "MIN_X = 0\n", | |
| "def apply_score_log(x):\n", | |
| " if x <= MIN_X:\n", | |
| " return 0.01\n", | |
| " if x >= MAX_X:\n", | |
| " return 1\n", | |
| " return math.log(x + 1) / math.log(x + K)\n", | |
| "\n", | |
| "\n", | |
| "initial_x = 0.3\n", | |
| "trader_metrics[\"score_x\"] = initial_x\n", | |
| "\n", | |
| "# REWARDING PUMPS: avg_buy_impact * buys_amount\n", | |
| "MAX_PUMP_REWARD = 10\n", | |
| "trader_metrics[\"pump_reward\"] = trader_metrics[\"avg_buy_impact\"] * trader_metrics[\"total_buys\"] / 100\n", | |
| "trader_metrics[\"pump_reward\"] = trader_metrics[\"pump_reward\"].map(lambda x: min(x, MAX_PUMP_REWARD))\n", | |
| "\n", | |
| "# PUNISHING DUMPS: avg_sell_impact * sells_amount\n", | |
| "trader_metrics[\"dump_penalty\"] = trader_metrics[\"avg_sell_impact\"] * trader_metrics[\"total_sells\"] / 100\n", | |
| "\n", | |
| "# REWARDING VOLUMES: buys_volume + 0.5 * sells_volume\n", | |
| "MAX_VOLUMES_REWARDS = 10\n", | |
| "trader_metrics[\"volumes_reward\"] = trader_metrics[\"total_eth_buys\"] + 0.5 * trader_metrics[\"total_eth_sells\"]\n", | |
| "trader_metrics[\"volumes_reward\"] = trader_metrics[\"volumes_reward\"].map(lambda x: min([x, MAX_VOLUMES_REWARDS]))\n", | |
| "\n", | |
| "# PUNISHING CURVE EARNINGS\n", | |
| "trader_metrics[\"rag_income_penalty\"] = -10 * trader_metrics[\"net_amount_eth\"].map(lambda x: max([x, 0]))\n", | |
| "\n", | |
| "trader_metrics[\"score_x\"] += trader_metrics[\"pump_reward\"] + trader_metrics[\"dump_penalty\"] + trader_metrics[\"volumes_reward\"] + trader_metrics[\"rag_income_penalty\"]\n", | |
| "\n", | |
| "trader_metrics[\"score\"] = trader_metrics[\"score_x\"].map(apply_score_log)\n", | |
| "trader_metrics.sort_values(\"score\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 23, | |
| "id": "d7d39fa4-519e-4260-8a06-4f99f4724f05", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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3PI52otIaU2MqlSpkmzZskWOHj0a2Ed7NGlwUqxYscA+ixcvDjmO7qOPAwAAJIlts9Gnn34qU6dONWPBaK6KLpqXorSZ6I033pBNmzbJb7/9Jl9//bW0bNnS9FAqVaqU2Ue7XWug0qJFC/nxxx9N1+h+/fqZY7tNQDpuzJ49e6Rnz56yY8cOGTNmjMyYMUO6desWH38DAADg527UOihdVCZNmiStW7eWAwcOyAsvvGByY3RsGE2ibdiwoQlQgrtC7du3Tzp16mQGq0ubNq20atVKBg8eLMmS/V9Kjm7TgOXnn382zVSvvfaaeY247oYFxCe6UQNA7MT09/uOxoHxMgIYeAEBDAB4cBwYAACAhEAAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAArEMAAwAA/B3ADBo0SB566CFJnz69ZM+eXRo0aCA7d+4M2efSpUvSuXNnyZIli6RLl04aNWokR44cCdln//79UqdOHUmTJo05To8ePeTatWsh+yxdulTKli0rKVOmlEKFCsnkyZPvpJwAACCxBjDLli0zwcnatWtl0aJFcvXqValVq5acP38+sE+3bt3km2++kS+++MLsf/DgQXnmmWcC269fv26ClytXrsjq1atlypQpJjjp379/YJ+9e/eafapWrSqbN2+Wl156Sdq1aycLFiyIq3IDAACLhTmO49zuk48dO2ZqUDRQqVKlipw+fVqyZcsmU6dOlWeffdbss2PHDilatKisWbNGKlasKPPmzZO6deuawCZHjhxmn3HjxkmvXr3M8VKkSGHuz507V7Zu3Rp4rSZNmsipU6dk/vz5MTq3M2fOSIYMGcw5hYeH324RgTsy+Ifj8f4avctkjffXAIC7Jaa/33eUA6MHV5kzZza3mzZtMrUyNWrUCOxTpEgRyZcvnwlglN6WLFkyELyoiIgIc8Lbtm0L7BN8DHcf9xhRuXz5sjlG8AIAAPzptgOYGzdumKadRx99VEqUKGEeO3z4sKlByZgxY8i+GqzoNnef4ODF3e5uu9k+GpRcvHgx2vwcjdjcJW/evLdbNAAA4NcARnNhtIln2rRp4gV9+vQxNULucuDAgYQ+JQAAEE+S3c6TunTpInPmzJHly5dLnjx5Ao/nzJnTJOdqrkpwLYz2QtJt7j7r168POZ7bSyl4n8g9l3Rd28JSp04d5TlpbyVdAACA/8WqBkbzfTV4mTVrlixZskQKFCgQsr1cuXKSPHlyWbx4ceAx7Wat3aYrVapk1vV2y5YtcvTo0cA+2qNJg5NixYoF9gk+hruPewwAAJC4JYtts5H2MPrqq6/MWDBuzormnGjNiN62bdtWunfvbhJ7NSjp2rWrCTy0B5LSbtcaqLRo0UKGDh1qjtGvXz9zbLcGpWPHjvL+++9Lz549pU2bNiZYmjFjhumZBAAAEKsamLFjx5r8kieeeEJy5coVWKZPnx7YZ8SIEaabtA5gp12rtTlo5syZge1JkyY1zU96q4HNCy+8IC1btpSBAwcG9tGaHQ1WtNblwQcflH//+98yYcIE0xMJAADgjsaB8TLGgYEXMA4MAHhwHBgAAICEQAADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAACsQwADAAD8H8AsX75c6tWrJ7lz55awsDCZPXt2yPbWrVubx4OXJ598MmSfEydOSPPmzSU8PFwyZswobdu2lXPnzoXs89NPP0nlypUlVapUkjdvXhk6dOjtlhEAACT2AOb8+fPy4IMPyujRo6PdRwOWQ4cOBZbPP/88ZLsGL9u2bZNFixbJnDlzTFDUoUOHwPYzZ85IrVq1JH/+/LJp0yYZNmyYDBgwQMaPHx/b0wUAAD6ULLZPqF27tlluJmXKlJIzZ84ot23fvl3mz58vGzZskPLly5vH3nvvPXnqqafknXfeMTU7n332mVy5ckUmTpwoKVKkkOLFi8vmzZtl+PDhIYEOAABInOIlB2bp0qWSPXt2KVy4sHTq1En+/PPPwLY1a9aYZiM3eFE1atSQJEmSyLp16wL7VKlSxQQvroiICNm5c6ecPHkyyte8fPmyqbkJXgAAgD/FeQCjzUcff/yxLF68WIYMGSLLli0zNTbXr1832w8fPmyCm2DJkiWTzJkzm23uPjly5AjZx11394ls0KBBkiFDhsCieTMAAMCfYt2EdCtNmjQJ3C9ZsqSUKlVKChYsaGplqlevLvGlT58+0r1798C61sAQxAAA4E/x3o36vvvuk6xZs8ru3bvNuubGHD16NGSfa9eumZ5Jbt6M3h45ciRkH3c9utwazbvRXk3BCwAA8Kd4D2B+//13kwOTK1cus16pUiU5deqU6V3kWrJkidy4cUMqVKgQ2Ed7Jl29ejWwj/ZY0pyaTJkyxfcpAwAAvwUwOl6L9gjSRe3du9fc379/v9nWo0cPWbt2rfz2228mD6Z+/fpSqFAhk4SrihYtavJk2rdvL+vXr5dVq1ZJly5dTNOT9kBSzZo1Mwm8Oj6MdreePn26jBo1KqSJCAAAJF6xDmA2btwoZcqUMYvSoELv9+/fX5ImTWoGoHv66aflgQceMAFIuXLlZMWKFaaJx6XdpIsUKWJyYrT79GOPPRYyxosm4S5cuNAER/r8l19+2RyfLtQAAECFOY7j+PFPoUm8GgidPn2afBgkmME/HI/31+hdJmu8vwYAeO33m7mQAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACAdQhgAACA/wOY5cuXS7169SR37twSFhYms2fPDtnuOI70799fcuXKJalTp5YaNWrIrl27QvY5ceKENG/eXMLDwyVjxozStm1bOXfu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", | |
| "text/plain": [ | |
| "<Figure size 640x480 with 1 Axes>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "# Define score bins and labels\n", | |
| "bins = [0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]\n", | |
| "labels = [\"0-0.1\", \"0.1-0.2\", \"0.2-0.3\", \"0.3-0.4\", \"0.4-0.5\", \"0.5-0.6\", \"0.6-0.7\", \"0.7-0.8\", \"0.8-0.9\", \"0.9-1\"]\n", | |
| "\n", | |
| "# Add a column with score ranges\n", | |
| "trader_metrics[\"score_range\"] = pd.cut(trader_metrics[\"score\"], bins=bins, labels=labels, include_lowest=True)\n", | |
| "\n", | |
| "# Count users in each range\n", | |
| "score_distribution = trader_metrics[\"score_range\"].value_counts().sort_index().reset_index()\n", | |
| "score_distribution.columns = [\"score_range\", \"count\"]\n", | |
| "\n", | |
| "# Plot a bar chart\n", | |
| "score_distribution.plot(x='score_range', y='count', kind='bar', color='skyblue', legend=False)\n", | |
| "\n", | |
| "# Add labels above the bars\n", | |
| "for index, value in enumerate(score_distribution['count']):\n", | |
| " plt.text(index, value + 1, str(value), ha='center', va='bottom')" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 25, | |
| "id": "7d5da141-3130-4620-aff1-d801164a6293", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<div>\n", | |
| "<style scoped>\n", | |
| " .dataframe tbody tr th:only-of-type {\n", | |
| " vertical-align: middle;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe tbody tr th {\n", | |
| " vertical-align: top;\n", | |
| " }\n", | |
| "\n", | |
| " .dataframe thead th {\n", | |
| " text-align: right;\n", | |
| " }\n", | |
| "</style>\n", | |
| "<table border=\"1\" class=\"dataframe\">\n", | |
| " <thead>\n", | |
| " <tr style=\"text-align: right;\">\n", | |
| " <th></th>\n", | |
| " <th>from</th>\n", | |
| " <th>total_buys</th>\n", | |
| " <th>total_sells</th>\n", | |
| " <th>avg_buy_impact</th>\n", | |
| " <th>avg_sell_impact</th>\n", | |
| " <th>avg_price_impact</th>\n", | |
| " <th>total_trades</th>\n", | |
| " <th>total_eth_buys</th>\n", | |
| " <th>total_eth_sells</th>\n", | |
| " <th>total_volumes</th>\n", | |
| " <th>net_amount_eth</th>\n", | |
| " <th>score_x</th>\n", | |
| " <th>score</th>\n", | |
| " <th>pump_reward</th>\n", | |
| " <th>dump_penalty</th>\n", | |
| " <th>volumes_reward</th>\n", | |
| " <th>score_range</th>\n", | |
| " <th>rag_income_penalty</th>\n", | |
| " </tr>\n", | |
| " </thead>\n", | |
| " <tbody>\n", | |
| " <tr>\n", | |
| " <th>84</th>\n", | |
| " <td>0x0332094F8888b73631cB0fFC292cdF0e725f2D8F</td>\n", | |
| " <td>129</td>\n", | |
| " <td>123</td>\n", | |
| " <td>3.404317</td>\n", | |
| " <td>-4.334334</td>\n", | |
| " <td>-0.372882</td>\n", | |
| " <td>252</td>\n", | |
| " <td>7.134089</td>\n", | |
| " <td>8.754583</td>\n", | |
| " <td>15.888672</td>\n", | |
| " <td>1.620495</td>\n", | |
| " <td>-6.844608</td>\n", | |
| " <td>0.01</td>\n", | |
| " <td>4.391569</td>\n", | |
| " <td>-5.331231</td>\n", | |
| " <td>10.000000</td>\n", | |
| " <td>0-0.1</td>\n", | |
| " <td>-16.204947</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>211</th>\n", | |
| " <td>0x096c12946CB03504649D3f7bE321e338D0C24EdC</td>\n", | |
| " <td>97</td>\n", | |
| " <td>94</td>\n", | |
| " <td>3.754442</td>\n", | |
| " <td>-4.836488</td>\n", | |
| " <td>-0.473555</td>\n", | |
| " <td>191</td>\n", | |
| " <td>5.151973</td>\n", | |
| " <td>6.696058</td>\n", | |
| " <td>11.848031</td>\n", | |
| " <td>1.544085</td>\n", | |
| " <td>-7.545335</td>\n", | |
| " <td>0.01</td>\n", | |
| " <td>3.641809</td>\n", | |
| " <td>-4.546299</td>\n", | |
| " <td>8.500002</td>\n", | |
| " <td>0-0.1</td>\n", | |
| " <td>-15.440847</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>2502</th>\n", | |
| " <td>0x72B5F1541FACADa777067032bB6F7753DC6Fa856</td>\n", | |
| " <td>90</td>\n", | |
| " <td>86</td>\n", | |
| " <td>2.684763</td>\n", | |
| " <td>-4.334279</td>\n", | |
| " <td>-0.744996</td>\n", | |
| " <td>176</td>\n", | |
| " <td>3.847890</td>\n", | |
| " <td>4.913964</td>\n", | |
| " <td>8.761854</td>\n", | |
| " <td>1.066074</td>\n", | |
| " <td>-5.367061</td>\n", | |
| " <td>0.01</td>\n", | |
| " <td>2.416287</td>\n", | |
| " <td>-3.727480</td>\n", | |
| " <td>6.304872</td>\n", | |
| " <td>0-0.1</td>\n", | |
| " <td>-10.660740</td>\n", | |
| " </tr>\n", | |
| " <tr>\n", | |
| " <th>3428</th>\n", | |
| " <td>0x9F9B08F3568e2Ffef853A32A575BC8497D8EcCd6</td>\n", | |
| " <td>189</td>\n", | |
| " <td>181</td>\n", | |
| " <td>2.396047</td>\n", | |
| " <td>-3.920435</td>\n", | |
| " <td>-0.693908</td>\n", | |
| " <td>370</td>\n", | |
| " <td>8.762679</td>\n", | |
| " <td>10.006946</td>\n", | |
| " <td>18.769625</td>\n", | |
| " <td>1.244267</td>\n", | |
| " <td>-4.710127</td>\n", | |
| " <td>0.01</td>\n", | |
| " <td>4.528528</td>\n", | |
| " <td>-7.095987</td>\n", | |
| " <td>10.000000</td>\n", | |
| " <td>0-0.1</td>\n", | |
| " <td>-12.442667</td>\n", | |
| " </tr>\n", | |
| " </tbody>\n", | |
| "</table>\n", | |
| "</div>" | |
| ], | |
| "text/plain": [ | |
| " from total_buys total_sells \\\n", | |
| "84 0x0332094F8888b73631cB0fFC292cdF0e725f2D8F 129 123 \n", | |
| "211 0x096c12946CB03504649D3f7bE321e338D0C24EdC 97 94 \n", | |
| "2502 0x72B5F1541FACADa777067032bB6F7753DC6Fa856 90 86 \n", | |
| "3428 0x9F9B08F3568e2Ffef853A32A575BC8497D8EcCd6 189 181 \n", | |
| "\n", | |
| " avg_buy_impact avg_sell_impact avg_price_impact total_trades \\\n", | |
| "84 3.404317 -4.334334 -0.372882 252 \n", | |
| "211 3.754442 -4.836488 -0.473555 191 \n", | |
| "2502 2.684763 -4.334279 -0.744996 176 \n", | |
| "3428 2.396047 -3.920435 -0.693908 370 \n", | |
| "\n", | |
| " total_eth_buys total_eth_sells total_volumes net_amount_eth \\\n", | |
| "84 7.134089 8.754583 15.888672 1.620495 \n", | |
| "211 5.151973 6.696058 11.848031 1.544085 \n", | |
| "2502 3.847890 4.913964 8.761854 1.066074 \n", | |
| "3428 8.762679 10.006946 18.769625 1.244267 \n", | |
| "\n", | |
| " score_x score pump_reward dump_penalty volumes_reward score_range \\\n", | |
| "84 -6.844608 0.01 4.391569 -5.331231 10.000000 0-0.1 \n", | |
| "211 -7.545335 0.01 3.641809 -4.546299 8.500002 0-0.1 \n", | |
| "2502 -5.367061 0.01 2.416287 -3.727480 6.304872 0-0.1 \n", | |
| "3428 -4.710127 0.01 4.528528 -7.095987 10.000000 0-0.1 \n", | |
| "\n", | |
| " rag_income_penalty \n", | |
| "84 -16.204947 \n", | |
| "211 -15.440847 \n", | |
| "2502 -10.660740 \n", | |
| "3428 -12.442667 " | |
| ] | |
| }, | |
| "execution_count": 25, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "trader_metrics[trader_metrics[\"net_amount_eth\"] > 1]" | |
| ] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "launchpad-score-research", | |
| "language": "python", | |
| "name": "launchpad-score-research" | |
| }, | |
| "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.12.7" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 5 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment