{
  "fetched_at": "2026-10-24T17:18:03Z",
  "source_url": "https://www.kaggle.com/competitions/elemeno-sfhacks/data",
  "pages": [
    {
      "name": "data-description",
      "content": "We provide a sample of the dataset attached in this competition, we recommend that you use the sample just for exploration. \n\nRemember, in real-life you will rarely deal with CSV files if you're building a data product. \n\nThe complete dataset, that should be imported to your Elemeno ML Ops account is publicly available on Big Query. The dataset name is `elemeno-public.sfhacks.eth_nft_transactions`\n\n## Files\n\n*   **transactions_sample.csv** - the sample dataset\n*   **sample_submission.csv** - a sample submission file in the correct format\n\n## Columns\n\n* token_address\t| STRING | The ERC721 smart contract address\n* from_address\t| STRING\t| The originating Ethereum wallet address\n* to_address\t| STRING\t| The destination Ethereum wallet address\t\n* transaction_value\t| NUMERIC\t| The transaction value in WEI (10¹⁸) \t\n* transaction_hash | STRING | The blockchain transaction hash\n* block_timestamp\t| TIMESTAMP\t| The timestamp of when the transaction was processed\t\n* block_number\t| INTEGER\t| The block number of the transaction\t\n* gas\t| INTEGER\t| The amount of gas paid for the transaction in WEI\t\n* gas_price\t| INTEGER\t| The price of the gas at the moment of the transaction in WEI\t\n* transaction_type\t| INTEGER \t| The type of transaction",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Description",
      "content": "We challenge you to develop a machine learning model to detect whale movements in blockchain data. The data set contains time-stamped transactions between addresses on the Ethereum blockchain. Transactions are exclusively NFT transfers, and we filtered only top 5 trending NFT smart-contracts. Your task is to identify addresses that are associated with whales, and build a model that predicts the movement of whales over time.\n\n## Context\n\nWhales 🐳 in the NFT space are entities that hold a large amount of NFTs. These entities can be individuals, companies, or other organizations. Whales can wield a large amount of power in the NFT space due to their holdings. They can use this power to influence the crowds and gain control over aspects of secondary markets.\n\nA whale can influence an NFT secondary market by buying or selling large amounts of NFTs on exchanges. This can cause the price of NFTs on the exchange to rise or fall, depending on the demand for NFTs from the whale.\n\nThis challenge does not follow the traditional Kaggle challenge format, in this contest you will be required to adopt an IRL approach. Create your solution as it would be either used by companies or provided by you to an internal team in your company. One possible use-case to keep in mind is that you and your friends have developed a web2 (or 3) app that is available to the masses, and the model you will create will need to be serving inferences for such app. To help you with such task, we want you to use Elemeno ML Ops cloud platform, and by doing so easily deploying a REST API with your end-solution.\n\nThe features you will be using on the ML Ops platform are:\n - **Data Source** - This allows you to connect to an external data source and is necessary for configuring the feature store. In this challenge, you will be using the data source type BigQuery. If your solution includes additional data, you're allowed to configure additional data sources as necessary.\n - **Feature Store** - Feature stores are a key part of machine learning, as they allow models to be quickly trained and updated. A feature store is a collection of data that is stored in a way that allows it to be accessed quickly and easily. This data can be used to train machine learning models, and can be updated as new data becomes available.\n - **Inference Service** - You will be able to easily create a REST HTTP API without coding just by using Elemeno ML Ops. In this step you will configure what are the features needed at inference time (input space). You have the option to read features from the feature store or from the request body (using jsonpath). Make sure to specify at least one search key, so that the platform is able to find appropriated data in your feature stores.\n\n## Instructions\n\n### Data\n - There's a sample of the dataset attached in this competition, we recommend that you use the sample just for exploration. Remember, in real-life you will rarely deal with CSV files if you're building a data product.\n - The complete dataset, that should be imported to your Elemeno ML Ops account is publicly available on Big Query. The dataset name is `elemeno-public.sfhacks.eth_nft_transactions`\n\n### Challenge\n\nYou're required to create a model that's able to predict the transactions of an account classified as whale. Your model should be able to predict transactions for one day in the future, you're not required to predict for less or more than one day. There's at least one feature that you will need to calculate: the label to classify if a transaction was made by a whale or not. To restrict the solutions, we define whale in this competition as: any account (`to_address`) which the aggregate value of `transaction_value` for a given `token_address` lays within the 75th percentile of the group. So, as a suggestion, we recommend that you group transactions by `token_address` and `to_address` and calculate the percentiles of the sum of `transaction_value`, once you know where the 75th percentile starts for each group you will know how to determine if an account is a whale or not.\n\nThe required deliverable is:\n - A CSV file with your predictions for one day after the most recent day in the dataset. We will be calculating the **RMSE** (Root Mean Square Error) from your predicted values and the truth value that are expected. The file should have two columns, one column with the title `Id` which should contain the string concatenation of the `token_address` and `to_address`, and a column with the title `Predicted` with your prediction in ETH scale (tip: when training your model instead of using `transaction_value`, you should use `transaction_value/1e18`).\n\nTo score additional points:\n- A feature store configured on Elemeno ML Ops, that ingests data from BigQuery.\n- A REST HTTP API with your model, deployed on Elemeno ML Ops inference service.\n\n### Criteria\n\nIn this challenge we will not evaluate the code quality. Winners will be evaluated by:\n - Best RMSE (less is better, tends to 0)\n - The ability of your model to generalize to a new set of data not used during training\n - The usage of Elemeno ML Ops feature store\n - The usage of Elemeno ML Ops inference service deployment.\n\n## Additional information\n\nIf you are using our public dataset on BigQuery through Elemeno ML Ops you will need a service account in order to configure your data source. Use this file: [https://storage.googleapis.com/sfhacks-elemeno/elemeno-public-37205800cc93.json](https://storage.googleapis.com/sfhacks-elemeno/elemeno-public-37205800cc93.json)\n\nIf you need a more in-depth example on how to use Elemeno ML Ops tool, refer to this tutorial:\n[https://www.kaggle.com/lucasbonattomiguel/model-deployed-as-rest-api-using-feature-store](https://www.kaggle.com/lucasbonattomiguel/model-deployed-as-rest-api-using-feature-store)\n\n",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "Evaluation",
      "content": "We will be calculating the **RMSE** (Root Mean Squared Error) from your predicted values and the truth value that are expected. The file should have two columns, one column with the title **Id** which should contain the string concatenation of the token\\_address and to\\_address, and a column with the title Predicted with your prediction in ETH scale (tip: when training your model instead of using transaction\\_value, you should use transaction\\_value/1e18).\n\n## Submission Format\n\nYou will be submitting a single file. The file should have two columns: `Id` and `Predicted`. `Id` should be the concatenation of the fields `token_address` and `to_address` (the address of the whale wallet). The column `Predicted` is your model's prediction for what would be the `transaction_value` of the given whale in the given token for one day after the last day in the dataset.\n\n\nThe file should contain a header and have the following format:\n```\nId,Predicted\n0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d0x5bd8eff5967b1f1812fda2d5e5802d28d1cd793c,74.69\n```",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    },
    {
      "name": "rules",
      "content": "Rules for ensuring that your solution is considered:\n\n - Submit a link to your Kaggle submission via the official SFHacks devpost\n - Apply yourself!\n - Have fun!",
      "isPublished": false,
      "hasIsPublished": false,
      "postTitle": "",
      "hasPostTitle": false,
      "mimeType": "",
      "hasMimeType": false
    }
  ]
}