Securities Lending is a significant part of the financial industry. One important part of the securities lending business is how to match different lending and borrowing orders to maximize profits as a middle man. However, order matching is not always as straightforward as it may seem. It is a very simple problem until you introduce the fact that some lenders and borrowers have a minimum quantity of shares for a stock they want to trade. In this paper, we have created two main algorithms that solve this problem, and one combined algorithm that uses the strengths of both algorithms. The result is that it is possible to automate the order matching process with these algorithms. With real-world data from Nordea, there is no problem using a brute force approach to solve the problem optimally in almost all cases. In the few cases where the brute force approach is too slow, a greedy approach can be used to solve the problem very quickly, even if there is a lot of orders with a minimum quantity. The trade-off is that an average error of 0.02% from the optimal solution is introduced. However, this is small enough that for most real-world applications it is better to have a good solution fast than an optimal solution slow. / Värdepapperslån är en stor del av den finansiella industrin. En stor del av att driva en verksamhet med värdepapperslån är att matcha långivare med låntagare för att maximera bankens förtjänst. Det är ett väldigt enkelt problem att lösa så länge varken långivaren eller låntagaren har några krav på ett minsta antal aktier de måste handla med. För att lösa detta problemet utvecklades två olika algoritmer. Båda algoritmerna har sina styrkor och svagheter. BruteMatching är en algoritm där alla kombinationer av ordrar testas för att sedan välja den kombination som gav det högsta värdet. Denna algorithm körs i O(2nmin x n log n) tid. Där n är antalet ordrar och nmin är antalet ordrar med ett minimum krav. GreedyMatching är en algoritm som löser problemet först utan att ta hänsyn till om ordrarna har ett minimumkrav eller ej. Sedan kollar algoritmen om lösningen uppfylde kravet eller inte. Om lösningen inte uppfyllde kravet körs algoritmen om. Dock tas den order som inte uppfyllde kraven bort från matchningen. Den körs även om med ett nytt vilkor, att det är okej att ta med ordrar som kan skapa negativt värde så länge ett minimumkrav ej är uppfyllt. Sedan återupprepas detta tills det finns en eller två godkända lösningar och därmed väljs den som skapar det största värdet för banken. Denna algorithm körs i O(n log n + n x nmin) tid. Huvudalgoritmen som nu kommer användas i Nordeas system är en kombination av denna, där GreedyMatching körs först och om det finns misstankar om att lösningen inte är optimal så körs BruteMatching också. Dock körs bara BruteMatching om antalet ordrar med minimum krav är lägre än 20 då fler än det gör att det tar för lång tid. En utökning för algoritmerna är att istället för att endast maximera värdet av alla ordar, ser man om det finns ett värde av att vikta om ordrarnas avgifter. Detta kan vara fördelaktigt om någon order är från en viktig kund eller om man vet att en viss order kommer att gälla under en längre tid än någon annan order.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:umu-184504 |
Date | January 2021 |
Creators | Ivarsson, Thobias |
Publisher | Umeå universitet, Institutionen för fysik |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | Swedish |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Page generated in 0.0035 seconds