Fuzzy systems

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.
stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Fuzzy systems

Bericht door stanexclusive » 03 aug 2016, 21:25

Hallo,

alvast bedankt voor de moeite voor het lezen. Ik heb laatst een artikel gelezen dat zich concentreert op Fuzzy systems en in dit artikel werd het gebruikt voor het voorspellen van de beurs. Ik vond de manier waarop de auteur bepaalde “vage/fuzzy” regels om heeft gezet naar iets meetbaars zeer interessant. En zou dit graag eens wille reproduceren om te kijken of zijn resultaten ook in de buurt kunnen komen van mijn resultaten.

Ik heb daarom het artikel nog een keer gelezen en heb me voornamelijk geconcentreerd op de wiskunden die hiervoor nodig is. De auteur legt voor de professional waarschijnlijk alles duidelijk uit, maar voor mij zijn er toch een aantal onduidelijkheden waar ik hoop dat jullie mij verder kunnen helpen.

Allereerst zal ik kort uitleggen wat de auteur van plan is en welke aannames hij heeft getroffen:
De auteur is er vanuit gegaan dat Technical Analysis (een vage methode om de beurs te kunnen voorspellen) door de meeste mensen wordt gebruikt
Doordat veel mensen dit nog gebruiken, klopt het vaker ook (self fullfilling).
De auteur wil echter van de vage “regels” iets meetbaars maken.

