AxLabs / grantshares

GrantShares Program 🌱
https://grantshares.io
Apache License 2.0
22 stars 3 forks source link

dApp- Gamefied price forecasting + NEO advanced analytics dashboard (with 3D visualizations) #46

Closed grantshares-dapp[bot] closed 1 year ago

grantshares-dapp[bot] commented 1 year ago

Abstract

For the sake of sharing advanced forecasting and data analysis techniques amongst the NEO community, increasing NEO blockchain usage, and increasing familiarity amongst community members, develop a web-based dApp/game that allows entrants to make predictions on the price of NEO at a future time. Payouts/ prizes would be 100% given back to the community. A complimentary analytics dashboard would be developed which features additional tooling (3D rendering of global node locations with ThreeJS, regression/ seasonal decomposition, daily transaction history, etc.) and gives users a snapshot of where the price is headed.

Proposal Information

Description

How the game works:

At the start of each month, after connecting their wallets, users can place a bet on what the actual price of an asset will be (for now NEO/ GAS) will be at the end of the month (or some future date). As the purpose of this dApp is primarily educational/recreational, buy-in amounts would be low and capped at around 1-3 gas per user (for now).

Note that the target asset does not necessarily have to be NEO, we can also consider related assets such as the price of Bitcoin, ETH, for the future.

All bets will be automatically compiled into a neo-python or neow4j smart contract. The cut-off point for new entries would be about 2 weeks before month- end. At month end, whichever user’s price is closest to the actual price will win the prize pool. The payout structure will be 100% of all submissions received and will be as follows: 1st place: 70%, 2nd place: 20%, 3rd place: 10%.

The backbone of the dApp will be a smart contract that will automatically execute after the prediction date; I will not be able to touch the pot or subsequent dissemination as it will be handled automatically.

Again, the primary purpose of this game is for educational and recreational purposes. It will repeat on a continual, monthly basis and I plan to run it for perpetuity while supporting its dissemination with articles about data science/ forecasting/ economics.

Dashboard description:

The N3 ecosystem already has a small number of dashboards available. They include: neo-dashboard, ndapp, Dora, neodepot, and OneGate. They are quite useful for querying historical information on the NEO blockchain.

Rather than recreate what other dashboards have already done, my dashboard will focus more on analytics/ forecasting/ non-traditional things users may not normally consider. For example, it will feature:

Motivation

Prior to coding, I worked as a CPA with a Big 4 firm and then as a principal research analyst in the energy industry for a number of years. As part of our responsibilities, we had to come up with predictions for a number of important indicators, including oil prices, as well as demand for certain oil extraction equipment. I found that oftentimes, our official oil price forecasts were way off. I wanted to know why, and how our forecasts could improve in accuracy and timing. Thus, I became fascinated with the skill of forecasting- what are the drivers, and how does one know if one has included all of the necessary factors? What are the common errors being made by those in the field? I’ve studied many of the great forecasters, and came to realize that you can count on one hand the number that are consistently accurate.

As the NEO community grows, it is important that its members have a good grasp of cutting edge forecasting and data analytics skills. The gamifying of the forecasting process using very small bets could be a way for NEO users to better understand how forecasting/ data science works and improve their trading and investing skills, while also increasing interaction amongst members. Lastly, developing this dApp will allow me to build my own skill-set in NEO smart contract development.

Goals

1) Enhance the understanding and real-world usage of data analytics (forecasting) and data science techniques amongst the NEO community.

2) Drive increased usage of NEO/ GAS

3) Increase participation / community engagement amongst NEO members

4) Have fun while doing all the above

Deliverables & Roadmap

Specify deliverables in detail, including the following info for each:

Roadmap:

Backend (neo-python, Python, GraphQL, WalletConnect)

Frontend (ReactJS/MaterialUI/Render):

Other

Total working days (~35)

Deliverables Verifiability

1) dApp is successfully launched with features as described above

2) Ads and promotions are placed throughout Reddit, Discord, and Twitter to attract users

3) First monthly competition is held successfully

Budget Plan$

About You / Your Organization

