Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
hug-sch committed Dec 1, 2024
2 parents 2a00daa + 30f25d7 commit 0532c4c
Show file tree
Hide file tree
Showing 11 changed files with 212 additions and 5 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@ old/
s.bat
.DS_Store
test.md
.idea
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
208 changes: 207 additions & 1 deletion docs/de/how-to/historische-aktienkurse/json.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,210 @@ Abbildung: JSON Kursdaten Parameter.{class=pp-figure}

![](images/json-yahoo-parameter.png)

Bei den meisten Diensten muss man sich registrieren, um einen API-Schlüssel zu erhalten, eine eindeutige Kennung, die den Nutzer authentifiziert und den Zugang zum Dienst ermöglicht. Zwar bieten zahlreiche Finanzdienste scheinbar kostenlose API-Schlüssel an, doch erweisen sich ihre Nutzungsbedingungen und langfristigen Verpflichtungen oft als unzureichend. Portfolio Performance hat aus Kompatibilitätsgründen mehrere dieser Dienste in seiner Liste der Kursquellen-Anbieter behalten; z.B. Alpha Vantage, eodhd, .... In der Regel empfiehlt es sich, Portfolio Report und Yahoo Finance für ein typisches Portfolio zu nutzen.
Bei den meisten Diensten muss man sich registrieren, um einen API-Schlüssel zu erhalten, eine eindeutige Kennung, die den Nutzer authentifiziert und den Zugang zum Dienst ermöglicht. Zwar bieten zahlreiche Finanzdienste scheinbar kostenlose API-Schlüssel an, doch erweisen sich ihre Nutzungsbedingungen und langfristigen Verpflichtungen oft als unzureichend. Portfolio Performance hat aus Kompatibilitätsgründen mehrere dieser Dienste in seiner Liste der Kursquellen-Anbieter behalten; z.B. Alpha Vantage, eodhd, .... In der Regel empfiehlt es sich, Portfolio Report und Yahoo Finance für ein typisches Portfolio zu nutzen.


