12
votes
What programming/technical projects have you been working on?
This is a recurring post to discuss programming or other technical projects that we've been working on. Tell us about one of your recent projects, either at work or personal projects. What's interesting about it? Are you having trouble with anything?
There is a fairly famous subreddit called WallStreetBets that centers around high risk high reward options trading. People frequently make posts speculating about a certain stock and recommending positions that people should take.
I'm creating a web site that will scrape those posts and store them in a database along with the username of the author. On the site you will be able to enter someones username and see their all of their WSB posts that contain stock positions, along with their overall accuracy. The DB is done and the scraper is done, just got to work on the actual site now.
I'm thinking I'll use DotNet Core for the backend REST API and something like React for the front end.
Very neat idea! I could definitely see someone getting better (or more likely worse!) over time, and that might be an interesting thing to look at, too. Is person X really good at picking these or did they just get lucky once or twice?
There's a podcast I listen to called The Skeptic's Guide to the Universe. Every year they collect predictions made by well-known "psychics" and then at the end of the year they fact check them. There will always be one psychic who got some out-there thing right simply by chance. They like to point out that these people were right on this one thing, but wrong on thousands of other things they predicted, but of course, it doesn't matter to the followers of a psychic. They remember the hits and forget the misses. (The hosts of the podcast also make their own science-based predictions at the beginning of the year and check themselves at the end. It's pretty amusing because they sometimes are serious about it, and sometimes aren't.)
What was really interesting to me was that based on some preliminary data (still working on getting the sub's history scraped), it looks like the vast majority of users only post once, then never again. The repeat posters only make up less than 20% of the total users that have posted.
(Note, those numbers are subject to change, still working with the data)
That makes me wonder if the one-time posters are trying to affect the position of the stock they're pushing to benefit themselves?
Yeah, that's called pump and dump. The only way to benefit from a pump and dump on WSB is to advocate for a really small stock (otherwise WSB doesn't have enough members to make a significant difference in price). People get usually get called out for trying to pump up low volume stocks and typically the post gets removed by the mods.
There has been an explosion of retail investing and I think a lot of these one off posts are new people who try it, then lose it all and give up.
I've seen that sub mentioned on multiple occasions, I have zero knowledge about how stocks or trade works. Where can I read about it? thank you :)
Regular stocks are pretty straight forward. Buy stock and you own a little bit of that company. Hopefully the company increases with value over time and (in theory) the stock will as well.
WallStreetBets focuses mostly on options. Options are more complicated, both in understanding what they are and in trying to invest in them.
It's basically you saying "Stock for (some company) will go (up or down) by (dollar amount) before (Date)". You pay money to make that "bet". If you're right you can easily make between 100% and 800% or more profit. If your wrong you lose the entire cost of that investment.
Most people on the sub are basically trying to play the lottery. Buying options that are very unlikely to be profitable for cheap, hoping to get lucky (similar to penny stocks). The craziest gain I've seen on that sub was a guy who bought an option for $35, then sold it for $15,000 a month later (that is not typical)
I do wonder about the authenticity of some of the more crazy gains posted on there. I remember seeing a post where someone claimed to have made an insane amount with a stupid bet on Amazon going up or down on a given day (forget which it was), and I can't help but think that they probably just photoshopped the screenshot or something.
You can't prove that they actually bought that option when they said they did, but you can look at the value of the option over time and confirm that the option did or didn't gain that much value. The option I was referring to specifically was for the company Shopify, which went from $350 a share on April 3 to $658 on May 6.
An options contract is for 100 shares. so 658-350 = 308. 308 times 100 shares is $30,000 minus the initial cost of the trade.
And that's why people play options. High risk high reward.
I love the idea. Is there a way to be notified when this goes online?
Also, if you need any help with React, feel free to get in touch.
Is there a plan in the future to make it installable, as in with an executive file or something, without having to fiddle with the nitty-gritty?
Is the plan to be single-user or multi-user? For a single-user executable, I imagine SQLite would work well.
You should post the announcement to ~tech (or ~comp)!
Sure, but IMO it's potentially worth discussing on its own, so worth its own post. It's your call though. :)
I recently finished a project that I've been wanting to do for a long time now called gmcts. gmcts is a Monte-Carlo Tree Search Implementation written in Golang.
For those that don't know, MCTS is a search algorithm, mostly used for games, that uses randomness to find good actions. Essentially, it plays thousands of random games to determine which action is good. This algorithm is so good at what it does that it became the backbone for many go playing programs, including AlphaGo.
I like this algorithm because it is domain-independent, therefore, I can make use of a Game interface that the implementation uses to get information like the next game state, a list of actions to consider, and winning players in terminal states.
There's still a lot of work I want to do on this project. Right now, the implementation is only designed for deterministic, perfect-information games, and the simulation of games is very tied down, choosing good and bad moves equally likely (you can't get AlphaGo levels of optimization with this implementation). Even so, I've released v1.0.1 for anyone to try on their game implementations!
Not sure if this counts, but maintaining the hairball of parsers and scripts I use to keep my hledger accounting journals. I have to parse a number of excel files (as in files you can open in excel and pretend they are well formed spreadsheets), pdfs, and a custom format for notes I take on the phone.
Most of it is automated now, but it's a mix of rust, python and a couple other tools and has way too many steps. I want to convert it all to simpler haskell scripts to use hledger as a library but I have not done real haskell stuff in many moons, so it is low priority.
I was tired of how slow it's to create GitHub issues, even worse if you have to create multiple in different repositories, so I wrote an app to make GitHub issues faster using plain text.
https://startfunction.com/make-github-issues-faster/
I've been working on the next version of Intergrid's engine. The goal is to make an extensible, performant basis for grid-like apps, including options for non-plaintext entries. Mostly a fun project, just like the original Intergrid engine was: I'm not rushing to turn it into production any time soon. If I don't enjoy working on it, it ain't worth it.
I'm also considering making it public, as in posting the work to GitHub, so that I could gather early reviews for mistakes and better practices.
I'm back to looking at my Penrose Tile generator. I have a number of features I'm trying to add that are mostly ways of decorating the tiles so that they mimic other types of tiles, like Girih Tiles. It's written in Swift and uses the Pentagrid method of generating the tiles. It feels inefficient right now. I'd like to make it more efficient, but I'm not sure how at the moment. I feel like if I could understand the math a little better, I could solve some of the shortcomings it currently has.
I started working on a multiplayer version of a game I made 2 years ago as a gamejam project. https://apos.itch.io/projectcore Two of my friends joined (one of whom made the original one with me).
It's a tower defense game where paths and towers can be moved. This time we are making it work as a multiplayer game. I'm streaming the creation process on Twitch https://www.twitch.tv/apostolique
We're going for a look similar to the game Mini Metro.
We already have the multiplayer synchronization hooked up. We're building the engine from scratch with MonoGame. This time the game is played on a hexagon grid.