Anatoly Popov
b4e82d603f
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>
7 months ago
Anatoly Popov
14d6f0e7c0
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
6ed38814b5
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
332216ae1c
Task/refactor primary text colors ( #5900 )
* Refactor primary text colors
2 months ago
Thomas Kaul
da71ee73d0
Task/improve promotion system ( #5930 )
* Add fallback to promotion logic
2 months ago
Thomas Kaul
9b4392eee0
Task/improve localization of limited offer ( #5929 )
* Improve localization
2 months ago
TMs
385d7f6562
Feature/improve language localization for ZH 20251110 ( #5928 )
* Improve language localization for ZH
* Update changelog
2 months ago
Thomas Kaul
9383fc00cb
Task/introduce interface for get account response ( #5902 )
* Introduce interface for get account response
2 months ago
Thomas Kaul
87891976ab
Task/reorder lifecycle hooks in various components ( #5919 )
* Reorder lifecycle hooks
2 months ago
Arghya Das
697ecfe9bd
Feature/add endpoint to get user by id ( #5910 )
* Add endpoint to get user by id
* Update changelog
---------
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
2 months ago
Germán Martín
1ae3519d7f
Bugfix/assign admin role to first user signing up ( #5914 )
* Assign admin role to first user signing up
* Update changelog
2 months ago
David Requeno
45b21cada9
Task/migrate app component to standalone ( #5906 )
* Migrate app component to standalone
* Update changelog
2 months ago
Thomas Kaul
f0ea31279e
Bugfix/header alignment in admin platform and tag tables ( #5908 )
* Fix header alignment
* Update changelog
2 months ago
github-actions[bot]
58d9235b8a
Feature/update locales ( #5916 )
* Update locales
* Update translation
---------
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 months ago
Thomas Kaul
a1920fedd5
Feature/improve usability for benchmark and markets management in asset profile dialog ( #5911 )
* Improve usability for benchmark and markets management
* Update changelog
2 months ago
github-actions[bot]
c84f4bd5e6
Feature/update locales ( #5875 )
* Update locales
* 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 months ago
Thomas Kaul
dfb4310904
Task/improve localization of get started buttons ( #5913 )
* Improve localization
2 months ago
Thomas Kaul
a5f934460b
Task/introduce interface for get admin users response ( #5903 )
* Introduce interface for get admin users response
2 months ago
Thomas Kaul
592baec9f3
Bugfix/fix style of safe withdrawal rate selector ( #5899 )
* Fix style of selector
* Update changelog
2 months ago
Kenrick Tandrian
a92f94e697
Feature/migrate client build executor to @nx/angular:browser-esbuild ( #5883 )
* Migrate client build executor to @nx/angular:browser-esbuild
* Update changelog
2 months ago
Thomas Kaul
a4040c3c3c
Task/remove Internet Identity as social login provider ( #5891 )
* Remove Internet Identity
* Update changelog
2 months ago
Sven Günther
96cad6ad7a
Feature/atomic data replacement during historical market data gathering ( #5858 )
* Atomic data replacement during historical market data gathering
* Update changelog
2 months ago
Thomas Kaul
5598b3780c
Feature/set up unit test for BTCEUR in base currency EUR ( #5778 )
* Set up test
2 months ago
Kenrick Tandrian
4ecfdadda4
Task/resolve @typescript-eslint/no-unsafe-function-type ESLint rule ( #5889 )
* fix(lint): remove @typescript-eslint/no-unsafe-function-type override
* fix(lint): resolve eslint errors
2 months ago
Kenrick Tandrian
b705b8f07b
Task/resolve @typescript-eslint/prefer-regexp-exec ESLint rule ( #5885 )
* fix(lint): remove @typescript-eslint/prefer-regexp-exec override
* fix(lint): resolve eslint errors
2 months ago
Thomas Kaul
f188d1b2ab
Feature/update OSS friends 20251031 ( #5879 )
* Update OSS friends
2 months ago
Thomas Kaul
b05eb9ede4
Task/conditionally show Sponsors section on about page ( #5882 )
* Conditionally show sponsors section
2 months ago
Thomas Kaul
7e5b2ce980
Feature/refresh cryptocurrencies list 20251031 ( #5880 )
* Update cryptocurrencies.json
* Update changelog
2 months ago
Kenrick Tandrian
294f1a5f11
Task/migrate tags selector component in holding detail dialog to form control ( #5850 )
* Migrate tags selector component to form control
* Update changelog
2 months ago
Thomas Kaul
7de0db8330
Bugfix/LambdaTest logo ( #5873 )
* Fix LambdaTest logo
2 months ago
Thomas Kaul
d7f3578ef9
Task/add error logging to symbol lookup in Trackinsight data enhancer ( #5872 )
* Add error logging
* Update changelog
2 months ago
github-actions[bot]
af6d661512
Feature/update locales ( #5852 )
* 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>
2 months ago
Thomas Kaul
674a96ce8c
Feature/improve icon of holdings tabs ( #5842 )
* Improve icon of holdings tabs
* Update changelog
2 months ago
Thomas Kaul
ed115c59b1
Feature/improve usability of user detail dialog ( #5868 )
* Do not reload on close
* Update changelog
2 months ago
Thomas Kaul
8c80086da1
Bugfix/fix typography hierarchy in resources pages ( #5863 )
* Fix hierarchy
2 months ago
Thomas Kaul
8bd47d3f7c
Feature/set up sponsors section on about page ( #5862 )
* Set up sponsors section
* Update changelog
2 months ago
Vansh
7dc74fe681
Task/refactor column definitions in AI service ( #5834 )
* Refactor column definitions in AI service
* Update changelog
2 months ago
Thomas Kaul
ecc35c9ffa
Task/improve typings of dialogs ( #5846 )
* Improve typings
2 months ago
github-actions[bot]
6a93d8c050
Feature/update locales ( #5847 )
* 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 months ago
Kenrick Tandrian
5547108408
Feature/add close holding button to holding detail dialog ( #5832 )
* Add close holding button to holding detail dialog
* Update changelog
2 months ago
Abhishek Singla
54e0f5e466
Feature/extend user detail dialog ( #5844 )
* Extend user detail dialog
* Update changelog
2 months ago
Thomas Kaul
f4bad6acaf
Bugfix/provide missing locale to rule settings dialog ( #5845 )
* Provide locale to rule settings dialog
* Update changelog
2 months ago
vitalymatyushik
31e2346101
Bugfix/market price in base currency during the portfolio snapshot calculation ( #5828 )
* Add fallback for market price in base currency
* Update changelog
2 months ago
Vaishnavi Parabkar
76a2249ba4
Feature/integrate SelfhostedHub into logo carousel ( #5786 )
* Add SelfhostedHub
* Update changelog
---------
Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
2 months ago
Thomas Kaul
e03f58feff
Task/refactor Activities interface to ActivitiesResponse interface ( #5835 )
* Refactor Activities interface to ActivitiesResponse interface
2 months ago
github-actions[bot]
d1a151bd60
Feature/update locales ( #5807 )
* 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 months ago
Harsh Santwani
482b97ba9b
Feature/set up user detail dialog in admin control panel ( #5819 )
* Set up user detail dialog
* Update changelog
2 months ago
Sven Günther
0ec9c1dd93
Bugfix/custom asset name rendering in import activities dialog ( #5787 )
* Fix custom asset name rendering in import activities dialog
* Update changelog
2 months ago
David Requeno
1f6b061ab0
Task/migrate tablemark to v4 ( #5809 )
* Migrate tablemark to v4
* Update changelog
2 months ago
Vansh
0b28da879b
Task/extend export response by performanceCalculationType ( #5816 )
* Extend export response by performanceCalculationType
* Update changelog
2 months ago