Anatoly Popov
1cfc5106b2
chore(build): added script to update fork
Signed-off-by: Anatoly Popov <me@aensidhe.ru>
5 days ago
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
a493afb526
Task/set active sort column in accounts table component ( #6175 )
* Set active sort column
* Update changelog
6 days ago
Thomas Kaul
ac67a6e190
Task/extend portfolio calculator cash test ( #6162 )
* Extend test
7 days ago
Thomas Kaul
09e7e6182d
Task/refactor firstOrderDate to dateOfFirstActivity in portfolio service ( #6161 )
* Refactor firstOrderDate to dateOfFirstActivity
7 days ago
Kenrick Tandrian
d4d6ce1d07
Task/move admin service to UI library ( #6159 )
* Move admin service to UI library
* Update changelog
7 days 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
1 week 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
1 week ago
Thomas Kaul
3698c76972
Task/deprecate activities in portfolio holding response ( #6147 )
* Deprecate activities
* Update changelog
1 week ago
Thomas Kaul
2cd23da4e8
Release 2.228.0 ( #6146 )
1 week ago
Thomas Kaul
ec783568f5
Task/upgrade @date-fns/utc to version 2.1.1 ( #6141 )
* Upgrade @date-fns/utc to version 2.1.1
* Update changelog
1 week ago
Thomas Kaul
5cb82d59f2
Bugfix/header alignment in accounts table on mobile ( #6143 )
* Fix header alignment
* Update changelog
1 week 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
1 week ago
Thomas Kaul
0b1668dc4b
Task/rename branch and title in extract locales GitHub action ( #6142 )
* Rename branch and title
1 week 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>
1 week ago
Thomas Kaul
113238f86e
Task/remove deprecated public Stripe key (part 2) ( #6138 )
* Remove deprecated public Stripe key
1 week ago
Omkar Gujja
95cbd01a4c
Task/lazy load platforms via API in create or update account dialog ( #6130 )
* Lazy load platforms via API
* Update changelog
1 week 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
1 week ago
Thomas Kaul
6c5883349c
Release 2.227.0 ( #6134 )
1 week ago
Thomas Kaul
a6011f2c47
Task/remove deprecated public Stripe key ( #6124 )
* Remove deprecated public Stripe key
* Update changelog
1 week ago
Thomas Kaul
a1fab9fdf3
Task/upgrade stripe to version 20.1.0 ( #6132 )
* Upgrade stripe to version 20.1.0
* Update changelog
1 week ago
Thomas Kaul
6d3e16a6fb
Bugfix/initialize input properties in fire calculator ( #6122 )
* Initialize input properties
* Update changelog
1 week ago
Thomas Kaul
7999ff973b
Bugfix/jsonpath import in manual service ( #6129 )
* Fix jsonpath import
* Update changelog
1 week ago
Thomas Kaul
f67fc0edbb
Release 2.226.0 ( #6127 )
2 weeks ago
Thomas Kaul
d35e2c758c
Task/upgrade yahoo-finance2 to version 3.11.2 ( #6126 )
* Upgrade yahoo-finance2 to version 3.11.2
* 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
Thomas Kaul
57ed1fadb2
Task/update year to 2026 ( #6119 )
* Update year
2 weeks ago
Thomas Kaul
2a619e2ed7
Task/upgrade class-validator to version 0.14.3 ( #6091 )
* Upgrade class-validator to version 0.14.3
* Update changelog
2 weeks ago
Thomas Kaul
7b6271cb63
Release 2.225.0 ( #6120 )
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
Kenrick Tandrian
b12007b8b4
Task/revert adding styles to ui:storybook target ( #6107 )
* fix(sb): revert adding styles to ui:storybook target
2 weeks ago
Kenrick Tandrian
e2ed27d1c6
Task/upgrade ng-extract-i18n-merge from 3.1.0 to 3.2.1 ( #6106 )
* chore(deps): bump ng-extract-i18n-merge from 3.1.0 to 3.2.1
* feat(docs): update changelog
2 weeks ago
Kenrick Tandrian
07d7178dc3
Task/upgrade to Nx 22.1.3 and Storybook 10.1.10 ( #6105 )
* chore(deps): bump nx from 22.0 to 22.1
* fix(ts): set moduleResolution to bundler
This is a requirement for Storybook 10 migration. See https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#require-tsconfigjson-moduleresolution-set-to-value-that-supports-types-condition .
* feat(sb): change main.js to ESM
See https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#the-storybookmain-file-and-other-presets-must-be-valid-esm .
* fix(ts): set target to es2022
This resolves the warning: TypeScript compiler options "target" and "useDefineForClassFields" are set to "ES2022" and "false" respectively by the Angular CLI. To control ECMA version and features use the Browserslist configuration. For more information, see https://angular.dev/tools/cli/build#configuring-browser-compatibility .
* fix(ts): set esModuleInterop to true
* feat(docs): update changelog
* fix(ts): set moduleResolution to bundler
* fix(ts): revert target changes
* Update changelog
2 weeks ago
Kenrick Tandrian
9e8a31807d
Task/upgrade to Nx 22.0.4 and Angular 20.3 ( #6098 )
* feat(nx): migrate to v22.0.4
* fix(deps): install with Node.js 22
* Update changelog
2 weeks ago
Thomas Kaul
042d33aa00
Task/refactor read platforms permission ( #6095 )
* Refactor read platforms permission
2 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
00f943bb3b
Task/upgrade shx to version 0.4.0 ( #6088 )
* Upgrade shx to version 0.4.0
* Update changelog
3 weeks ago
Thomas Kaul
1a2ca71ef8
Task/refactor href in user account settings component ( #6085 )
* Refactoring
3 weeks ago