Berekenen van winst/verlies-grens in trading bot.

Wiskunde is niet alleen een vak op school. Kom je ergens in de praktijk (bijvoorbeeld tijdens je werk) een wiskundig probleem tegen dan kun je hier om hulp vragen.
Plaats reactie
Paulito123
Nieuw lid
Nieuw lid
Berichten: 8
Lid geworden op: 09 dec 2018, 18:03

Berekenen van winst/verlies-grens in trading bot.

Bericht door Paulito123 » 09 dec 2018, 18:42

Hello wiskundige experten.

Laat me beginnen met te zeggen dat ik geen wiskundig master mind ben, anders zou ik uiteraard deze vraag niet stellen op dit forum. Dat gezegd zijnde, op naar mijn situatie en vraag.

Ik maak een trading bot die online aankopen en verkopen doet van forex future contracten. Als je niet weet wat dat is, geen probleem, dat is ook niet essentieel. Wat je wel moet weten is dat de markt in twee richtingen kan gaan, STIJGEND of DALEND. Het is dan ook mogelijk om in twee richtingen in te zetten. Als je denkt dat de markt gaat stijgen koop je een LONG contract, als je denkt dat de markt gaat dalen koop je een SHORT contract. Als de markt dan beweegt in de richting waarop je hebt ingezet, maak je winst. Beweegt de markt in de andere richting dan maak je verlies. Het is ook mogelijk om beide posities in te nemen (LONG en SHORT) en in die situatie speelt mijn probleem zich af.

Om de PnL (profit and loss) te berekenen van 1 trade, gebruik ik de volgende formule:
PnL = Volume x (Aankoopprijs - HuidigePrijs) * Richting
Volume = het onderliggende volume van het contract
AankoopPrijs = de prijs waaraan het volume gekocht is
HuidigePrijs = Huidige prijs
Richting = 1 voor long en -1 voor short
PnL = Profit of winst (positief) loss of verlies (negatief)
PnL = 1000 x (1.350 - 1.300) * 1 --> +5 (winst)
PnL = 1000 x (1.350 - 1.300) * -1 --> -5 (verlies want de richting was SHORT en de marktprijs steeg)

Het probleem:
Wanneer ik zowel SHORT als LONG posities heb op hetzelfde moment, wil ik de grens berekenen waarop mijn totale som van alle trades (verliezen + winsten) gelijk is aan 0, op voorwaarde natuurlijk dat de markt beweegt in de richting waarin ik het grootste volume heb gekocht.

Een voorbeeld:
Op 1.1300 ging ik Long voor een volume van 1000
Op 1.1250 ging ik Short voor een volume van 2000
Op 1.1290 ging ik Long voor een volume van 3000
Als de markt stijgt en de prijs 1.1335 wordt bereikt, zal de totale som van de 3 PnL's 0 zijn. Dus dat is mijn break even punt. Nu wil ik graag een generieke formule die ongeacht het aantal trades die ik toevoeg, het break even punt berekent, op voorwaarde dat de markt in de richting beweegt met het grootste volume.

Alvast bedankt voor jullie tijd en expertise.
Mvg
Paul

Paulito123
Nieuw lid
Nieuw lid
Berichten: 8
Lid geworden op: 09 dec 2018, 18:03

Re: Berekenen van winst/verlies-grens in trading bot.

Bericht door Paulito123 » 09 dec 2018, 19:46

Edit: Correcte formule is
PnL = Volume x (HuidigePrijs - Aankoopprijs) * Richting

arie
Moderator
Moderator
Berichten: 3383
Lid geworden op: 09 mei 2008, 09:19

Re: Berekenen van winst/verlies-grens in trading bot.

Bericht door arie » 09 dec 2018, 20:00

Neem
n = aantal trades,
i = het volgnummer van een trade (dus i = 1, 2, 3, ..., n)
V[ i ] = volume * richting van trade i (dus V[ i ] is positief voor LONG en negatief voor SHORT)
A[ i ] = aankoopprijs van trade i
e = break even eindprijs

dan geldt voor elke trade:
\(\text{PnL}\left[i\right] = V\left[i\right] * (e - A\left[i\right])\)

