Skip to content

Things good to know when using the app

eyalk11 edited this page Oct 15, 2023 · 8 revisions

This app was designed to be intuitive. However, there are subtleties, and some things are not trivial to understand.

UI

Adjusting for currency

image

For every stock, historical prices are kept both in the original currency and in home currency (Usually usd).

There are 3 modes :

  • Not selected All prices are in in their respective original currencies. The default.
  • Partially selected (as in the image) Everything is in home currency (Usually USD). Current Currency is ignored.
  • Fully converted If current currency is different than home currency, it adjusts the prices based on current rates.

Percentage and Percentage Diff

It has meaning only when doing comparison. For each selected stock , it calculates the difference between the percentage the reference stock was changed and the reference stock X% - REF% . When percentage mode describes X/X0 / ( REF / REF0) as percentage.

Use groups

If Use Groups is on, then selected stock has no real meaning ( it should display the stocks in the groups - but you can remove or add things without an effect), but the stocks are picked based on the groups you mark .

Reference stocks

Stocks added to reference are included in the graph in any case. They aren't effected by filters , or unite options.

Filter range

The filter ranges filters selected stocks based on either top X in terms of maximum (i.e. top 3 best), or

image

Configurations

Caches

There are a lot of caches: caches for input (fast and normal), and caches for transactions (IB , MyStock,StockPrices ).
The caches allows us not to process everything from scratch and to keep historical data. They are pickled dictionaries basically(so if the python version is changed drastically, or the package is updated, it might not work).

Each cache has cache usage variable ( UseCache or Use) that has 3 options:

  • !UseCache FORCEUSE always use the cache
  • !UseCache USEIFAVAILABLE Use only if cache date is newer than MaxCacheTimeSpan or CacheSpan . These get timedelta objects.
  • !UseCache DONT Dont use cache

However, transactions are always combined from IB and MyStock into one transaction dictionary.

Transaction Caches

The MyStock cache just reflects the MyStock file, so it is nothing to worry about (unless the file is updated).

The IB contains all the transactions picked from IBFlex. Notice that IBFlex queries allows for maximum of 365 days to be saved, so this cache contains aggregate information from trades and it is important to use it.

Input Caches

The normal input cache contains price for each date and stock , symbol info , and currencies histories.

Based on the transactions, during the initial process it generates several dataframes that are used for fast calculations (such as total profit , and adjusted prices).

The fast cache contains all the data the input processor needs, including the data that is based on transactions.
If however, transactions were added, reprocessing is needed, so it will not use the fast cache. It will know this, mainly if IBFlex returns new transactions but not if MyStocks file changes. So manual intervention might be required.

What not working

Earnings mode is probably completely broken. As well as theoritical profit. I got occasional crashes of pyside6 in python 3.9.6. Will check it further.