Anatoly Popov
158095c7c8
feat: support security from MOEX via MOEX api
**Justification**
My main portfolio is on MOEX, so I need a way to manage it. Ghostfolio looks
cool but there's no way to proper manage assets on MOEX. So, first I've found
`moex-iss-api` npm package. Turns out it needed some help, so couple of PR
there. After that I was ready to work on ghostfolio.
This commit implements full `DataProviderInterface` spec:
- Disabled by default, so only those who need it would enabled it.
- We `canHandle` all symbols
- We aren't premium feature
- `getQuotes`, `getHistorical` and `search` were pretty straightforward
- `getTestSymbol` return `SBER` because if something happens to `SBER` stocks
then MOEX would definetely doesn't matter anymore for sometime.
- `getAssetProfile` and `getDividends` proved to be tricky to implement, so
I'll cover them below separately.
**getAssetProfile**
**Currency**
This is main method to get info about assets. Unfortunately, due to fall of
USSR and ruble denomination in 1998, we have three currency tickers: 'RUR',
'SUR', 'RUB' For convenience we use 'RUB' instead of all of them. I don't see
practical value to differentiate between them here, but I'm open to suggestions.
Also, some of the tickers do not return currency in which they're listed on
MOEX. Assumed that it's also 'RUB'.
**Name**
Every asset can have several things to identify it. And all of them are
optional in MOEX API, except `secid` which is `Security ID`. So we use them
for name in this order of preference:
1. Latin (usually English) name.
2. Latin short name.
3. Russian name.
4. Security ID.
**Country**
I try to detect country, parsing ISIN: first two letters should be country code.
**Sectors**
MOEX supports some industry related indices, so when we first encounter some
symbol, I check whether it's in those indices and assign sectors accordingly.
**AssetClass and AssetSubClass**
At first, I was tempted to leave them empty, but finally decided to look into.
I downloaded all asset types from MOEX and tried to best of my knowledge assign
asset classes and subclasses. If I wasn't able to find proper relation, I left
the cell empty. After that I took the table (you can check it in the comments
in the code) and made `SecurityTypeMap` interface.
**getDividends**
MOEX API for dividends isn't documented at all (or probably I didn't find
proper docs) and sometimes it doesn't return the newest dividends. Surprisingly,
you can get dividends for MOEX-related assets from YAHOO, but the date can
differ. So, there is heurestic implemented: if those date are no more than two
days apart and payout is the same, then it's the exact same payout and we
merge them.
Signed-off-by: Anatoly Popov <me@aensidhe.ru>
8 months ago
Anatoly Popov
6956d79dc1
fix: if yahoo service returns zero quotes do not fail enhance request
Signed-off-by: Anatoly Popov <me@aensidhe.ru>
7 months ago
Anatoly Popov
978cc9c10c
fix: don't fail whole request if one of providers fails, but log it
Signed-off-by: Anatoly Popov <me@aensidhe.ru>
7 months ago
Thomas Kaul
ac67a6e190
Task/extend portfolio calculator cash test ( #6162 )
* Extend test
1 week ago
Thomas Kaul
09e7e6182d
Task/refactor firstOrderDate to dateOfFirstActivity in portfolio service ( #6161 )
* Refactor firstOrderDate to dateOfFirstActivity
1 week ago
Kenrick Tandrian
d4d6ce1d07
Task/move admin service to UI library ( #6159 )
* Move admin service to UI library
* Update changelog
1 week ago
Thomas Kaul
feb25c9266
Bugfix/fix filtering by asset class in get holdings endpoint ( #6151 )
* Fix filtering by asset class
* Update changelog
1 week ago
Thomas Kaul
5101c406b4
Task/refactor dividend import ( #6150 )
* Refactor dividend import
* Update changelog
2 weeks ago
Kenrick Tandrian
601008e0e6
Task/move data service to UI library ( #6154 )
* feat(lib): move data service
* feat(client): update imports
* feat(lib): update imports
* Update changelog
2 weeks ago
Kenrick Tandrian
3943ca9f88
Feature/extend holdings endpoint to include performance with currency effects for cash positions ( #5650 )
* Extend holdings endpoint to include performance with currency effects for cash positions
* Update changelog
2 weeks ago
github-actions[bot]
61d51ec207
Feature/update locales ( #6083 )
* Update locales
* Update translations
* Update changelog
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
2 weeks ago
Omkar Gujja
95cbd01a4c
Task/lazy load platforms via API in create or update account dialog ( #6130 )
* Lazy load platforms via API
* Update changelog
2 weeks ago
Sven Günther
c52d7f46c2
Task/move scraper configuration to tab in asset profile dialog ( #6094 )
* Move scraper configuration to tab in asset profile dialog
* Update changelog
2 weeks ago
Thomas Kaul
a6011f2c47
Task/remove deprecated public Stripe key ( #6124 )
* Remove deprecated public Stripe key
* Update changelog
2 weeks ago
Thomas Kaul
a1fab9fdf3
Task/upgrade stripe to version 20.1.0 ( #6132 )
* Upgrade stripe to version 20.1.0
* Update changelog
2 weeks ago
Thomas Kaul
7999ff973b
Bugfix/jsonpath import in manual service ( #6129 )
* Fix jsonpath import
* Update changelog
2 weeks ago
Thomas Kaul
549436d919
Task/extend data providers content in self-hosting FAQ ( #6123 )
* Extend data providers content
* Update changelog
2 weeks ago
Kenrick Tandrian
742415833c
Task/upgrade to Nx 22.3.3 and Angular 21.0 ( #6109 )
* chore(deps): upgrade to Nx 22.3.3 and Angular 21.0
* feat(nx): run migrations
* fix(ts): change module and moduleResolution for api
* feat(ts): remove duplicates of bundler module resolution
* fix(ts): enable ESM interoperability
* fix(api): update imports
* fix(ts): set module to preserve in api spec
* fix(ts): update target
* resolve comments
* fix(api): set jest moduleNameMapper
* fix(ts): update tsconfig in api spec
* fix(api): revert import changes
* fix(apps): revert unnecessary changes
* fix(client): change marked js file
* fix(deps): remove duplicates
2 weeks ago
Kenrick Tandrian
2167c4ca8e
Task/upgrade to marked 16.4.2 and ngx-markdown 20.1.0 ( #6117 )
* chore(deps): bump marked and ngx-markdown
* fix(client): change marked script file
* fix(client): change umd to esm
* fix(client): remove marked script file from project.json
* feat(docs): update changelog
2 weeks ago
Thomas Kaul
0f9bebcf82
Task/eliminate ngx-stripe ( #6116 )
* Eliminate ngx-stripe
* Update changelog
2 weeks ago
Thomas Kaul
40c01c38dd
Task/deprecate platforms in info item ( #6114 )
* Deprecate platforms
2 weeks ago
Karel De Smet
eb9d66e760
Task/improve user detail dialog routing in Admin Control panel ( #6104 )
* Improve user detail dialog routing in Admin Control panel
* Update changelog
2 weeks ago
Paul van der lei
ee1f606b59
Feature/create endpoint to get all platforms ( #6097 )
* Create endpoint to get all platforms
* Update changelog
2 weeks ago
Thomas Kaul
7abeb4d76a
Task/improve language localization for de 20251229 ( #6108 )
* Update translations
* Update changelog
2 weeks ago
Vahant Sharma
e668c6465e
Bugfix/time in market for impersonation mode ( #6103 )
* Fix time in market for impersonation mode
* Update changelog
2 weeks ago
Kenrick Tandrian
5b7356ff28
Task/upgrade jest to version 30.2.0 ( #6110 )
* chore(deps): bump jest to 30.2.0
* fix(test): update setup test scripts
* fix(deps): resolve vulns
2 weeks ago
Thomas Kaul
042d33aa00
Task/refactor read platforms permission ( #6095 )
* Refactor read platforms permission
3 weeks ago
Eduardo Almeida
7b885a11e2
Bugfix/fix asset profile deletion and allow editing asset profile identifiers with MANUAL data source ( #6090 )
* Fix asset profile deletion and allow editing asset profile identifiers with MANUAL data source
* Update changelog
3 weeks ago
Karel De Smet
5727ce3375
Bugfix/add missing currency suffix to cash balance field in create or update account dialog ( #6092 )
* Add missing currency suffix to cash balance field in create or update account dialog
* Update changelog
3 weeks ago
Thomas Kaul
1a2ca71ef8
Task/refactor href in user account settings component ( #6085 )
* Refactoring
3 weeks ago
Thomas Kaul
078b2327c5
Release 2.224.2 ( #6086 )
4 weeks ago
Thomas Kaul
1dd5ff51ee
Revert "Task/refactor language in various components ( #6078 )" ( #6081 )
This reverts commit 80c278555c .
4 weeks ago
github-actions[bot]
8345eee16e
Update locales ( #6068 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
4 weeks ago
Thomas Kaul
80c278555c
Task/refactor language in various components ( #6078 )
* Refactor language
4 weeks ago
Thomas Kaul
6e2c61dece
Feature/add ISIN number to asset profile dialog ( #6076 )
* Add ISIN number
* Update changelog
4 weeks ago
David Requeno
152cda19cf
Bugfix/localize date formatting in FIRE calculator ( #6077 )
* Localize date formatting
* Update changelog
4 weeks ago
Thomas Kaul
48952c9bbd
Task/improve localization of various components ( #6074 )
* Improve localization
4 weeks ago
Sven Günther
1fa96536e0
Task/include first and last date of each calendar year in getChartDateMap() ( #6069 )
* Include first and last date of each calendar year in getChartDateMap()
* Update changelog
4 weeks ago
Thomas Kaul
2feef3a17e
Task/refresh cryptocurrencies list 20251215 ( #6073 )
* Update cryptocurrencies.json
* Update changelog
4 weeks ago
github-actions[bot]
37bf032d6e
Feature/update locales ( #6065 )
* Update locales
* Update translations
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
1 month ago
Thomas Kaul
b2c7f8b3ad
Task/improve language localization for de 20251214 ( #6066 )
* Improve language localization
1 month ago
github-actions[bot]
203ae62b65
Feature/update locales ( #6049 )
* Update locales
* Update translations
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
1 month ago
Johnson Towoju
de3f0c4207
Feature/extend FIRE page with projection information at retirement date ( #6034 )
* Extend FIRE page with projection information at retirement date
* Update changelog
---------
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
1 month ago
Thomas Kaul
0683c5b69b
Task/update OSS Friends ( #6047 )
* Update OSS Friends
1 month ago
Kenrick Tandrian
76e06ed59f
Task/move notification service to UI library ( #6048 )
* Move notification service to UI library
* Update changelog
1 month ago
github-actions[bot]
1cbcb623b5
Feature/update locales ( #5993 )
* Update locales
* Update translation
* Update changelog
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
1 month ago
Thomas Kaul
0f7e5a2504
Task/improve OIDC login button label ( #6043 )
* Improve label
1 month ago
Thomas Kaul
e20530d5f0
Task/activate 3d hover effect in account membership overview ( #6039 )
* Activate 3d hover effect
1 month ago
Germán Martín
4cd16c33f8
Feature/OIDC authentication ( #5981 )
* Set up OIDC authentication
* Update changelog
1 month ago
Thomas Kaul
9aa73f74f8
Feature/data source transformation in import for self-hosted environments ( #6032 )
* Introduce data source transformation support for self-hosted environments
* Update changelog
1 month ago