I huvudet på en algoritm för energihandel – att göra kod av traders know-how

[KRÖNIKA]  Till synes enkla handelsalgoritmer blir snabbt väldigt komplexa, vilket gör att det är en utmaning att omsätta dem i programkod.

Christian Vizjak

Den som använder algoritmen med bäst programkod, som uppfyller flest beslutskriterier, kommer att göra bäst affärer, skriver Christian Vizjak på Trayport VisoTech, som gör mjukvara för handel med energi.

Automatiserad handel blir allt vanligare, även på den växande energimarknaden. På energibörsen Epex Spot är ungefär hälften av handeln automatiserad idag. Det kan synas vara en enkel uppgift att låta ett program kolla vilka affärer som är möjliga och sedan välja det bästa alternativet. Men det är som med så mycket annat här i livet: den till synes enklaste uppgiften visar sig vara tämligen komplicerad när man synar den i sömmarna.

Komplexitet som förbises gör att omvandlingen av en algoritm till körbar programkod inte blir fullt ut lyckad, i värsta fall misslyckad. Man misslyckas då helt enkelt med att simulera en erfaren handlares beteende med mjukvaran.

Vi kan undersöka en vanlig algoritm för dagshandel med energi (så kallad intradaghandel). Det handlar om att automatisera avslut för öppna erbjudanden. En sådan algoritm kallas för ”position closer” på engelska och verkar, som sagt, vara enkel.

Till att börja med räcker det inte att bara skapa en köp- eller säljorder för det erbjudande som anses vara bäst. Så enkla beslut tar inte en erfaren handlare. I verkligheten handlar det om avväganden som att balansera prognoser för olika typer av energikällor, som sol och vind, flera timmar i förväg, vilket är svårt. Nya prognoser bör ge nya resultat för en bra algoritm. Ett annat scenario är att komma till avslut med mer spekulativa köp, både under dagen och en dag i förväg.

Låt oss ska titta närmare på de beslut som krävs av en algoritm för att få till ett avslut, för några olika scenarier.

Beslut 1: När algoritmen ska handla

Till att börja med måste algoritmen bestämma under vilken tidsperiod ett avslut ska ske. På Epex Spot krävs att bud läggs fem minuter innan affärer som spänner över en timme, 30 minuter och 15 minuter måste genomföras. Det ger en slutpunkt för tidsperioden, men när ska den börja? Det beror på när rörligheten och spridningen av buden är mest gynnsam. Erfarenhetsmässigt sker det cirka tre timmar innan affärer måste avslutas.

Beslut 2: Hur algoritmen ska bete sig

Ska avslut ske enligt en linjär modell över handelsperioden eller ska det gå att använda ej linjära modeller? Ibland är det till exempel bättre att avsluta affärer tidigt.

Beslut 3: Hur order ska genomföras

Affärer med olika typer av tidsperioder överlappar varandra. Algoritmen måste kunna avgöra för vilka affärer köp- och säljorder ska genomföras och för vilka kvantiteter.

Beslut 4: Hantera oväntade händelser

Nu finns det en plan för vilka affärer som ska avslutas och när de ska avslutas. Men det händer ofta att villkoren för en affär har förändrats när det är dags att avsluta den. Algoritmen måste ha en strategi för att hantera det. Det finns två vanliga strategier: att försäkra sig om en så liten skillnad som möjligt mellan planen och verkligheten, eller att försöka få bästa möjliga villkor.

Beslut 5: Balansera order mot genomförda affärer

Under intradadshandel med energi läggs vanligtvis många fler order än affärer som faktiskt genomförs. Vissa energibörser har regler för hur många order som får läggas i förhållande till antalet affärer som genomförs (kallas order-to-trade ratio, OTR). Algoritmen måste i så fall övervaka förhållandet mellan order och affärer, och om det behövs tvinga fram avslut.

Beslut 6: Förhindra affärer med sig själv

I vissa scenarier när man kör flera algoritmer kan det hända att de beslutar sig för att handla med varandra. Sådana affärer kallas cross trades och är förbjudna på vissa energibörser. I så fall måste algoritmen förhindra sådana affärer.

Beslut 7: Agera snabbt

En bra algoritm behöver bara millisekunder på sig för att agera. Eftersom de snabbaste algoritmerna får de bästa villkoren gäller det att ständigt optimera dem för höga prestanda.

Eftersom alla de beskrivna besluten för en algoritm måste koordineras blir programkoden för att implementera algoritmen mycket komplex. Den som använder algoritmen med den bästa programkoden kommer att göra bäst affärer med energi.

Christian Vizjak