Short-Bio

My name is Rob Liou. I started coding/ data science at my previous job about 3 years ago and have been hooked ever since. Previously, I worked for a Big 4 Accounting Firm as a CPA, and then after my MBA, at a large consulting firm as a principal research analyst in the upstream oil and gas industry, and later at IMA as a research manager/ data engineer. I have an MBA from the University of Michigan and did my undergraduate in economics, accounting, and programming at UCLA.

Portfolio of Projects / Past Experience

After participating in the NEO Frontier Hackathon in 2021 with DDR Store (an "Amazon Store for Market Intelligence"), I was invited to give a demo on the first day of DemoWeek. After the successful demonstration, my project, DDR Store, was later enrolled and launched via the NEO Ecoboost Incubator.

In addition, I have built projects to serve the NEO community in different ways, including:

NEO price regression engine

NEO cycle/ seasonality discovery engine

I've done other analysis of NEO on my personal blog that has been shared with the community to positive feedback.

The NEO analytics dashboard I plan to create would be based on a oil price forecasting engine I created during the Amazon AWS API hackathon held last month.


Proposal Info :clipboard:

[ {
  "target_contract" : "0x6276c1e3a68280bc6c9c00df755fb691be1162ef",
  "method" : "releaseTokens",
  "params" : [ {
    "type" : "Hash160",
    "value" : "ef4073a0f2b305a38ec4050e4d3d28bc40ea63f5"
  }, {
    "type" : "Hash160",
    "value" : "b83c34adfaa1b364c79939142046b508d545256f"
  }, {
    "type" : "Integer",
    "value" : "485"
  } ],
  "call_flags" : 15
} ]

πŸ‘‡ React with πŸ‘ if you liked it, or πŸ‘Ž if you think this proposal can be enhanced!

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

ioannistsil commented 1 year ago

this is interesting . definitely NEO need this kind of dapp

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

robliou commented 1 year ago

this is interesting . definitely NEO need this kind of dapp

Thanks! Hope to hear more feedback on this project soon.

DylanNNT commented 1 year ago

I tested the initial application Rob had put together a few months ago, after he shared a link on the Neo sub-Reddit. You can see our back and forth here. It was a pretty cool tool to test NEO's price movement against other asset classes, and to play around with other assets to see if there might be any correlative relationships.

As a principal, when talking about about NEO and the ecosystem (especially so in NNT coverage) I've avoided discussing price, because it's so speculative and I don't want to fuel any hopium in readers or folks who follow my socials. However, I think with a tool like the one proposed in this GrantShares application, it could be a great education opportunity to learn about how assets interact with broader markets. Many in the community like to trade, and I think this could serve as an educational tool to foster more focussed conversations on that subject-matter. I certainly walked away with a little more knowledge after reading Rob's post and testing the initial version of the tool.

I appreciate that Rob took feedback offered a few months ago about a) making a game that allowed all ecosystem participants easily use and b) not take any fees for himself from folks who staked GAS/NEO in the game.

Plus, I think the ecosystem would generally benefit from more websites/pages dedicated to dashboards, as they're simple ways to digest various types of data and statistics about network usage and activity.

Should Rob be granted funding, I believe he'd be able to deliver the dApp. He's already built out an initial concept, and successfully delivered another dApp in the Neo Frontier Launchpad. Further, the request for funding isn't absurd, but also respects the time an applicant has to put in to make this project come to life. As GrantShares voting members, we should be supporting projects that have realistic funding requests and well-defined deliverables.

robliou commented 1 year ago

Hi Dylan, muchas gracias for the positive and encouraging feedback!

I have learned, while being in the incubator, what causes a deFi project to be successful or not. In the deFi world, given peoples' short attention spans, it needs to be useful, simple, and easily accessible. You can rest assured I will do my best to make this project successful and attractive, meet the timelines for the deliverables, etc.

That said, if anyone has additional constructive criticism, feedback, or suggestions, etc., I'm all ears.

robliou commented 1 year ago

