Data analysis

Giving an analyst their time back

Stock market analyst · Finance / investment analysis

Fragment wykresu analitycznego 'kółko i krzyżyk

The challenge

Picture a stock market analyst and his most precious tool – a proprietary method for analysing companies, refined over years. Now picture that method trapped in dozens of separate Excel files. Every price update means hours of tedious manual work: open the file, fetch the data, paste, check, close. Dozens of times over.

That was my client's reality. A brilliant analytical system drowning in inefficiency. The time that should go into analysis and decisions was leaking away into a fight with spreadsheets – with the risk of costly mistakes. My job was not to write yet another macro, but to redesign the whole process from the ground up.

What I did

Architecture: from chaos to an ecosystem. Dozens of island-files could not talk to each other. I built an integrated “master-slave” ecosystem: one master file as the command centre (managing the whole portfolio, bulk operations, key data in one place) and slave files – each company keeps its own analytical file, rebuilt and connected to the master. Instead of opening dozens of files, the client manages everything from a single panel.

Smart updates. Instead of downloading the full multi-year price history every time, each slave file first checks the last date in the sheet, connects to the source (Stooq.pl) and fetches only the missing data – from the next day up to today. Simple but brilliant: the update time for a single file dropped from minutes to seconds.

Sub AktualizujDane_Stooq()
    ' Inteligentna aktualizacja danych ze Stooq.pl
    Dim symbol As String, wsDane As Worksheet, ostatniWiersz As Long
    Dim dataOd As String, dataDo As String
    Set wsDane = ThisWorkbook.Worksheets("Dane")
    symbol = ThisWorkbook.Worksheets("Panel").Range("Symbol_Spolki").Value
    ostatniWiersz = wsDane.Cells(wsDane.Rows.Count, "A").End(xlUp).Row
    If ostatniWiersz < 2 Then ' arkusz pusty -> pobierz 10 lat
        dataOd = Format(DateAdd("yyyy", -10, Date), "yyyymmdd")
    Else ' są dane -> pobierz tylko od ostatniego dnia
        dataOd = Format(wsDane.Cells(ostatniWiersz, "A").Value + 1, "yyyymmdd")
    End If
    dataDo = Format(Date, "yyyymmdd")
    PobierzIDopiszNoweDane symbol, dataOd, dataDo, wsDane
End Sub

The result

A process that used to take several hours now comes down to a few minutes and two clicks. The risk of copy-paste errors – eliminated. But the most important result is human: the client got back his most precious resource – time. He can spend it on what his work is really about: analysis and informed decisions. He stopped being a slave to his tool – now the tool works for him.

This project shows that my work is not writing one-off scripts, but designing systems that genuinely change how people work. Even in a tool as common as Excel there is the power to build advanced business applications.

Post scriptum: because the world changes

As of 6 July 2026.

Some time after launch, Stooq changed the way its API authorises requests – and part of the data fetching stopped working. This is completely normal: external services change, and any app that relies on them will sooner or later need a small fix. I had to rewrite the part responsible for connecting to the source and adapt it to the new rules.

Worth keeping in mind when planning your own tool: it is not a one-off shot, but something that lives alongside the world around it. That is exactly what maintenance is for – so that a change like this is a matter of a quick fix, not a return to manual work.

Back to work

Got a project to talk about?

Just tell me what you need - it does not have to be technical, that is my job. I will get back to you and tell you straight whether and how I can help.