Anatoly Popov
fc5611d19c
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
7e7008bd1b
fix: don't fail whole request if one of providers fails, but log it
Signed-off-by: Anatoly Popov <me@aensidhe.ru>
8 months ago
Kenrick Tandrian
365318e6e0
Feature/improve localization ( #4709 )
* Update translations
* Update changelog
---------
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
8 months ago
github-actions[bot]
6c322522d9
Feature/update locales ( #4706 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
andiz2
0b7fc7a3b2
Feature/migrate data providers overview to Angular Material table ( #4704 )
* Migrate data providers overview to Angular Material table
* Update changelog
8 months ago
Kenrick Tandrian
4adc9dc9b1
Feature/upgrade to node-yahoo-finance2 version 3 ( #4695 )
* Upgrade node-yahoo-finance2 from version 2.11.3 to 3.3.1
* Update changelog
8 months ago
github-actions[bot]
7bf87352c9
Feature/update locales ( #4703 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Kenrick Tandrian
2932d57c1e
Feature/improve language localization for ZH 20250510 ( #4701 )
* Improve language localization for ZH 20250510
* Update changelog
8 months ago
github-actions[bot]
755d85a54b
Feature/update locales ( #4689 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Thomas Kaul
d99217a434
Feature/refactor @Input in portfolio proportion chart component ( #4684 )
* Refactor @Input in GfPortfolioProportionChartComponent
8 months ago
Thomas Kaul
480709c32a
Bugfix/add missing permission guard in create watchlist item endpoint ( #4686 )
* Add missing permission guard
* Update changelog
8 months ago
Thomas Kaul
11629ffd26
Feature/clean up unused interfaces ( #4685 )
* Clean up unused interfaces
8 months ago
Thomas Kaul
037d3b1a60
Feature/rename Order to activities in User database schema ( #4669 )
* Rename Order to activities in User database schema
* Update changelog
8 months ago
github-actions[bot]
72ccf47526
Feature/update locales ( #4678 )
* Update locales
* Clean up
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
8 months ago
Georgine Forner
c81d3ced75
Feature/improve language localization for IT 20250509 ( #4681 )
* Improve language localization for IT 20250509
* Update changelog
8 months ago
andiz2
1215803a40
Bugfix/fix ApiKeyStrategy error ( #4682 )
* Fix ApiKeyStrategy error
8 months ago
Felix Jordan
aadd9f56a0
Feature/extend admin endpoint by asset profile count per data provider ( #4676 )
* Extend admin endpoint by asset profile count per data provider
* Update changelog
8 months ago
Hash Palak
8e76bd82eb
Feature/improve language localization for Catalan ( #4675 )
* Improve language localization for Catalan
* Update changelog
8 months ago
Haruka Kishida
828bd5f172
Feature/upgrade to NestJS 11 ( #4270 )
* Upgrade to NestJS 11
* Update changelog
8 months ago
github-actions[bot]
03e27dd233
Feature/update locales ( #4670 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Thomas Kaul
67db1b0de4
Feature/rename Order to activities in SymbolProfile database schema ( #4661 )
* Rename Order to activities
* Update changelog
8 months ago
Kenrick Tandrian
c38dab5ab0
Feature/extend holding endpoint by performances ( #4660 )
* Extend holding endpoint by performances
* Update changelog
8 months ago
Kenrick Tandrian
40d3eaa023
Bugfix/fix performance calculation on date of activity when unit price differs from market price ( #4650 )
* Fix performance calculation on date of activity when unit price differs from market price
* Update changelog
8 months ago
github-actions[bot]
3ec2460bfe
Feature/update locales ( #4664 )
* Update locales
* Clean up
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
8 months ago
Aris Hadrian
307621e103
Feature/improve language localization for TR 20250506 ( #4663 )
* Improve language localization for TR
* Update changelog
8 months ago
Marcin Szymański
28d2fd3877
Bugfix/restore incorrect fee currency conversion ( #4645 )
* Restore incorrect fee currency conversion
* Update changelog
8 months ago
github-actions[bot]
5b6447b60d
Feature/update locales ( #4658 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Thomas Kaul
d661cdc78f
Feature/rename account to accounts in platform database schema ( #4656 )
* Rename Account to accounts in platform database schema
* Update changelog
8 months ago
Thomas Kaul
ecffb53f07
Feature/extend faq pages ( #4655 )
* Extend FAQ pages
* Update changelog
8 months ago
github-actions[bot]
b93671c740
Feature/update locales ( #4654 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Thomas Kaul
620ae023d9
Feature/move watchlist to general availability ( #4653 )
* Add watchlist to features page
* Move watchlist to general availability
* Update changelog
8 months ago
Thomas Kaul
3646fb7f77
Feature/refactor portfolio holding response ( #4649 )
* Refactor portfolio holding response
* maxPrice -> marketPriceMax
* minPrice -> marketPriceMin
* orders -> activities
8 months ago
Thomas Kaul
1bced96460
Feature/deprecate portfolio position endpoints ( #4648 )
* Deprecate api/v1/portfolio/position endpoints
* Update changelog
8 months ago
Thomas Kaul
3e963228d6
Feature/refactor accounts response interface ( #4644 )
* Refactor accounts response interface
8 months ago
Thomas Kaul
f70d71d5bd
Feature/improve watchlist for impersonation mode ( #4632 )
* Improve watchlist for impersonation mode
* Update changelog
8 months ago
Kenrick Tandrian
770b322137
Feature/extend watchlist endpoint by name, performances and market condition ( #4634 )
* Extend watchlist endpoint by name, performances and market condition
* Update changelog
8 months ago
Thomas Kaul
6bb85c4fb8
Bugfix/allow GBp in currency code validation ( #4640 )
* Allow GBp in currency code validation
* Update changelog
8 months ago
Vinodh Zamboulingame
e314efb2e1
Feature/improve language localization for FR 20250501 ( #4637 )
* Improve french translation
* Update changelog
8 months ago
csehatt741
ca992db14e
Bugfix/save activities with type INTEREST, ITEM and LIABILITY ( #4630 )
* Save activities with type INTEREST, ITEM and LIABILITY
* Update changelog
8 months ago
Thomas Kaul
8fbdcac66c
Feature/rename Order to activities in account database schema ( #4577 )
* Rename Order to activities
* Update changelog
8 months ago
github-actions[bot]
8df9667979
Feature/update locales ( #4629 )
* 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>
8 months ago
Kenrick Tandrian
73f009e43b
Feature/extend GUI to delete watchlist item ( #4624 )
* Extend GUI to delete watchlist item
* Update changelog
8 months ago
Thomas Kaul
d919622932
Bugfix/fix create watchlist item for new asset profile ( #4625 )
* Fix create watchlist item for new asset profile
8 months ago
github-actions[bot]
a5fe259761
Feature/update locales ( #4623 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
Thomas Kaul
b90bfc3d6e
Feature/extend data providers management of admin control panel ( #4615 )
* Extend data providers management
* Update changelog
8 months ago
github-actions[bot]
1b5a65d391
Feature/update locales ( #4621 )
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
8 months ago
github-actions[bot]
fe1df8095a
Feature/update locales ( #4620 )
* 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>
8 months ago
github-actions[bot]
7d0af34034
Feature/update locales ( #4619 )
* 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>
8 months ago
Thomas Kaul
398833a0e3
Feature/improve wording of data providers management ( #4617 )
* Improve wording
8 months ago
Kenrick Tandrian
c671ea4022
Feature/add frontend for watchlist ( #4604 )
* Add frontend for watchlist
* Update changelog
---------
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
8 months ago