As a principal, when talking about about NEO and the ecosystem (especially so in NNT coverage) I've avoided discussing price, because it's so speculative and I don't want to fuel any hopium in readers or folks who follow my socials.

Hey @DylanNNT , I think that's a fair point. Building an app that would appear to users to be speculating on the price of NEO could possibly be divergent from NEO's stated goals.

I was thinking that I could expand the analytics dashboard to also cover other important assets within the digital world, such as Bitcoin, Ethereum, etc.? For example, the dashboard could list the top coins/ assets which are currently out-of-favor versus in-favor. This would be done by deriving and visualizing the long-term cyclical/seasonal patterns of said coins, and then listing, say, the top 5 coins of each. This would assist an investor in discovering which coins may be on the verge of a break-out versus sell-off.

In addition, rather than making forecasts for the price of NEO, the game would instead allow users to forecast the price of other assets such BTC or ETH (or really any other crypto or asset class, for that matter). Of course, pay-ins/ payouts would still be done using GAS.

Thoughts?

csmuller commented 1 year ago

I'm in favor of this proposal. It's scope and budget are reasonable and it is a playful addition to the ecosystem. I'm not interested in price predictions myself but i'm sure many other users are.

robliou commented 1 year ago

Hi @csmuller ,

Thanks for your comments and vote of support!

The past few weeks, I've been using Reddit and Discord to gauge the community's needs and wants as it pertains to an advanced analytical dashboard. I'm also looking at what's already been done, as I have a few ideas as well about things. For sure, the dashboard can host some of the forecasting tooling I've already created, which would help to cut down on some of my hosting costs.

I'll update my submission in the next few days to include the results of this new research I've gathered, so that the game/dashboard is more cohesive and likely to succeed with the community.

Thanks again and have a happy new year,

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

robliou commented 1 year ago

@DylanNNT @csmuller @ioannistsil

