Python
Recent ben ik mij gaan verdiepen in Python. Deze programmeertaal winst sterk aan populariteit en dat is niet zonder reden. De bijzonderheden:
- Het is gratis te downloaden en te installeren.
- Het is laagdrempelig.
- Een Excelsheet kan als invoer én als uitvoer dienen.
- Er wordt met een editor geprogrammeerd. Deze code is goed te lezen. Het beheer en onderhoud is t.o.v. Excel daarom veel eenvoudiger. Dat is vanuit compliance oogpunt een belangrijk pluspunt.
- Het is geschikt om kennis te maken met de basisprincipes van programmeren.
Net als Excel geldt ook voor Python: je kunt het zo ingewikkeld maken als je wilt, maar met een aantal basisfunctionaliteiten, kom je al een flink eind. Er is veel informatie op internet beschikbaar. Met name het installeren en het inrichten van de programmeeromgeving vergt wat uitzoek werk. Hierbij moet o.a. een editor worden gekozen. Ik gebruik PyCharm. Als u de basis beheerst en de eerste programma’s hebt geschreven, dan is het eenvoudig om de kennis uit te breiden.
Ik heb een aantal voorbeeld programma’s geschreven die illustratief zijn voor de meerwaarde en kracht van Python:
Ik heb een dobbelsteenspel gemodelleerd. Bij dit spel wordt drie keer gegooid met 5 dobbelstenen. Na iedere worp mogen één of meer dobbelstenen worden vastgezet. Na de laatste worp wordt op basis van de spelregels een score bepaald. Dan is het de vraag, wanneer moet je welke dobbelstenen vastzetten. Ik heb twee strategieën gemodelleerd. Via simulatie kan worden bepaald welke strategie naar verwachting de hoogste score levert. Het programma laat o.a. zien hoe de random generator werkt, hoe je rekenregels modelleert en methodes optimaliseert.
Ik een programma geschreven die de puzzel oplost die ook bekend is van het TV-programma Expeditie Robinson. De getallen 1 t/m 8 moesten zodanig in een vorm worden geplaatst dat alle aangrenzende getallen minimaal 2 van elkaar moesten verschillen. Een algoritme zou alle getal-combinaties kunnen afgaan. Dat zijn er 40.320 (8*7*6*5*4*3*2). En telkens kijken of het voldoet aan de criteria. Deze methode wordt enumeration genoemd. Het is effectief, maar niet efficiënt. Een slimmere methode is backtracking. Dan wordt op een selectieve manier de combinaties onderzocht die mogelijk tot de oplossing leiden. Het feit dat binnen Python een functie zichzelf kan aanroepen met een andere variabele, maakt het mogelijk om backtracking op een elegante en efficiënte manier te programmeren. Het is opvallend hoe snel een oplossing gevonden wordt. Ga voor meer info over de aanpak naar een aparte pagina.
Dezelfde aanpak kan ook worden gevolgd bij het oplossen van een Sudoku. In plaats van een reeks van 8 getallen gaat het om 81 getallen (met mogelijke waardes 1, 2, 3, .. , 9). Hieraan worden 27 eisen gesteld. Het gaat hierbij om de 9 rijen, 9 kolommen en 9 blokken. Zie voor meer info en een voorbeeld de volgende pagina.
Op het valuta paar EUR/USD heb ik recent een daytrading-strategie gemodelleerd (een zgn. BOT). Helaas niet winstgevend, maar het toont aan hoe de historische koersen die in een Excel-sheet beschikbaar zijn, worden ingelezen en via een backtest door het model worden verwerkt. De resultaten worden vervolgens weer weggeschreven naar Excel.
Voor ondersteuning kunt u contact met mij opnemen.