Om de technical trading regels in een “single excess demand function” (edi (xt) om te zetten gebruikt hij de volgende formule (die hebben we op het einde weer nodig)

Afbeelding

Vervolgens neemt hij 1 technical trading rule (2 moving averages) waar hij uitlegt wat in de meeste gevallen gaat gebeuren (ik zal dit nu even niet vertalen)

Afbeelding

De moving averages worden als volgt berekend:

Afbeelding

Echter weten we nu nog steeds niet meer behalve dat we dus iets weten over die moving averages. Daarom wil hij de uitkomst van deze formules aan een fuzzy set hangen. Hij gaat er 7 gebruiken:
Positive small (PS)
Positive medium (PM)
Positive large (PL)
Negative Small (NS)
Negative medium (NM)
Negative large (NL)
Around zero (AZ)

Die hij vervolgens zo indeelt:

Afbeelding


De negative large function en de positive large function kan als volgt worden berekend:

Afbeelding


W is een positive constant (hij neemt hiervoor 0.01 (1 %))

Vervolgens gaat hij deze fuzzy sets koppelen aan sell of buy signals van de mensen die deze technical analysis gebruiken. Daarvoor heeft hij ook 7 sets:
Buy small (BS)
Buy Medium (BM)
Buy Big (BB)
Sell Small (SS)
Sell Medium (SM)
Sell Big (SB)
Neutral (N)

Afbeelding


Een voorbeeld van de membership functie voor BM (Buy Medium) ziet er zo uit:

Afbeelding

Nu hij dit heeft gedaan, komt hij eigenlijk tot de kern van zijn fuzzy system (de IF THEN regels). De volgende 7 regels:

Afbeelding

Het laatste dat er vervolgens moet gebeuren is om deze regels in een excess demand functie om te zetten. Het volgende fuzzy system wordt er dan gebruikt:

Afbeelding

Nou, nu ik dit kort heb uitgelegd hoop ik dat iemand dit direct beter begrijpt.

Mijn eerste vraag gaat over Functie (4) en functie (5). Als we kijken naar de PL (positive large) functie. In Fig. 1 zie ik dat die correspondeert met 3w (of iig groter dan 3w).

Laat ik even een klein voorbeeldje gebruiken. Als we de moving average van 1 en 10 gaan berekenen (dat is, gemiddelde van vandaag (dus de prijs van vandaag) en de gemiddelde prijs van 10 dagen geleden.

Prijs vandaag: 100
Prijs over de laatste 10 dagen: 101,5

Als we dan fuctie 3 invullen krijgen we LN(100/101,5) = -0.0148886125

Als we dan functie 4 gaan invullen, dan loop ik een beetje vast. Ik krijg daar enorm hoge waardes uit, terwijl imo deze waardes kleiner moeten zijn. Waarschijnlijk vul ik in excel fout in.

Ik heb het volgende geproeerd voor functie (4)

w: 0.01 (positive constant, de auteur heeft 0.01 als basis genomen zodoende dat ik dat ook gebruik)

1 - (-0.0148886125 - 0,01) / 0,01
1 - 97,55 = -96,552

Ik heb geen idee waarom ik zo een vreemde waarde krijg. DIt is imo te hoog. Het kan goed zijn dat mijn voorbeeld geen goede getallen weergeeft voor PS (positive small) fuzzy set. Ik weet dus niet of ik hier fout zit.

Wellicht dat iemand mij verder kan helpen.
Alvast bedankt

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

Re: Fuzzy systems

Bericht door arie » 04 aug 2016, 12:15

stanexclusive schreef:Prijs vandaag: 100
Prijs over de laatste 10 dagen: 101,5
Als we dan fuctie 3 invullen krijgen we LN(100/101,5) = -0.0148886125
w: 0.01
Voor x(m,n) = LN(100/101,5) = -0.0148886125 is x(m,n) volgens figuur 1 member van NM en NS.
De membership functies van NM en NS hebben beide een tentvorm.

De algemene formule voor zo'n functie is



Plot voor jezelf eens een dergelijke functie voor x_top = 6 en A = 2, dus:



Deze functie gaat voor x=4 tot x=6 van nul naar 1, en voor x=6 tot x=8 terug naar nul.
Beneden x=4 en boven x=8 is deze functie nul.
Als we in dit geval bv. x = 4.8 nemen, dan is de membership waarde:




Kan je nu de twee membershipwaarden van jouw voorbeeld (x = -0.0148886125) berekenen?
Dus en

stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Re: Fuzzy systems

Bericht door stanexclusive » 05 aug 2016, 08:51

arie schreef:
stanexclusive schreef:Prijs vandaag: 100
Prijs over de laatste 10 dagen: 101,5
Als we dan fuctie 3 invullen krijgen we LN(100/101,5) = -0.0148886125
w: 0.01
Voor x(m,n) = LN(100/101,5) = -0.0148886125 is x(m,n) volgens figuur 1 member van NM en NS.
De membership functies van NM en NS hebben beide een tentvorm.
Hallo. Ik heb dit dus ook gemerkt, erg slordig van mij.
In ieder geval heb ik de 7 sets nu even uitschreven zodat ik voormezelf een beetje duidelijkheid heb. Ik geloof dat ik het op deze manier correct geïnterpreteerd heb.














De algemene formule voor zo'n functie is



Plot voor jezelf eens een dergelijke functie voor x_top = 6 en A = 2, dus:



Deze functie gaat voor x=4 tot x=6 van nul naar 1, en voor x=6 tot x=8 terug naar nul.
Beneden x=4 en boven x=8 is deze functie nul.
Als we in dit geval bv. x = 4.8 nemen, dan is de membership waarde:




Kan je nu de twee membershipwaarden van jouw voorbeeld (x = -0.0148886125) berekenen?
Dus en
Jouw voorbeeld is in ieder geval duidelijk voor mij. Bij krijg ik de volgende uitkomst: 1,489 en bij heb ik 0,488

Ik verwacht eigenlijk een waarde tussen de 0 en de 1, dus iets klopt niet helemaal.

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

Re: Fuzzy systems

Bericht door arie » 05 aug 2016, 10:16

Let op: in de definitie die ik gaf staan geen haakjes maar verticale streepjes.
Dit duidt de absolute waarde of modulus aan, dat wil zeggen, de waarde van het getal zonder het teken (plus of min):
| 2 | = 2
| -3 | = 3
zie zo nodig ook https://nl.wikipedia.org/wiki/Absolute_waarde

Dus:





en





Merk op:
1. de membershipwaarden van alle overige klassen zijn nul
2. de som van alle membershipwaarden = 1, en dit is gebruikelijk in fuzzy logic.


Om verder nog wat puntjes op de i te zetten:







(denk in de laatste 2 gevallen aan het teken: x > -2W betekent: voor x rechts van -2W op de getallen lijn)

stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Re: Fuzzy systems

Bericht door stanexclusive » 05 aug 2016, 11:45

arie schreef:Let op: in de definitie die ik gaf staan geen haakjes maar verticale streepjes.
Dit duidt de absolute waarde of modulus aan, dat wil zeggen, de waarde van het getal zonder het teken (plus of min):
| 2 | = 2
| -3 | = 3
zie zo nodig ook https://nl.wikipedia.org/wiki/Absolute_waarde

Dus:





en





Merk op:
1. de membershipwaarden van alle overige klassen zijn nul
2. de som van alle membershipwaarden = 1, en dit is gebruikelijk in fuzzy logic.


Om verder nog wat puntjes op de i te zetten:







(denk in de laatste 2 gevallen aan het teken: x > -2W betekent: voor x rechts van -2W op de getallen lijn)
Bedankt. Zeker voor de tips mbt de functies. Ik zie nergens de mogelijkheid om een oudere post van mij aan te passen. Dan zou ik de functies kunnen verbeteren :) Is dit niet mogelijk op wiskundeforum?

Ik ben nu ook een boek aan het lezen van dezelfde auteur mbt de Basis van fuzzy systems, maar tot nu toe ben ik nog niks tegen gekomen wat er gebeurt als een waarde in 2 sets valt.
We hebben nu dus 0.48886 en 0.51114 dat dus samen 1 is. Je geeft aan dat dit normaal is, maar ik had normaal een waarde verwacht die normaal tussen de 0 en de 1 ligt.

Bij formule 8 (zie mijn eerste post) hebben we toch een van deze waardes nodig? Ik verlies hier een beetje het overzicht, aangezien ik dacht dat ik met 1 waarde (die tussen de 0 en de 1 zou liggen) verder zou gaan naar de volgende stap.

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

Re: Fuzzy systems

Bericht door arie » 05 aug 2016, 14:20

Voor een gegeven x ligt de membershipwaarde per set (= per verzameling) tussen nul en een.
Dit is de logische waarheidswaarde die aangeeft in hoeverre het waar is dat x tot die set behoort.

Voorbeeld:
Stel we hebben 3 verzamelingen: R = rode voorwerpen, G = gele voorwerpen en B = blauwe voorwerpen.
Een rood potlood x behoort volledig tot de verzameling R, en helemaal niet tot de overige verzamelingen:



We kunnen ook zeggen:
is volledig waar
is volledig onwaar
is volledig onwaar
zoals in de tweewaardige logica van Boole.

Een oranje potlood y behoort een deel tot R, ook een deel tot G, en niet tot B.
Bijvoorbeeld:




Als de kleur y iets donkerder is, dus iets meer naar rood ligt, zou je deze situatie kunnen krijgen:



De bewering "y is element van R" is nu voor 60% waar, en de bewering "y behoort tot G" is 40% waar.

Voor meer voorbeelden zie bijvoorbeeld
https://nl.wikipedia.org/wiki/Fuzzy_logic


Terug naar jouw formule 8 voor gegeven :





en als we de gegeven waarden invullen:



Hierboven hadden we al berekend voor x = -0.0148886:





(dus x = -0.0148886 behoort ongeveer 49% tot NM en 51% tot NS)

Ook hadden we al opgemerkt dat





En nu heb je alle gegevens om ed_1(-0.0148886) te berekenen.

stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Re: Fuzzy systems

Bericht door stanexclusive » 05 aug 2016, 14:50

Bedankt :D Dat was een fijne uitleg. Ik ga nu aan de slag om ed te berekenen.

(-0,1*0,51114 -0,1*0,51114) / 1 = - 0,246

De noemer van deze formule is toch altijd 1? Of zie ik dat verkeerd

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

Re: Fuzzy systems

Bericht door arie » 05 aug 2016, 18:15

stanexclusive schreef:... De noemer van deze formule is toch altijd 1? ...
Klopt, precies alle membershipwaarden van x staan in de noemer, en de som daarvan is 1 (zie ook figuur 1).

En omdat c7 = 0, kunnen we de functie ed_1(x) ook schrijven als




PS: Je antwoord -0.246... klopt, maar links van het gelijkheidsteken is wsch een copy-paste fout.
Met bovenstaande formule vind ik ook:




stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Re: Fuzzy systems

Bericht door stanexclusive » 05 aug 2016, 20:37

Klopt. Inderdaad een Copy-Paste foutje :)

