Skip to content
Snippets Groups Projects
Unverified Commit 94bcba11 authored by Thomas Clavier's avatar Thomas Clavier
Browse files

Quelques précisions

parent 2a1b727b
No related branches found
No related tags found
No related merge requests found
......@@ -16,7 +16,7 @@ En ayant connaissance des taux de changes pour les devises et des taux de vente
Imaginons par exemple le portefeuille suivants :
* 120 Euros
* 120 USB
* 120 USD
* 1 lingo d'or
* 0.1 Bitcoin
* 1 baril de brut Brent
......@@ -260,19 +260,52 @@ Si vous souhaitez tester la dé-sérialisation du JSON en object, voici un exemp
* la méthode `void withdraw(double amount, Currency currency)` permet de retirer du portefeuille `amount` de `currency` pour les mettre sur un compte en banque. La banque ne supporte pour l'instant que les comptes en euro. La banque prend 2% du montant en frais de transaction.
* la méthode `void deposit(double amount, Currency currency)` permet d'ajouter `amount` de `currency`dans le portefeuille. C'est la seule transaction gratuite.
* la méthode `String[] history(LocaDate start, LocalDate end)` permet de lister sous forme de tableau de `String` toutes les transactions entre `start` et `end`. Une ligne de transaction est de la forme `Date au format ISO 8601 | Type d'opération | Montant | Devise source format ISO | Devise cible format ISO | Taux de change (source vers cible)`.
* la méthode `void order(Currency currencyToBy, double amount, Currency currencyUsedToBy, double lowerRateLimit, double upperRateLimit)` permet de lancer un ordre d'achat qui va scruter les taux de changes toutes les minutes pour n'acheter que si le taux est compris entre `lowerRateLimit` et `upperRateLimit`.
* la méthode `void order(Currency currencyToBy, double amount, Currency currencyUsedToBy, double lowerRateLimit, double upperRateLimit)` permet de lancer un ordre d'achat qui va scruter les taux de changes toutes les minutes pour n'acheter que si le taux est compris entre `lowerRateLimit` et `upperRateLimit`. La méthode s'arrête dès que la transaction a pu être réalisée.
## Calcul de la performance
* la méthode `double performance()` retourne le montant gagné ou perdu depuis la création du portefeuille.
* la méthode `double performance()` retourne le montant gagné ou perdu depuis la création du portefeuille. La performance est calculé en euro. Toutes les devises restants dans le portefeille sont évalué au taux en vigueur au moment du calcul.
Par exemple :
```
2024-03-16T10:18:32+01:00 | deposit | 100 | EUR | EUR | 1 EUR = 1 EUR
2024-03-16T10:19:52+01:00 | buy | 120 | EUR | USD | 1 EUR = 1.2 USD
2024-03-16T10:18:32+01:00 | buy | 109.09 | USD | EUR | 1 USD = .9 EUR
2024-03-17T10:20:12+01:00 | buy | 105.84 | USD | EUR | 1 USD = .9 EUR
```
Ce qui fait un bénéfice de 8€
Si on détaille le solde opération par opération :
* 100 EUR
* (100 EUR * 1.2 = 120 USD) * 0.98 = 117.60 USD
* (117.60 USD * 0.9 = 105.84 EUR) * 0.98 = 103.72 EUR
Ce qui fait une performance de : 103.72 - 100 = 3.72 €
Attention :
* les dépôts supplémentaires ne sont pas considérés comme des bénéfices.
* il est possible de démarrer le portefeuille avec d'autres devises que l'euro, de même qu'il est possible de déposer d'autres devises que l'euro. Dans ce cas la valorisation en euro de départ est celle de la devise convertie au moment de la création ou du dépot.
Par exemple :
```
2024-03-16T10:18:32+01:00 | deposit | 100 | EUR | EUR | 1 EUR = 1 EUR
2024-03-16T10:18:32+01:00 | deposit | 120 | EUR | USD | 1 EUR = 1.2 EUR
2024-03-16T10:19:52+01:00 | buy | 110 | EUR | USD | 1 EUR = 1.1 USD
2024-03-17T10:20:12+01:00 | buy | 90 | USD | EUR | 1 USD = .9 EUR
2024-03-17T10:21:44+01:00 | deposit | 100 | EUR | EUR | 1 EUR = 1 EUR
```
Si on détaille le solde portefeuille opération par opération :
| Calcul | Portefeuille | Commentaire |
|-----------------------------------------------|-----------------------|----------------------------------------------------------------|
| 100 EUR | 100 EUR | Initialisation |
| 120 USD / 1.2 = 100 EUR | 100 EUR, 120 USD | Pour pouvoir faire la soustraction à la fin |
| (100 EUR * 1.1 = 110 USD) * 0.98 = 107.80 USD | 0 EUR, 227.8 USD | |
| (100 USD * 0.9 = 90 EUR) * 0.98 = 88.2 EUR | 88.2 EUR, 127.8 USD | |
| 100 EUR | 188.2 EUR, 127.8 USD | Dépot |
| 127.8 USD * 0.88 = 112.46 EUR | 188.2 EUR, 127.8 USD | Évaluation du portefeuille en EUR pour calculer la performance |
Ce qui fait une performance de (188.2 + 112.46) - (100 + 100 + 100) = 0.66 €
# Critères d'évaluation
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment