This article is only available in Swedish.

Bygg en aktiescreener med TypeScript och BörsAPI

Utvecklarguide till hur du bygger en automatiserad aktiescreener i Node.js/TypeScript för att filtrera bolag baserat på nyckeltal och marginaler.

July 3, 20267 min läsning

Som utvecklare kan du bygga skräddarsydda applikationer ovanpå finansiell data. I den här guiden visar vi hur du sätter upp en enkel Node.js-applikation i TypeScript för att bygga en helt automatiserad aktiescreener med BörsAPI.

Steg 1: Initiera projektet och typer

Börja med att initiera ett nytt TypeScript-projekt och installera `axios` för HTTP-anrop:

npm init -y && npm install axios && npm install -D typescript @types/node tsx

Skapa en fil types.ts och definiera typerna för API-svaren. Detta ger oss full typsäkerhet och autokomplettering i vår kodredigerare:

export interface Company {
  id: string; // UUID eller ISIN
  ticker: string;
  name: string;
  sector: string;
  market: string;
}

export interface FinancialReport {
  period: string; // t.ex. "2024"
  report_type: 'RR' | 'BR' | 'KA';
  revenue: number | null;
  operating_income: number | null;
  net_income: number | null;
  total_assets: number | null;
  total_equity: number | null;
  total_liabilities: number | null;
}

Steg 2: Skriv screener-logiken

Skapa filen screener.ts. Här hämtar vi först en lista över bolag, och hämtar sedan rapporterna för varje bolag för att köra vår filtreringslogik:

import axios from 'axios';
import { Company, FinancialReport } from './types';

const API_KEY = 'fd_din_api_nyckel_här';
const BASE_URL = 'https://borsapi.se/api/v1';

const client = axios.create({
  baseURL: BASE_URL,
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Accept': 'application/json'
  }
});

async function runScreener() {
  try {
    // 1. Hämta bolag noterade på Large/Mid/Small Cap (Nasdaq Stockholm)
    const companiesResponse = await client.get<Company[]>('/companies?limit=50');
    const companies = companiesResponse.data;

    console.log(`Screener startad. Analyserar ${companies.length} bolag...`);

    for (const company of companies) {
      try {
        // Hämta rapporter för bolaget
        const reportsResponse = await client.get<FinancialReport[]>(`/companies/${company.id}/reports?period_type=year`);
        const reports = reportsResponse.data;

        // Vi letar efter rapporter för 2024
        const report2024 = reports.find(r => r.period === '2024');
        if (!report2024 || !report2024.revenue || !report2024.operating_income) continue;

        // Beräkna rörelsemarginal (EBIT-marginal)
        const ebitMargin = (report2024.operating_income / report2024.revenue) * 100;

        // Filtreringskriterium: Rörelsemarginal > 15%
        if (ebitMargin > 15) {
          console.log(`✅ ${company.name} (${company.ticker}) passerade filtret! EBIT-marginal: ${ebitMargin.toFixed(1)}%`);
        }
      } catch (error: any) {
        // Hantera eventuell rate-limiting (429) genom att vänta
        if (error.response && error.response.status === 429) {
          console.warn('Rate limit nådd. Väntar i 2 sekunder...');
          await new Promise(resolve => setTimeout(resolve, 2000));
        } else {
          console.error(`Kunde inte hämta data för ${company.name}: `, error.message);
        }
      }
    }
  } catch (error: any) {
    console.error('Ett fel uppstod i screeningen: ', error.message);
  }
}

runScreener();

Steg 3: Kör programmet

Du kan enkelt köra TypeScript-filen direkt via terminalen med hjälp av `tsx`:

npx tsx screener.ts

Detta enkla skript kan enkelt byggas ut med mer komplexa nyckeltal (t.ex. Soliditet, ROIC eller historisk omsättningstillväxt) för att skapa en fullt skräddarsydd investeringsrobot.

Kom igång med BörsAPI

För att använda dessa mallar och skript behöver du ett personligt konto och en API-nyckel. Det är helt kostnadsfritt under vår beta-period.

1. Skapa konto

Registrera dig på några sekunder via registreringssidan.

2. Generera API-nyckel

Gå till din Dashboard och klicka på "Generera API-nyckel".

3. Anslut i mallen

Ersätt placeholder-nyckeln i källkoden eller kalkylarket med din personliga nyckel.

    Bygg en aktiescreener med TypeScript och BörsAPI - BörsAPI.se