Bedankt voor je hulp zover. Ik waardeer dat zeer! Mijn vragen zijn wellicht niet de beste, maar het is voor mij best wel een tijdje geleden sinds ik ben afgestudeerd en zo langszaam komt het weer een beetje terug. Dankzij jouw hulp heb ik veel ohja-zo-zat-dat-ook-alweer-momentjes :)

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

Re: Fuzzy systems

Bericht door arie » 06 aug 2016, 16:54

Mooi dat een en ander weer boven komt.
Blijf gewoon vragen als je meer wilt weten (op dit forum mag je alle vragen stellen, ongeacht de kwaliteit van de vraag).

stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Re: Fuzzy systems

Bericht door stanexclusive » 06 aug 2016, 18:38

Gelukkig :)

We hebben nu echter formule 8 opgelost, maar functie 6 en de rules hebben we imo fuctie 6 en rules (7) niet bekeken. Als ik nu de andere formules bekijk, snap ik echter niet direct waarom we functie 6 nodig hebben? Of moet ik de uitkomst van functie 8 gaan gebruiken bij functie 6? Dan snap ik echter niet waarom de auteur deze volgorde neemt in het artikel?

Ik weet niet hoe jij dat ziet, maar ik vind dat nogal verwarrend. Buiten dat vind ik het verwarrend dat hij bij de Rules wordt gesproken over IF Then regels. We weten nl. dat ons voorbeeld tussen valt tussen NS en NM. Als we de IF Then regelt volgen, dan betekent het dat NS then SS en NM then SB.

