What is good stock portfolio management software on Linux

If you are investing in the stock market, you probably understand the importance of a sound portfolio management plan. The goal of portfolio management is to come up with the best investment plan tailored for you, considering your risk tolerance, time horizon and financial goals. Given its importance, no wonder there are no shortage of commercial portfolio management apps and stock market monitoring software, each touting various sophisticated portfolio performance tracking and reporting capabilities.

For those of you Linux aficionados who are looking for a good open-source portfolio management tool to manage and track your stock portfolio on Linux, I would highly recommend a Java-based portfolio manager called JStock. If you are not a big Java fan, you might be turned off by the fact that JStock runs on a heavyweight JVM. At the same time I am sure many people will appreciate the fact that JStock is instantly accessible on every Linux platform with JRE installed. No hoops to jump through to make it work on your Linux environment.

The day is gone when "open-source" means "cheap" or "subpar". Considering that JStock is just a one-man job, JStock is impressively packed with many useful features as a portfolio management tool, and all that credit goes to Yan Cheng Cheok! For example, JStock supports price monitoring via watchlists, multiple portfolios, custom/built-in stock indicators and scanners, support for 27 different stock markets and cross-platform cloud backup/restore. JStock is available on multiple platforms (Linux, OS X, Android and Windows), and you can save and restore your JStock portfolios seamlessly across different platforms via cloud backup/restore.

Sounds pretty neat, huh? Now I am going to show you how to install and use JStock in more detail.

Install JStock on Linux

Since JStock is written in Java, you must install JRE to run it. Note that JStock requires JRE 1.8 or higher. If your JRE version does not meet this requirement, JStock will fail with the following error.

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/yccheok/jstock/gui/JStock : Unsupported major.minor version 51.0

Once you install JRE on your Linux, download the latest JStock release from the official website, and launch it as follows.

$ wget https://github.com/yccheok/jstock/releases/download/release_1-0-7-13/jstock-
$ unzip jstock-
$ cd jstock
$ chmod +x jstock.sh
$ ./jstock.sh

In the rest of the tutorial, let me demonstrate several useful features of JStock.

Monitor Stock Price Movements via Watchlist

On JStock you can monitor stock price movement and automatically get notified by creating one or more watchlists. In each watchlist, you can add multiple stocks you are interested in. Then add your alert thresholds under "Fall Below" and "Rise Above" columns, which correspond to minimum and maximum stock prices you want to set, respectively.

For example, if you set minimum/maximum prices of AAPL stock to $102 and $115.50, you will be alerted via desktop notifications if the stock price goes below $102 or moves higher than $115.50 at any time.

You can also enable email alert option, so that you will instead receive email notifications for such price events. To enable email alerts, go to "Options" menu. Under "Alert" tab, turn on "Send message to email(s)" box, and enter your Gmail account. Once you go through Gmail authorization steps, JStock will start sending email alerts to that Gmail account (and optionally CC to any third-party email address).

Manage Multiple Portfolios

JStock allows you to manage multiple portfolios. This feature is useful if you are using multiple stock brokers. You can create a separate portfolio for each broker and manage your buy/sell/dividend transactions on a per-broker basis. You can switch different portfolios by choosing a particular portfolio under "Portfolio" menu. The following screenshot shows a hypothetical portfolio.

Optionally you can enable broker fee option, so that you can enter any broker fees, stamp duty and clearing fees for each buy/sell transaction. If you are lazy, you can enable fee auto-calculation and enter fee schedules for each brokering firm from the option menu beforehand. Then JStock will automatically calculate and enter fees when you add transactions to your portfolio.

Screen Stocks with Built-in/Custom Indicators

If you are doing any technical analysis on stocks, you may want to screen stocks based on various criteria (so-called "stock indicators"). For stock screening, JStock offers several pre-built technical indicators that capture upward/downward/reversal trends of individual stocks. The following is a list of available indicators.

  • Moving Average Convergence Divergence (MACD)
  • Relative Strength Index (RSI)
  • Money Flow Index (MFI)
  • Commodity Channel Index (CCI)
  • Doji
  • Golden Cross, Death Cross
  • Top Gainers/Losers

To install any pre-built indicator, go to "Stock Indicator Editor" tab on JStock. Then click on "Install" button in the right-side panel. Choose "Install from JStock server" option, and then install any indicator(s) you want.

Once one or more indicators are installed, you can scan stocks using them. Go to "Stock Indicator Scanner" tab, click on "Scan" button at the bottom, and choose any indicator.

Once you select the stocks to scan (e.g., NYSE, NASDAQ), JStock will perform scan, and show a list of stocks captured by the indicator.

Besides pre-built indicators, you can also define custom indicator(s) on your own with a GUI-based indicator editor. The following example screens for stocks whose current price is less than or equal to its 60-day average price.

Cloud Backup and Restore between Linux and Android JStock

Another nice feature of JStock is cloud backup and restore. JStock allows you to save and restore your portfolios/watchlists via Google Drive, and this feature works seamlessly across different platforms. Such cross-platform backup/restore can be useful if you are using JStock back and forth on two different platforms. I tested it on Linux desktop and Android mobile, and it worked beautifully. I saved my JStock portfolios to Google Drive on Android, and was able to restore them on Linux version of JStock. Ideally it would be nice if JStock automatically synced to the cloud, so that I wouldn't have to trigger cloud backup/restore manually. Still thumbs up to this nice feature.

If you don't see your portfolios/watchlists after restoring from Google Drive, make sure that your country is correctly set under "Country" menu.

JStock Android free version is available from Google Play store. You will need to upgrade to premium version for one-time payment if you want to use its full features (e.g., cloud backup, alerts, charts). I think the premium version is definitely worth it.

As a final note, I should mention that its creator, Yan Cheng Cheok, is pretty active in JStock development, and quite responsive in addressing any bugs. Kudos to him!

What do you think of JStock as portfolio tracking software?

Subscribe to Xmodulo

Do you want to receive Linux FAQs, detailed tutorials and tips published at Xmodulo? Enter your email address below, and we will deliver our Linux posts straight to your email box, for free. Delivery powered by Google Feedburner.

Support Xmodulo

Did you find this tutorial helpful? Then please be generous and support Xmodulo!

The following two tabs change content below.
Dan Nanni is the founder and also a regular contributor of Xmodulo.com. He is a Linux/FOSS enthusiast who loves to get his hands dirty with his Linux box. He likes to procrastinate when he is supposed to be busy and productive. When he is otherwise free, he likes to watch movies and shop for the coolest gadgets.

2 thoughts on “What is good stock portfolio management software on Linux

    • Functionality-wise probably no one could deny that. But the recent data breach at Scottrade makes me have second thoughts about creating throwaway accounts at the commercial brokers for the benefits of their tools. Besides, you don't want to support FOSS? :)

Leave a comment

Your email address will not be published. Required fields are marked *