Based on your (and the community's) input, I've made a few minor edits to this proposal. However, it is mostly the same as before, just with more detail and clearer objectives. Please have a look and let me know your thoughts, if any.

I plan to put it on-chain soon.

Thanks,

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

csmuller commented 1 year ago

Those are good edits IMO. I'm still in favor of endorsing the proposal.

grantshares-dapp[bot] commented 1 year ago

🚨 This proposal was edited by the proposer.

grantshares-dapp[bot] commented 1 year ago

β›“ This proposal was created on-chain! πŸ”₯πŸš€πŸŽ‰

➑️ Now, waiting for a GrantShares Member to endorse it... ⏰


🚨IMPORTANT🚨 Pay attention to the following deadlines: ⏰


General info:

robliou commented 1 year ago

Hi Everyone,

Just to add some more context to this discussion, I've gone ahead and built out a portion of the 3D analytics component of the dashboard. I posted the site on Reddit, and have already gotten some pretty good feedback. You can see the site and description here.

Please feel free to let me know your thoughts, or any additional suggestions. Thanks.

grantshares-dapp[bot] commented 1 year ago

β›“ This proposal was endorsed on-chain! πŸ“„πŸ”‘

➑️ Voting period starts NOW!


🚨IMPORTANT🚨 Pay attention to the following deadlines: ⏰


General info:

roman-khimov commented 1 year ago

Just a quick little comment from a voting member. I can't agree with the concept provided, this can be done, but I don't think it adds a lot of value and we better keep some NEOs for other projects. But we have a number of voting members, there are other opinions as well.

robliou commented 1 year ago

Just a quick little comment from a voting member. I can't agree with the concept provided, this can be done, but I don't think it adds a lot of value and we better keep some NEOs for other projects. But we have a number of voting members, there are other opinions as well.

Roman, I appreciate your feedback on why you don't think it adds a lot of value to the NEO ecosystem. If I may, please let me respond here why it think it does.

While we can all hope that the NEO community is composed primarily of builders, many of those in the community are not. Most are investors and traders, looking primarily for profit. The price action is what attracts a lot of investors to a community. Price rises attract users, price falls cause users to leave.

Now, the past year, we've seen the price of NEO drop significantly (from $28 in April to $6 in December). Imagine being a small investor and seeing the value of your holdings dwindle so rapidly. What would compel you to hold, or to stay in the community? What does the future look like, and is it possible to predict it? In this case, the answer is yes.

Two months ago, I released to the NEO community a cyclical and seasonalilty tool I built using the Python TSA stats package with a React front-end. I wrote an article as well on how to use it, but I think it went above the heads of most people. I was hoping some people would just catch on, but in hindsight I should have just been more clear on what the conclusion was. Take a look at the chart generated by that tool below (date range: August 2017- Jan 2023, period: 365 days):

Cyclical pattern 01202023

To make things easier to understand, I added the dates in red. Do you see a pattern? Using the past 6 years as data, we can see that the price of NEO exhibits very strong seasonality patterns, just as you'd see in the retail industry. For some reason, demand for NEO always skyrockets from around December into April/May of the following year, and then collapses afterward, with the price usually subdued into the following early winter season. The pattern then repeats at the end of the year, rising rapidly into the next Spring season.

Why does it do that? I have no idea. Maybe it has something to do with demand rising during Chinese New Year/ New Year, when more people are bored sitting at home? Even though we don't know the cause, we can see that this pattern repeats itself year on year. If you don't believe me, try the tool for yourself (though do note that I've since moved hosting to a free back-end, so it can take a while to load on your first submission).

In December when I first submitted my proposal, I wondered if I should even bother requesting NEO, because the price had been steadily declining since May, hitting its lowest price in 3 years, and I had no idea how much worse it would get. But, after I used the tool and saw the annual seasonal pattern that December would likely be the low, I felt comfortable requesting NEO and put the proposal on chain.

In summary, being able to find patterns in data can give us a better sense of where we are going, and also give us confidence for what we should be doing in the immediate moment. Its also the foundation for AI/ ML/ data science. The technology that ChatGPT uses, for example, is really just based on pattern recognition.

The dashboard I am in the process of creating will incorporate the seasonality tool I just described. It will also incorporate multiple linear regression analysis, which I've previously blogged extensively about. A few days ago, EdgeDLT released a much-needed data analysis tool called Shrike which contains an indexer as well as API to help users to better query and organize data from the NEO blockchain (as you may know, it is currently very difficult to get a data series using the existing RPC function). I plan to use this tool to gather non-price datasets from the NEO blockchain that I can further analyze using the tools I've created. The purpose of the analysis is to find more patterns and to make more predictions. I imagine this dashboard and tooling would be of use and interest to the broader NEO community.

The forecasting game would simply be a way to engage users to actually utilize these tools in practice, and to also improve their skills in forecasting/ AI/ ML in the process. With AI/ML being such an important and growing topic in the tech world, I think this would be a good thing for our community. It's also why I don't plan to keep any revenue or profits from the forecasting game and will continue to publish articles/ release tools as I see fit.

In summary, I hope this helps to explain why I feel this proposal is of value to the community.

Thanks and Бпасибо,

robliou commented 1 year ago

A few more updates related to this proposal:

1) The 3D governance map has been updated to also show the names and locations of the Grantshares DAO members (amongst a few other visual edits such as lighting, etc.)

2) Long-time NEO community member kokahunter, who developed this dashboard, has graciously volunteered to help me to complete the dashboard/analytics portion of the project. He is not requesting any funding, but I'll likely give him something from the pool. That said, I am not planning to increase the amount of funding requested for this project.

Thanks,

robliou commented 1 year ago

Hi @csmuller @gsmachado ,

I have a question. So, voting for this proposal ends in about one day. Voting has reached quorum, but yea/nay ratio is deadlocked at 50%.

In the event that no other DAO committee member votes on this proposal, what happens? According to the parameters, the Default and Minimum Acceptance Rate is set at 50%. However, per the accompanying description, it says that >50% of all votes is required. So, which one is it? If nothing changes, will the proposal pass? Or should I scramble to see if I can collect one more positive vote?

Thanks,

csmuller commented 1 year ago

Hey @robliou, In this state the proposal would fail. The >50% rule applies. I hope some of the remaining members will also cast their vote.

