! This repository is a work in progress !
The Quantitative Token Model (QTM) is an open source spreadsheet model developed by Outlier Ventures. It's purpose is to forecast key metrics of different token economies on a higher level by abstracting a set of often leveraged token utilities. It should be used for educational purposes only and not to derive any financial advise. The market making for the token is approximated by a DEX liquidity pool with constant product relationship. To understand the usage of the tool please refer to the User Story Map
The goal of the QTM radCAD integration is to extend and to improve the static high-level approach of the QTM spreadsheet model to a more flexible and dynamic one. With the radCad integration one should be able to perform parameter sweeps and optimizations. Furthermore it opens up the capabilities for more dynamic agent behaviors, Monte Carlo runs, and Markov decision trees, which reflect a more realistic approximation of a highly non-linear web3 token ecosystem. At a later stage there should also be a more accessible (web-based) UI.
- Initialize the project, create the development roadmap & README.md
- Implement interface to the QTM spreadsheet parameters
- Update the postprocessing in the
post_processing.py
with respect to the new QTM parameters and conventions - Update the plot functionallities in the
plots.py
with respect to the new parameter conventions - Build and test the vesting policies
- Build and test the incentivisation module
- Build and test the airdrop module
- Build and test the static agent behavior
- Build and test the utility policies
- Build and test the liquidity pool interactions
- Build and test the user adoption policies
- Build and test protocol bucket allocations
- Build and test the rest of token ecosystem KPIs / metrics
- Update the postprocessing w.r.t. the new implemented policies and corresponding state variables
- Web based UI for result output plots
- Improve function & overall code documentation
- Improve the robustness of all functions
- Improve the robustness of all model input parameter
- Staging tests of the whole model
- Case studies & publishing first results in an article
- Write the documentation for the QTM and radCAD integration
- Build a web-based UI to create another input option
- Implement user authentication and data set shareability between users
- Build custom user plot capabilities
- Account for different revenue receiver buckets and track them
- Add external rewards for stakers in diverse assets to mimic bribe markets (can be dependent on revenue received by a certain revenue bucket)
- Add input inconsistency icons to respective input section expander text
- Update fundraising module to more complex scenarios, including SAFTs, SAFT+Ts and SAFTs
- Implement different KPI-driven controller designs based on incentive priorities/optimizations
- Develop risk analysis procedures
- Add more dynamic agent (behavior) policies
- Intelligent agents I: Hard coded logics
- Agents tend to stake tokens if reward APR is above target APR and remove tokens if it is below the target APR
- Add DAO voting caused staking demand based on revenue and business funds
- Add market buy behavior based on intrinsic protocol value, which is proportional to business funds and revenue projection
- Add market buy behavior based on market sentiment (Brownian Motion) and protocol reputation
- Intelligent agents II: AI driven decision making
- Intelligent agents I: Hard coded logics
- Parameter Optimization
- LLM support agents
Python 3.9 is recommended!
- Clone this repository to your local machine by
git clone https://github.com/OutlierVentures/QTM-Interface.git
- Create a new Python environment in the projects directory by
python -m venv venv
- Activate the new environment by
venv/bin/activate
- Install all required packages by
pip install -r requirements.txt
- Make sure you followed the previous installation section.
- Navigate with your terminal to the main project directory.
- Run
streamlit run .\Welcome.py
within the previously installed and activated environment. - Expand the Sign-Up expander on the Welcome landing page and create a new user account or use the test user credentials
- Expand and login via the Login expander on the Welcome landing page by using your preferred account credentials.
Test user login data:
Username: user
Password: 1234
Create a function that combines all of these into a single file
1. Add parameters to ingest external data
2. Function to initialize values in state variables
3. The policy and state update functions
4. Update state update block file
5. Post-processing and plots to display it