Show HN: Can’t afford Bloomberg Terminal? No prob, I built the next best thing
github.com
github.com
In summary, the Terminal (https://github.com/DidierRLopes/GamestonkTerminal) has 7 distinct menus: - Discover Stocks Top gainers; Sectors performance; upcoming earnings releases; top high shorted interest stocks; top stocks with low float; top orders on fidelity; and some SPAC websites with news/calendars.
- Market Sentiment Scrolling through Reddit main posts, and most tickers mentions; Extracting stocktwit sentiment based on bull/bear flags; Twitter in-depth sentiment prediction using AI; Google mentions over time.
- Research Web pages List of good pages to do research on a stock, e.g. macroaxis, zacks, macrotrends, ..
- Fundamental Analysis Read financials from a company from Market Watch, Yahoo Finance, Alpha Vantage, and Financial Modeling Prep API.
- Technical Analysis The usual technical indicators: sma, rsi, macd, adx, bbands, and more.
- Due Diligence Some features are: Latest news of the company; Analyst prices and ratings; Price target from several analysts plot over time vs stock price; Insider activity, and these timestamps marked on the stock price historical data; Latest SEC fillings; Short interest over time; A check for financial warnings based on Sean Seah book.
- Prediction Techniques The one I had more fun with. It tries to predict the stock price, from simple models like sma and arima to complex neural network models, like LSTM. The additional capability here is that all of these are easy to configure. Either through command line arguments, or even in form of a configuration file to define your NN.
But i was working through sigaloid's post here
https://github.com/DidierRLopes/GamestonkTerminal/issues/2
And was still hitting a error on compile
Generally ending with
NFO:pystan:COMPILING THE C++ CODE FOR MODEL anon_model_dfdaf2b8ece8a02eb11f050ec701c0ec NOW. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Ran the following to clear the error
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
Pretty sure libssl-dev and python3-dev were the only ones needed though
Also UserWarning: Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning warnings.warn('Using slow pure-python SequenceMatcher. Install python-Levenshtein to remove this warning')
So the following was needed as sigaloid stated
pip3 install python-Levenshtein
https://stackoverflow.com/questions/3730019/why-not-use-doub...
Of course as you say for accounting you don't want to use floating point, but I can't see anything like that in this application.
When you're storing balances or transacting payments between institutions, you need to emulate a specific set of operations, part of which includes using fixed point numbers. It is not sufficient to just use fixed point, you also need the correct number of digits (AFAIK it's 4 digits with US currency) you need the correct rounding mode, etc.
Every few years someone comes along with a big new idea to rewrite the aging dinosaur COBOL code that runs the financial world in something modern. It never works. Nobody wants to go through the old COBOL code to figure out exactly what the code does, they take a greenfield approach with a description of what the UI is and an incomplete spec of the operations that need to happen. And then when it comes time to test the system, they get balances and numbers that are wrong. Because the only thing they know is "we need to use fixed point" but never bother to understand the actual full scope of how basic financial arithmetic is unique, and different from "normal" arithmetic.
With numbers that are large enough, a 1% or 0.1% difference means a lot of money. And if you have an automated system making decisions based on those numbers that can translate into financial ruin, legal problems, etc.
Leave the ad hominem aside, btw, noone wants to hear about it.
Apart from in accounting, the two problems with floats are nonassociativity and speed, neither of which are particularly relevant here.
The risk of losing money does not look like subtle floating point rounding errors. It looks like someone fucking up a formula in excel or the model being wrong or the model being right but risk not being hedged.plenty of people in finance will add percentages as x + y instead of doing (1-(1+x)*(1+y)) because it’s simpler (this works fine because log(1+x) is approximately x when it’s small, and it can obviously be made better by taking the log earlier but plenty of percentage inputs to a model may be rough guesses anyway (who cares if you write 5% or log(5%)))
The only way to improve on this description would be to note that the contract rate for each of the persons involved in this endeavor would be in the $485/hour range (of which, the labor provider might get $50). And then to note the 12 layers of management sign-off/approval on top of that - billed separately.
I found Alpaca[1] which looks decent in terms of a stock API and their upstream data provider Polygon.io[2] which looks even better but costs $199/mo for essentially per tick market data.
Disclaimer, I built findbssales.io
Either way, as a counterweight to all the conspiracy theory nonsense on the web, I have been making an effort to not assume I know people’s hidden intentions. I’d like to invite you to join me in that.
I don't mind those comments so much, as they can lead to good stuff, but I do mind them derailing the main thread when they are upvoted. So, I often downvote them in retaliation.
They were using Polygon for data, but if I recall correctly, I believe seeing an email or such that they're going to roll out their own data and discontinue the Polygon "bridge".
"JP Morgan Employee : But, uh... you guys are under the capital requirements for an ISDA.
Charlie Geller : By how much?
JP Morgan Employee : [thinking] Uh... how much? One billion, four hundred seventy million. So... a lot.
Charlie Geller : This makes us look bad, doesn't it? That we didn't know what the capital requirements were?
JP Morgan Employee : Uh... it's not great. But keep up those returns and give us a call way down the line, you know. Okay?"
"Holy shit, that’s just fucking crazy. That’s fraud!"
I find myself quoting this a hell of a lot in the last few years.
Also a security guard kicking out two men in suits from a lobby is just weirdly unrealistic.
I think the issue is that they're bespoke transactions so the credit support required may change depending on the context.
"That's a nice shirt, do they make it for men?"
"Somehow you're like Dora the Explorer and you're the first person who has found this thing..."
"There’s some shady stuff going down. God, this is intimate. I feel like I’m financially inside of you or something."
"I'm jacked. Jacked to tits!"
Why? I assume you're doing this as an advertisment?
But this is still pretty cool :)
If you receive a Bloomberg message from someone, it's something actionable. That's not true, in finance, of virtually any other electronic communication channel.
I never got spammed once on my terminal.
Not once.
That's some real blue sky thinking.
The idea that you still need to pay 25k$ for a communication software in 2021 is absurd.
Check my comment history, bought lots of link in 2017 because everyone was buying it on /biz/, posted about it once here and got criticized for it by someone because it's 4chan etc... and people will only listen to you if you have an expensive suite and watch on, even tech people ironically.
If information giving more than x100 ROI in 3 years isn't quality enough for you then I don't know what is.
One would be wise to look past the anonymity, racist jokes, homophobic jokes, etc... to find what you want, it's like diving in a lake of shit that has treasure chests under it you'll find it if you look hard and deep enough, but you'll have to swim in shit.
Other times I will go out of my way to send emails from the terminal just so others get a glance at my @bloomberg.net email address. I also have people send me stuff to the email if it's someone I haven't met before.
The Bloomberg Terminal is well worth it for these two perks. It's much better than paying for an @hey.com email address.
Also those representing parity overheard you and may have a bit to talk with you about.
Unless I missed sarcasm, in which case, please accept my humblest apologies.
Bloomberg's tooling is quite good, and you can get 80% of the way to a bespoke chart with 20% of the work.
Not sure if the above is speculation, or parody, or just a projection of a stylized view of how finance and the world works. But definitely the above comment is confusing / misleading to people who don't work in the industry.
On a more serious note: I think the topic of stocks and getting rich real quick might generate that kind of feel, on any platform. Probably borderline for HN to have these discussions?
This is the people "sticking it to the hedge funds" pouring in.
[0] https://news.ycombinator.com/item?id=926703
[1] https://news.ycombinator.com/item?id=633099
[2] https://news.ycombinator.com/item?id=582513
[3] https://news.ycombinator.com/item?id=289254
[4] https://news.ycombinator.com/item?id=253657
[5] https://news.ycombinator.com/item?id=66057
But this post definitely has a very bizarre comment section compared to most.
And not just any one comment, but almost every thread. Maybe it has to do with the "Gamestonks" moniker and what it entails
I am personally not against the idea of sorting comments based on a score but the score itself shouldn't be visible to anyone.
This implies that markets going up is a problem that needs to be solved.
But asides from the securities offered by the typing system and borrow checker, Rust (and Go; and maybe others to some extend) have going for them is that the compiled binary is "OOTB".
I'm on ubuntu, and it seems all python tooling is there to start running Gamestonks Terminal. But more often then not, getting a Python, Nodejs or Ruby project running requires a lot of fiddling, insider-information (what is npx, why did pipenv just break my entire desktop, why is this 'rbenv' thing giving these weird 'RVM' errors?).
A rust project: download it, unzip it, run it. A very short Daft Punk song, really.
See what I did? It’s an older meme, but it checks out.
But all of these don't make the packaging easier, they merely move the complexity of such setups from "all users" to "the devs". Which helps a lot.
But it's still easier if no-one has to deal with this.
The c implementation didn't hit the point of me being able to endorse it before I just gave up and let people use Less if that's what they prefer.
Runtimes, man. They can be the pits.
e: and is there a way to perform all DD, PT, etc?
e2: oh no!
'xlwings requires an installation of Excel and therefore only works on Windows and macOS. To enable the installation on Linux nevertheless, do: export INSTALL_ON_LINUX=1; pip install xlwings'
e3: https://github.com/DidierRLopes/GamestonkTerminal/issues/2
"Spare time"...
Wasn't that only several weeks ago? This is an incredible feature set! How many hours did you put into this?
https://github.com/DidierRLopes/GamestonkTerminal/blob/580e2...
Sort of irks me because a bloomberg terminal can do so much more: level 2 data, trading capability, damn near instant news alerts, options, debt instrumentals + so much more
- and I get it, this isn't meant for that same crowd and this is pretty well flushed out for a retail investor. But the comparison with the bloomberg terminal is a bit of a head scratcher
I think access to market data is a challenge in trying to replicate more of the present-day Bloomberg terminal. First because it's so voluminous (as people elsewhere in this thread have said), and second because so much of it is commonly provided under license for a fee (and with nondisclosure obligations) (and also subject to the trend where people pay more to get or generate market data that's closer to real-time).
But in terms of the feature competition, I think people have upvoted this so much because it's an initial version of a single person's passion project that manages to put a whole bunch of financial information at your fingertips. With an active community (and modulo the important data access issues), it could easily grow and grow and grow in functionality.
This is how great open source begins.
Still, this is a cool hack. I understand that it is not a genuine attempt to unseat Bloomberg!
https://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL
The problem for the author in this case is that a) writing their code against a GPL'd library constitutes creating a derivative work, and b) putting it on GitHub is distribution.
> the terms of the GPL apply to the entire combination. The software modules that link with the library may be under various GPL compatible licenses, but the work as a whole must be licensed under the GPL.
The application is a ‘software module’ licensed under the MIT license (a ‘GPL compatible license’). When you link that application against the GPL'd library, the resultant ‘work as a whole’ must be provided under the terms of the GPL.
(Since the MIT license allows relicensing, and the GPL does not contradict any of the terms of the MIT license, this is legal. If the MIT license did not allow relicensing, or if it contradicted some term of the GPL, the OP's application would still be legally licensed under the MIT license. It would just be illegal to link it against its GPL'd dependency.)
Licenses are freaking confusing :) but I think folks are correct to point this out.
My understanding is that all of the new files the author wrote can individuals be licensed MIT, but unfortunately the work as a whole should be GPL.
On your second point: Can't they argue that they implement against an API, which could be provided by non-GPL software as well?
>On your second point: Can't they argue that they implement against an API, which could be provided by non-GPL software as well?
I don't think that is reasonable. A GPL program is specifically named in requirements.txt and imported. It's essentially the same as dynamic linking, that is no more than naming a program and using it's API. If this argument was valid one could also argue it's possible to modify a dynamically linked binary's rpath (can be easily done with patchelf on GNU/linux) from a GPL library to a non-GPL one so dynamically linking a library would never require you to do abide to it's license, which is obviously untrue [1].
[0]http://www.gnu.org/licenses/gpl-faq.html#WhatDoesCompatMean
[1]http://www.gnu.org/licenses/gpl-faq.html#GPLStaticVsDynamic
I’m not at all convinced that a court would agree, particularly when the effect on the code is fairly insubstantial.
I guess it boils down to whether the LICENSE file is meant to apply to the code in that repo or the software it produces when built. I would expect the latter, but I guess it's a bit ambiguous since we're having this discussion.
The line between an API and code describing and documenting that API is quite fine. See Google vs Oracle.
Google v oracle happened in the us. I explicitly qualified with ‘in europe’. That lawsuit would never have flown in the first place. Oracle's position was specifically that they held the copyright of the java stdlib APIs, which copyright was infringed upon by google.
> code describing and documenting that API
I'm not sure what you mean by that, can you clarify?
So, my understanding is the author’s new files that use the GPL licensed library can individually be licensed MIT, but the work as a whole must the GPL.
GNU believes that the lax licenses (MIT, advertising clause free BSD) are "compatible with GPL" because the GPL requires attribution and the licenses can be considered a form of attribution.
The actual status of this has, to the best of my knowledge, not been tested in court. Because this is a claim from the group that wants to add restrictions (the GPL side) and they generally want to be able to take BSD code and apply extra restrictions to it, it's not clear it's a large risk in practice.
In Python, it's literally just a line of text, an instruction to import something. If that thing doesn't exist, too bad. The user is responsible for supplying it, not the Python code.
My take: Of these Big Three indices, the S&P 500 will outperform others over the long term. That is not blind pro-US bias. The US economy (and, correspondingly, the S&P 500 index) is much more dynamic than EU and Japan. It can recover faster after downturns -- recessions & depressions.
<snark> As a retail investor, put your money into a very low commission ETF that tracks the S&P 500 index. See: Fidelity, State Street, or Vanguard. Enable dividend reinvestment programme ("DRIP") to buy more shares with dividends. Go to sleep for 30 years. Wake up rich. Simples. </snark>
[1]https://marker.medium.com/why-its-hard-to-kill-the-bloomberg...
https://www.investopedia.com/articles/investing/052815/finan...
That is really nice because it not only gives you something to learn but it also puts it in context.
You can google each one, there is usually a decent explanatory article
Account cancellations and so on are automatic of course, but anything that can’t be rolled back requires human input.
It is possible, but it is expensive and risky to do it right. In my case there were perhaps five people that requested data deletion over the span of 8 years the site was working. Features that are so rarely used you don’t automate.
Granted, I could’ve added a button that would send the e-mail automatically. It just honestly never crossed my mind - will implement it in future sites :)
and if you happen to know German, is there any mention of where are they getting their data?
They also say the following:
> Uns blieb bei der Aktienanalyse oft keine andere Wahl, als unzählige Geschäftsberichte der vergangenen 20 Jahre zu öffnen und dort die gesuchten Daten manuell und mühsam viele Stunden herauszusuchen.
The essence of which is that in the past they often manually extracted data from the last twenty years of annual reports from a given company. Maybe that's still how they're doing it.
Can anyone tell me how to get this working or point me to a set of instructions? I see the code and read me on GitHub but don’t know what to do next.
Thank you.
Once you have that, download the code (green button "Download as ZIP") and extract it into your WinPython folder. Go into it by typing "cd GamestonkTerminal" into the terminal and press enter. The terminal should indicate you're now in that folder.
Once there, run the following command: "pip -r install". This wil take some time to complete, during which you can follow the links in the "API Keys" section of the Readme and follow whatever steps they require for you to get an API key (probably have to register an account, create an "application" and create a key - it'll usually be a long random-looking string of characters).
Once you have the keys, edit the "config_terminal.py" using notepad or preferably Notepad++ and put the corresponding keys where "REPLACE_ME" is at the end of each line (keep the quotes!).
If you've done all that, go back to the command prompt from before and run "python ganestonk_terminal.py". The terminal should be running.
I get two errors;
1) no such option: -r
2) Permission denied when using Git HUB
Yes i'm a noob.
2) Permission denied where? I'm not sure what scenario on GitHub could possibly lead to that.
I did try and install it myself and it turned out to be significantly more annoying than expected (on Linux, mind you, so it might be easier on Win). I didn't actually get it to run because after an hour, I had other things to do.
WinPython install completed. Ran WinPython Command Prompt. Extracted zip folder to WinPython folder. Typed in "cd Gamestonk Terminal" (with and without "s). Result: The system cannot find the path specified. Terminal seems to have opened with scripts folder in command line.
Any ideas?
Thanks for your post though!
Edit: I should say, it's things like this that make up for the wasted time. I've seen several really interesting things on here over time.
They do have an API offering but you're unlikely to find serious trading shops using it except as a backup feed.
In addition there is data that only they have because it's generated as a by-product of their trading functionality. If I'm MegaBank Corp and I want to sell e.g. credit default swaps denominated in Norwegian Krone, I can advertise this by feeding my prices for such deals to Bloomberg so potential clients who also have a BB terminal can see them and click a price they like to make a trade. This gives Bloomberg a pool of liquidity/price info that no independent source has access to.
So there are very strong network effects. Even if you could spend the billions to duplicate the infrastructure and rewrite all the software required, to actually do the same thing you would also need to replicate all the business relationships with data sources.
Disclaimer: I am not a lawyer/cat/financial-advisor/etc, but I used to be a developer at Bloomberg :-)
Low latency data is mostly going to be a quality/cost/volume trade-off.
What's the easiest way to get this running?
But please implement a section for ALERTS!
I want to make them configurable so eg whenever any stock goes up by more than its normal amount for the past week/month/configurable, I want to get an alert so I can buy call options, or put options for two months from now. Those usually jump 20,000%!
I was not one of them. I have spoken to people who were, many aeons ago in the days of kipper ties, wide lapels and double brested suits, with padded shoulders. Shiny suits.
First up, people who call Bloomberg Terminal a "$25k/year chat terminal" are utterly clueless and have evidently never seen or used a Bloomberg Terminal.
The main reason Bloomberg costs so much is because unlike their competitors, Bloomberg have a "one-size-fits-all" price. You get all the data (except live data that is subject to exchange fees levied by third-parties such as NASDAQ). Contrast this with Bloomberg competitors where you spend days haggling with your neighborhood sales rep over a list of indecipherable package options (which almost always end up costing the same or more as Bloomberg by the time you add everything you want).
Secondly, hardly a year goes by without one of these "Bloomberg killers" popping up. The trouble is its nonsense.
Most of the so called "Bloomberg killers" only offer a subset of features, for example they only focus on charting. Or they only offer limited market data (e.g. US market only).
Also, most so-called "Bloomberg killers" rely on second-rate data feeds of poor or questionable quality. Services such as Bloomberg (and those of similar tier, e.g. Eikon) spend a lot of time and effort procuring first-class data.
So, don't kid yourself with the ludicrous dream of thinking you can replicate Bloomberg (or Eikon or similar) and sell it for a fraction of the cost (or give it away for free).
Proceeds to introduce you grep.