robliou commented 1 year ago

@csmuller OK, thanks for the clarification!

gsmachado commented 1 year ago

Please, @shargon @lllwvlvwlll @JohndeVadoss @steven1227 @igormcoelho @deanragnarok @hacfox @roman-khimov cast a vote (either "accept", "reject", or "abstain") if you haven't done yet for this proposal.

gsmachado commented 1 year ago

@robliou Congrats! It seems the proposal was accepted! πŸŽ‰

You can now start the hard working part! πŸ’ͺ

Please, post here your progress and keep the community connected to you! πŸ™

You'll be able to execute the proposal once the Time Lock phase is over. πŸ”œ

robliou commented 1 year ago

@gsmachado , thanks, this is great news, and thanks for your and @csmuller 's support! I am excited to get this moving forward into something useful.

An important follow-up question:

According to the Grantshares Parameters, there is an expiration time of "30 days after the proposal is ready for execution. In both cases, the proposal expires if no actions occur for the period defined by this parameter."

What does that mean, exactly? What are "actions" referring to?

In my proposal, I stated I need about 35-40 working days to complete this project. Looking at the other projects that were accepted, none seemed to 'expire' after 30 days of execution..? If I have to complete this in 30 days from now, that could be a bit challenging..

Thanks again,

csmuller commented 1 year ago

@robliou, the "execution" term might be a bit confusing here. With execution we mean executing the proposal on-chain. You will need to do that once the time lock is over. Thereby, you will claim the funds that have been granted to you. If you don't do that within 30 days, the proposal will expire and you'll not be able to execute anymore. For the actual "project execution" you can stick to your estimated efforts.

robliou commented 1 year ago

@csmuller , OK, thanks for the clarification.

I'll plan to keep everyone posted as this progresses. @DylanNNT will also help me with publicizing when the time is right.

By the way, I can also think of using this forum, as well as Reddit/Discord to share progress with the community. Are there any other channels I should consider using?

Thanks,

csmuller commented 1 year ago

@robliou, Since you already have some traction on Reddit, you can def continue posting there. It's just important that you also report your progress here sometimes such that the community know this grant is being worked on. But links to, e.g., NNT or Discord posts suffice πŸ‘

robliou commented 1 year ago

@csmuller , understand and make sense. Will definitely post here to show my progress to the community, as well as post to NNT/ Discord/ Reddit, etc. Thanks.

robliou commented 1 year ago

@robliou, the "execution" term might be a bit confusing here. With execution we mean executing the proposal on-chain. You will need to do that once the time lock is over. Thereby, you will claim the funds that have been granted to you. If you don't do that within 30 days, the proposal will expire and you'll not be able to execute anymore. For the actual "project execution" you can stick to your estimated efforts.

For the good of the community, I've been thinking about this further. I can understand maybe 50% of the request being released after the lockout period, but 100%? Shouldn't there be some further incentive for the proposer to actually achieve what they proposed? (i.e. 50% released after lockout, then another 50% released after project is completed and accepted by committee members)? I understand this introduces a further round of review and effort for the committee (or community), but it just seems more appropriate than giving out everything at the start. I do understand that the proposal and acceptance phase is quite rigorous as well.

Anyways, I'll probably open a separate issue for this...

grantshares-dapp[bot] commented 1 year ago

πŸŽ‰ Outcome: this proposal was accepted! πŸš€

➑️ Now, waiting for someone to execute it... ⏰


General info:

grantshares-dapp[bot] commented 1 year ago

β›“ This proposal was executed on-chain! βœ… πŸ’š


General info:

csmuller commented 1 year ago

@robliou, Your suggestions about splitting a grant into a payout schedule is something we desire too. We already ran an internal workshop on such a "milestone" feature. Currently, execution is halted by the question about resources and funding.

robliou commented 1 year ago

@csmuller

That's a good point. Also, as mentioned elsewhere, splitting up the grants already appears to be taking place. And I guess since many of these grants aren't for very large amounts, maybe it's not time-effective to nitpick on smaller details/ deliverables.

