-
Notifications
You must be signed in to change notification settings - Fork 1
Things good to know when using the app
This app was designed to be intuitive. However, there are subtleties, and some things are not trivial to understand.
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.
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.
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 .
Stocks added to reference are included in the graph in any case. They aren't effected by filters , or unite options.
The filter ranges filters selected stocks based on either top X in terms of maximum (i.e. top 3 best), or
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.
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.
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.
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.