Als we dan formule 6 bekijken, moet ik dan gaan rekenen met de waardes van de IF THen regels? Dat betekent dus bij SS = EB = -0,1 en SB = -0,4? Ik snap echter niet precies hoe ik hiermee moet omgaan?

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

Re: Fuzzy systems

Bericht door arie » 06 aug 2016, 22:02

De volgorde is:
[1] kort en lang gemiddelde => x => fuzzy classificering x
[2] definieer een fuzzy classificering sell/buy, afhankelijk van je excess demand ed.
[3] maak fuzzy regels die classificering [1] op classificering [2] afbeelden.
[4] vat deze afbeelding samen in 1 formule = formule 8.

Wat uitgebreider:
[1]
De waarde x = de natuurlijke logaritme van de verhouding kort/lang gemiddelde, zie formule 3.
In Figuur 1 lees je de membershipwaarden van x af voor elk van de 7 klassen NL t/m PL.

[2]
Voor de sell/buy classificering is gekozen voor deze ed waarden (zie Figuur 2):
buy small = 0.1
buy medium = 0.2
buy big = 0.4
sell small = -0.1
sell medium = -0.2
sell big = -0.4
Formule 6 geeft aan hoe je de membershipwaarden mu(ed) voor deze classificering bepaalt uit de waarde van ed, vergelijkbaar met wat we onder [1] gedaan hebben. Echter: dankzij de keuze van de membershipdefinities (lineair en mooi opeenvolgend) kunnen we deze formules straks omzeilen.

[3]
Heuristic 1 zegt: hoe groter positive x, hoe sterker het buy signaal ed, maar als x al te positief wordt, dan sell (negatieve ed). En omgekeerd voor negatieve x.
Dit leidt tot de regels van formules 7:
regel 1: ALS x in PS, DAN ed advies = buy small = 0.1
regel 2: ALS x in PM, DAN ed advies = buy big = 0.4
regel 3: ALS x in PL, DAN ed advies = sell medium = -0.2
etc.
Dit zijn fuzzy regels, dus met een waarheidswaarde tussen nul en 1.
Voorbeeld 1:
Als x voor 0.4 (=40%) in PS zit en voor 0.6 (=60%) in PM, dan is het sell/buy advies
volgens de combinatie van regel 1 en regel 2:
ed(x) = 0.4 * (buy small) + 0.6 * (buy big) = 0.4 * 0.1 + 0.6 * 0.4 = 0.28
Voorbeeld 2:
Als x voor 0.3 (=30%) in PM zit en voor 0.7 (=70%) in PL, dan is het sell/buy advies
volgens de combinatie van regel 2 en regel 3:
ed(x) = 0.3 * (buy big) + 0.7 * (sell medium) = 0.3 * 0.4 + 0.7 * (-0.2) = -0.02

[4]
Formule 8 vat bovenstaande samen:
De excess demand ed(x) wordt direct berekend uit:
1. de membershipfuncties van x (er zijn maximaal 2 niet-nul, de overige zijn nul en vallen weg)
2. de constanten Ci = de waarden van de ed-classificatie:
- - als x 100% in PS (dus x=w, mu_PS(x)=1 en alle andere mu(x)=0) dan is ed(x) = buy small = 0.1
- - als x 100% in PM (dus x=2w, mu_PM(x)=1 en alle andere mu(x)=0) dan is ed(x) = buy big = 0.4
etc.
Dankzij formule 8 kunnen we dus direct ed(x) berekenen uit x en de 7 membershipwaarden mu(x) van x (waarvan maximaal 2 niet-nul).
De regels (formule 7) en ed-classificatie (figuur 2 en formules 6) zitten volledig verwerkt in de 7 constanten Ci, daar hoeven we ons geen zorgen meer om te maken.

stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Re: Fuzzy systems

Bericht door stanexclusive » 20 aug 2016, 13:45

Hallo Arie,

Ik was op vakantie vandaar deze late reactie. Hartelijk bedankt voor je hulp :D

stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Re: Fuzzy systems

Bericht door stanexclusive » 29 aug 2016, 12:59

Hallo Arie,

Ik heb afgelopen week het bovenstaande geprogrammeerd en de resultaten waren inderdaad, zoals de auteur al aangaf, complex en niet echt voorspellend. Toch was het zeer leerzaam.
Ik ben nu bezig met een nieuwe heuristic die zich concencentreert op support & resistance rules
Ik moet dus allereerste support en resistance points in de data bepalen. Daarvoor worden de volgende formules gebruikt:

Afbeelding

en

Afbeelding

De auteur geeft de volgende informatie:

A “peak” is the price Pk such that Pk > Pk – 1 en Pk > Pk + 1, that is, a peak is a price point that is larger than its 2 neighbors.

Dit is ook begrijpelijk, want we moeten op zoek naar de hoogste punten in de data. In ieder geval om support/resistance levels te kunnen bepalen.

De auteur zegt ook dat:
The highest peak in the time interval (t – n, t – 1).

Als we kijken naar formule 11, dan willen we enkel weten of en zoja wat de resistance level is.

Als we nou voorbeeld data nemen:

Pk - 4 = 10
Pk – 3 = 10,25
Pk – 2 = 10,50
Pk – 1 = 10,50
Pk = 11
Pk + 1 = 10,75

Hoe ga ik hiermee om? Ik begrijp wat ze willen berekenen, maar door de manier van het opstellen van de formule vind ik het nogal verwarrend.

stanexclusive
Nieuw lid
Nieuw lid
Berichten: 18
Lid geworden op: 03 aug 2016, 10:16

Re: Fuzzy systems

Bericht door stanexclusive » 29 aug 2016, 14:08

Hallo Arie,

Ik heb een andere vraag. Ik kon die van hierboven niet aanpassen/verwijderen, dus beschouw die aub als niet verstuurd :) Ik had verwacht dat ik deze Heuristic zelf kon toevoegen, omdat ik dacht dat het vrijwel hetzelfde was als hetgeen we al besproken hebben, Maar dat is niet het geval heb ik nu gemerkt.

--

De auteur heeft een ander artikel waar hij met een andere heuristic een test uitvoert.
Afbeelding

Ik zou deze test graag willen reproduceren om te kijken of mijn resultaten ook met die van de auteur overeenkomen.

De auteur begint weer met een dynamisch prijsmodel (1 en 2)

Afbeelding

Dit is in principe duidelijk. Bij 2 neem ik namelijk log (prijs / moving average n prijs) zoals we hierboven al gedaan hebben.

Vervolgens geeft de auteur de formules voor de ED6 en ED7.
Afbeelding

Hij verwijst vervolgens naar de membership functies (hier heb ik een screenshot van geplaatst in mijn eerste post) en geeft vervolgens deze formule:

Afbeelding

Hier verlies ik helaas een beetje het overzicht. Ik snap de formule 5 en 6, maar ik snap de gedachte erachter niet? Het komt waarschijnlijk, omdat hij een stap overslaat hier, geloof ik, en ik het daarom niet helemaal begrijp. Wellicht kun je dat uitleggen?

Bij de volgende stap komt voor mij wiskunde dat een stapje verder gaat dan mijn kennis. We willen hier namelijk de sterkte parameter A6 (t) en A6 (t) bepalen.

Afbeelding

De auteur gaat vervolgens een “standard recursive least squares Algorithm with exponential forgetting” gebruiken. Hij gaat de error berekenen met deze formule:

Afbeelding

Om een estimate van At te krijgen

De volgende formules gebruikt hij nog om een betere estimate voor At te krijgen, geloof ik:
Afbeelding

Ik heb dus de volgende vragen:

1. Formule 5 en 6 begrijp ik, maar ik snap de gedachte erachter niet? Heeft de auteur hier een stap weggelaten?
2. Formule 7 t/m 13 worden gebruikt om At te berekenen. Ik snap echter niet hoe dit gebeurt? Er is nergens een “preciese” formule die A6(t) of A7(t) berekent

Ik hoop dat ik mijn vragen duidelijk geformuleerd hebt en dat het verhaal hierboven een beetje duidelijk is.

Alvast bedankt voor de moeite.

Plaats reactie