## Beispiel Onvista API (Stand: 03.08.2024)
Onvista (https://www.onvista.de/) hat ein breites Spektrum an Assets und dazu auch sehr lang vorgehaltene historische Daten.
Wer historische Daten von vor 10 Jahren und mehr benötigt (bspw. für das Tracken von Rentenversicherunge etc.),
hat hier große Chancen fündig zu werden.

Auf der Seite eines Assets kann man aktuell unter `Alle Kurse` ganz unten unter `Historische Kurse zu XYZ`
historische Daten von einem Monat direkt einsehen. Längere Zeiträume müssen als CSV Datei runter geladen werden.

Abbildung: Alle Kurse anzeigen Onvista {class="pp-figure"}

![](images/screenshot_onvista_json_alle_kurse.png)

Abbildung: Historische Kursdaten Onvista {class="pp-figure"}

![](images/screenshot_onvista_json_historische_Daten.png)

In der Filterauswahl über der Tabelle ist es möglich den jeweiligen Handelsplatz auszuwählen,
das Startdatum festzulegen und den Zeitraum, der betrachtet werden soll. Sobald mehr als ein Monat ausgewählt wird,
erscheint statt der Kursliste ein Download Button und man muss eine CSV runter laden.
Ein automatisierter CSV Import von einer URL ist über Portfolio Performance aktuell nicht möglich.
Da aber im Hintergrund des Download-Mechanismuses ein Call gegen die Onvista API (HTTP) stattfindet,
welcher ein JSON object zurückliefert, kann die Call-URL und das zurückgegebene JSON für einen automatisierten Import
genutzt werden.

Beispiel-Url:
[https://api.onvista.de/api/v1/instruments/FUND/6278016/eod_history?idNotation=35420185&range=M1&startDate=2024-07-03&withEarnings=true](https://api.onvista.de/api/v1/instruments/FUND/6278016/eod_history?idNotation=35420185&range=M1&startDate=2024-07-03&withEarnings=true)).

### URL Aufbau
Die URL unterscheidet sich, je nachdem was man in der Filterauswahl über der Tabelle ausgewählt hat.

Die wichtigen Parts sind:

- Der Wert hinter `/FUND/` (hier: `6278016`) in der URI, stellt das zu exportierende Asset dar.
- Der Parameter `idNotation` (hier: `35420185`) bestimmt den Handelsplatz.
- Der Parameter `range` (hier: `M1`) gibt den Betrachtungszeitraum an (Dauer).
- Der Parameter `startDate` (hier: `2024-07-03`) gibt das Startdatum der Kurse an.

Die weiteren Parameter sind für den Import unerheblich.

### URL ermitteln
Um den größtmöglichen historischen Zeitraum zu beziehen, stellt man bei `Dauer` den Wert `max.` ein.
Das Startdatum springt dann automatisch auf den Anfang der Unix Epoche `01.01.1970`.
Anschließend wählt man den gewünschten Handelsplatz oder probiert einige Handelsplätze durch und wählt den mit der
längsten Historie oder der besten Datenqualität. Dazu lädt man sich die Dateien zunächst exemplarisch runter und öffnet
sie in Excel oder ähnlichem.

Um nun an die URL des Calls zu kommen, kann man die Developer Tools der jeweiligen Browser nutzen. Im Chrome kann die
Developer Toolbar über die Taste `F12` oder die Tastenkombination `Strg+Shift+I` geöffnet werden (alternativ über das
Browsermenü unter `Weitere Tool -> Developer Tools`).

In den Developer Tools wählt man nun den `Netzwerk` Tab und stellt den Filter `Fetch/XHR` ein. Außerdem stellt man beim
Textfilter `eod_history?` ein. Zudem löscht man zuvor am besten einmal alle bestehenden Calls mittels des
`Clear Nework Logs`-Button.
So bekommt man beim Ausführen des Downloads nur die Calls angezeigt, die zum Download der
CSV gehören. Nach dem erneuten Ausführen des Downloads, kann man den Download Call dann in Log-Liste sehen.

Abbildung: Onvista API Call Developer Tools {class="pp-figure"}

![](images/screenshot_onvista_json_developer_tools.png)

Durch Anklicken des Calls, kann man den Call genauer betrachten und sich die URL aus den Call-Details
kopieren. Den Teil `&withEarnings=true` kann man dabei auslassen.

Abbildung: Onvista JSON URL mittels Developer Tools beziehen {class="pp-figure"}

![](images/screenshot_onvista_json_developer_tools_details.png)

Diese Url kann nun in Portfolio Performance als Kurs-Url eingetragen werden.

Abbildung: Onvista JSON in Call Details {class="pp-figure"}

![](images/screenshot_onvista_json_settings_pp.png)

### JSON Antwort einsehen
Um die oben erläuterten JSON Pfade zu ermitteln, kann man die URL auch einfach in der Browser Adressbar eingeben und
man bekommt das JSON direkt im Browser angezeigt. Alternativ ist es auch im Tab `Response` in den Call-Details zu finden.

Abbildung: Onvista JSON in Call Details {class="pp-figure"}

![](images/screenshot_onvista_json_developer_tools_details_json.png)

### Beispiel JSON
Hier ein gekürztes Beispiel des gelieferten Onvista API JSONs:

```json
{
"expires": 1722542222119,
"entityType": "FUND",
"entityValue": "11680838",
"market": {
"name": "Frankfurt",
"codeMarket": "_FRA",
"nameExchange": "Frankfurt",
"codeExchange": "FRA",
"idNotation": 15911132,
"isoCountry": "DE"
},
"idInstrument": 11680838,
"idNotation": 15911132,
"isoCurrency": "EUR",
"unitType": "STK",
"datetimeStartAvailableHistory": "2006-10-20T00:00:00.000+00:00",
"datetimeEndAvailableHistory": "2024-07-31T23:59:59.000+00:00",
"idTradingSchedule": 66,
"datetimeLast": [
1719835200,
1719921600,
1720008000,
1720094400,
1720180800,
1720440000,
1720526400,
1720612800,
1720699200
],
"first": [
2107.229,
2106.275,
2119.345,
2126.186,
2114.754,
2116.483,
2125.949,
2133.487,
2152.971
],
"last": [
2109.383,
2114.109,
2123.822,
2115.041,
2119.793,
2131.636,
2133.645,
2143.027,
2132.029
],
"high": [
2109.777,
2114.109,
2123.822,
2126.186,
2119.793,
2134.405,
2138.599,
2143.078,
2154.079
],
"low": [
2102.052,
2098.794,
2110.312,
2114.702,
2112.632,
2116.483,
2125.949,
2133.487,
2132.029
],
"volume": [
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
0.0,
40.0
],
"numberPrices": [
23,
27,
23,
18,
22,
23,
20,
28,
1
],
"displayUnit": "EUR"
}
```
Aus der Struktur ergeben sich folgenden Eingaben in Portfolio Performance:

| Feld Portfolio Performance | JSON Pfad |
|----------------------------|---------------------|
| Pfad zum Datum | `$.datetimeLast[*]` |
| Pfad zum Kurs | `$.last.*` |
| Pfad zum Tagestief | `$.low.*` |
| Pfad zum Tageshoch | `$.high.*` |
| Pfad zum Volumen | `$.volume.*` |


#### Eingabe in Portfolio Performance
Wenn man die URL, den Datums- und den Kurs-Pfad angegeben hat, sollte Portfolio Performance bereits Kursdaten laden und
im Dialogfenster unten anzeigen. Die anderen Felder sind nicht zwingend notwendig.

Abbildung: Finale Settings Portfolio Performance Onvista JSON {class="pp-figure"}

![](images/screenshot_onvista_json_settings_pp_final.png)


2 changes: 1 addition & 1 deletion docs/en/getting-started/rebalancing.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ The first step is to set the allocation goal for each category. For example, in

The Rebalance (Amount) and Rebalance (Shares) columns show the amount and number of shares you need to sell (negative number) or buy (positive number) to reach the target value. Naturally, it isn't always possible to buy or sell a fractional number of shares.

Please note that the sum of the allocation percentages across categories does not need to be 100%, although it is advisable. Colour coding will draw your attention to any discrepancies if the sum isn't 100%.
Please note that the sum of the allocation percentages across categories does not need to be 100%, although it is advisable. Color coding will draw your attention to any discrepancies if the sum isn't 100%.
6 changes: 3 additions & 3 deletions docs/en/reference/view/taxonomies/using-taxonomies.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ By default, the definition view displays a table with the five columns:

- **Weight**: The weight represents the proportion or percentage that a security can contribute to its total value. A weight of 100% indicates that all securities are included in calculating the total value. This field is used in the Rebalancing view.

- **Color**: Each category is automatically assigned a colour. You can change the colour using the context menu.
- **Color**: Each category is automatically assigned a color. You can change the color using the context menu.

- **Actual Value**: The market value of a security on the current day. For a category, this is the summed market value of all securities assigned to that category. For example, as of 2024-07-08, the market value of Daimler Trucks is 20 shares x 36.36 EUR = 727.20 EUR, and for Mercedes: 10 shares x 65.47 EUR = 654.70 EUR. Thus, the total value for the category is 727.20 EUR + 654.70 EUR = 1381.90 EUR. Please note that there is a significant number of unassigned securities in `myTaxonomy`.Foreign securities (e.g. Amazon) are calculated in the base currency.

Expand Down Expand Up @@ -58,7 +58,7 @@ Figure: Pie chart of the portfolio + zoomed-in variants. {class=pp-figure}

![](images/taxonomies-pie-chart.svg)

The pie chart representing the entire portfolio in Figure 3 appears simple and incomplete because not all securities are assigned to categories within `myTaxonomy`. From Figure 1, it can be inferred that approximately 28% of the securities are assigned, represented by the purple-coloured segment.
The pie chart representing the entire portfolio in Figure 3 appears simple and incomplete because not all securities are assigned to categories within `myTaxonomy`. From Figure 1, it can be inferred that approximately 28% of the securities are assigned, represented by the purple-colored segment.

By clicking on a segment of the pie chart, you can zoom in on that particular part. The second pie chart displayed in the middle of Figure 3 shows the categories within `myTaxonomy`, such as Base Currency and Foreign Currencies. The third pie chart specifically focuses on the `Base Currency` category.

Expand Down Expand Up @@ -86,7 +86,7 @@ Figure: Stacked chart of the portfolio. {class=pp-figure}

![](images/taxonomies-stacked-chart.png)

A stacked chart is a type of chart that displays data as a series of coloured lines, where each line represents a category. The position of the line on the y-axis corresponds to cumulative value of the category. The lines are stacked on top of each other to show the total value of all categories combined, which is 100%. By default, the categories are stacked from large to small, with the largest category at the bottom of the chart. The order of stacking can be adjusted using the :gear: icon, allowing bars to be stacked based on magnitude or according to their position in the taxonomy list.
A stacked chart is a type of chart that displays data as a series of colored lines, where each line represents a category. The position of the line on the y-axis corresponds to cumulative value of the category. The lines are stacked on top of each other to show the total value of all categories combined, which is 100%. By default, the categories are stacked from large to small, with the largest category at the bottom of the chart. The order of stacking can be adjusted using the :gear: icon, allowing bars to be stacked based on magnitude or according to their position in the taxonomy list.

Both the stacked and stacked area charts plot time on the X-axis, set by the selected reporting period (default=1 year).

Expand Down

0 comments on commit 0532c4c

Please sign in to comment.