robliou commented 1 year ago

Hi NEO friends,

Just an FYI- I've been working hard on the analytics dashboard and hope to have a first demo ready later this week. I will likely share it first with @DylanNNT to get his thoughts and input and then maybe drop a link here to a demo after the bugs are worked out. Looking forward to hearing your feedback on it.

Be in touch!

@csmuller @gsmachado @ioannistsil @ngd

gsmachado commented 1 year ago

Hey @robliou Any news about the progress of this project? Please, report your progress here in the discussion thread. Thanks in advance!

robliou commented 1 year ago

Hi @gsmachado @csmuller @steven1227

Yes, thank you for reaching out! Below is link to the demo and update I sent to @DylanNNT last week. It appears he was attending an important conference over the weekend, so hasn't been able to respond yet:

"I would like to share with you the pre-release of the NEO forecasting dashboard here, I can hope you can take a look and offer some feedback:

https://www.dashboard.robliou.com/

Some points to note:

1) There are 4 charts displayed on the dashboard, but only the two on the right (Seasonality and Adjuster) are editable and affect the final price calculation.

2) Seasonality allows the user to visualize the one-year, two-year, and three-year cycles which impact the price of NEO. It also includes the option to look at the cycles for Bitcoin, which is interesting because Bitcoin has a longer history and thus, more developed cycles.

The cycle you select will impact the final forecast (Note that this dashboard and game currently only forecasts the price of NEO to the end of the current month). Of the three periods, I would say the two-year cycle clearly has the highest balance of accuracy and impact on the price of NEO.

3) The Regression tab shows 3 baskets of assets which have a high correlation to NEO. They are all nearly 80%, which is quite high. This means that, the prices of the three assets in each basket, when combined, can explain nearly 80% of the price of NEO.

4) On the Adjuster tab, you can select which basket you want to use and then adjust the month-end price of each asset using the slider bar. Hit 'Generate' after you are done making your inputs.

5) After clicking the 'Generate' button, a special algorithm is launched which calculates the forecasted price of NEO at month-end.

As we know that Observed values = Seasonal + Trend + Residual, given that we already know the Seasonal variable, I attempted to derive the Trend and Residual variables by converting them using the predicted values from the regression basket.

Combining these factors has proved to be a bit more difficult than I expected, involving the use of special equations, curved lines, etc. It seems to be more useful than just using the Regression variables alone, however, the Seasonal impact can sometimes be too strong, especially during the down cycles (i.e. forecasted price of NEO drops substantially). Therefore, I am still working on getting these variables to play nicely together.

In the meantime, I think the dashboard still has special value due to the ability to quickly and easily make a fairly accurate forecast just by adjusting the 3 variables in the Regression basket. Also, the Seasonal visualizations are quite useful. For example, if anyone is wondering why the price of NEO has doubled since December, they can simply look at the one-year and two-year Seasonal cycles to see that the price of NEO always rises around this time of year. Secondly, they also give a strong indication how much longer this cycle will continue for (i.e. the two-year cycle indicates this bull run should last into May).

6) I will continue to sort out some of the kinks in the dashboard, as well as to find ways to improve the final algorithm. I will also buy a domain name to register this app. At this point, I will also move onto developing the game and smart-contract that this dashboard is meant to support. In the meantime, if you have any ideas, comments or suggestions, or know of anyone else that would like to work with me on this, please feel free let me know!! "

robliou commented 1 year ago

Further to the app, I am now working on the smart contract that supports the forecasting game. The dashboard itself is not perfect, and will not generate a perfectly accurate forecast, but hopefully it helps the user to consider some things he/she may not normally consider, while giving him/her confidence to participate in the forecasting game.

Also, I've gotten some good feedback from kokahunter on the dashboard and game itself, as well as a volunteer to help with the SC. In the meantime, if you guys have any feedback or additional ideas for the dashboard/game, that would be wonderful to hear and I'd be all ears.

gsmachado commented 1 year ago

@robliou thanks for the update!

csmuller commented 1 year ago

Looking good :)