Tel deze op voor alle trades (= sommeer voor i = 1 t/m n):
\(\sum_{i=1}^n\text{PnL}\left[i\right] = \sum_{i=1}^n V\left[i\right] * (e - A\left[i\right])\)

Splits de rechter som:
\(\sum_{i=1}^n\text{PnL}\left[i\right] = \sum_{i=1}^n V\left[i\right] * e - \sum_{i=1}^n(V\left[i\right] *A\left[i\right])\)

Bij het break even point is de som van alle PnL's nul, dus de linker som is dan nul:
\(0 = \sum_{i=1}^n V\left[i\right] * e - \sum_{i=1}^n(V\left[i\right] *A\left[i\right])\)

dus het break even point e ligt bij:
\(e = \frac{\sum_{i=1}^n(V\left[i\right] *A\left[i\right])}{\sum_{i=1}^n V\left[i\right]}\)


Voorbeeld:

Als het voorbeeld dat je zelf gegeven hebt
(merk op dat V hier het product Volume*Richting is):

Code: Selecteer alles

i    A[i]    V[i]   A[i]*V[i]
--------------------------------
1    1.13     1000     1130
2    1.125   -2000    -2250
3    1.129    3000     3387   +
--------------------------------
SOM:          2000     2267

e = SOM(A[i]*V[i]) / SOM(V[i]) = 2267/2000 = 1.1335

Paulito123
Nieuw lid
Nieuw lid
Berichten: 8
Lid geworden op: 09 dec 2018, 18:03

Re: Berekenen van winst/verlies-grens in trading bot.

Bericht door Paulito123 » 09 dec 2018, 22:33

ALL RIGHT :D
Thanks!

Het klopt alvast wanneer mijn volume LONG groter is dan mijn volume SHORT, zoals het voorbeeld dat ik heb gegeven. Ik ga morgen kijken of het ook klopt in de andere richting. Dan zou de prijs lager moeten liggen dan mijn laagste short prijs. Ik heb het snel snel ff in Excel geprobeerd maar daar klopte het nog niet. Maar het is laat en ik ben moe :D

Nogmaals bedankt voor de snelle reactie.
Mvg
Paul

arie
Moderator
Moderator
Berichten: 3383
Lid geworden op: 09 mei 2008, 09:19

Re: Berekenen van winst/verlies-grens in trading bot.

Bericht door arie » 10 dec 2018, 01:04

Paulito123 schreef: ...Ik ga morgen kijken of het ook klopt in de andere richting.
Dan zou de prijs lager moeten liggen dan mijn laagste short prijs ...
Waarom is dit zo?
Als ik in je voorbeeld alle LONGs en SHORTs verwissel, krijg je:

Code: Selecteer alles

i    A[i]    V[i]   A[i]*V[i]
--------------------------------
1    1.13    -1000    -1130
2    1.125    2000     2250
3    1.129   -3000    -3387   +
--------------------------------
SOM:         -2000    -2267

e = SOM(A[i]*V[i]) / SOM(V[i]) = -2267 / -2000 = 1.1335
Nu is het volume SHORT groter dan het volume LONG, maar verandert de break even waarde e niet.
En deze waarde is nog steeds groter dan elk van de A[ i ] waarden, dus zeker niet lager dan de laagste SHORT.

Ter controle:
(met je oorspronkelijke formule)
PnL[1] = 1000 * (1.1335 - 1.13) * (-1) = -3.50
PnL[2] = 2000 * (1.1335 - 1.125) * 1 = 17.00
PnL[3] = 3000 * (1.1335 - 1.129) * (-1) = -13.50
En dit levert een PnL-totaal van -3.50 + 17.00 - 13.50 = 0 (= break even)

Paulito123
Nieuw lid
Nieuw lid
Berichten: 8
Lid geworden op: 09 dec 2018, 18:03

Re: Berekenen van winst/verlies-grens in trading bot.

Bericht door Paulito123 » 10 dec 2018, 07:56

Inderdaad, mea culpa. Ik heb hier net het voorbeeld uitgebreid met een short van 6000 aan 1.125 en dan kom ik op de juiste BE prijs 1.12.

Nogmaals bedankt voor je hulp. In the end is het makkelijker dan ik had gedacht. Wat ik dus nodig had was een gewogen gemiddelde van alle transacties.

Vriendelijke groeten
Paul

Plaats reactie