Aktien Screener mit Base aufbauen

Hallo allerseits,

ich bin dabei einen eigenen Aktien Screener aufzusetzen und habe ein paar grundsätzliche Verständnisfrage zum möglichen Einsatz von Base

Aktueller Stand (Calc Tabelle)

  1. Historische Aktienkurse werden aus Google Sheets für alle Aktien in eine .CSV Datei exportiert. Dabei wird pro Aktie einer Spalte mit der Zeitreihe befüllt.
  2. .CSV wird als externe Datenquelle in Calc verknüpft
  3. Pro Zeitreihe wird ein Ranking mit den Funktionen LN des Kurses, STEIGUNG, BESTIMMHEITSMASS der Regression berechnet und mit MTRANS transponiert. Zusätzlich werden Parameter mit AVARAGE bestimmt.
  4. Ergebnis wird in einer Rang-Tabelle Dargestellt. Es ist eine Matrix (Aktienname in Spalte vs. Datum im Zeile) mit Ranking-Score.

Das Funktioniert so weit ganz gut bis auf die Performance die zunähend langsamer wird. Aktuell sind es 500 Aktien mit jeweils 350 Datenpunkten pro Zeitreihe und es sollen mehr werden.

Meine Idee für die Umsetzung in Base:

  1. Zeitreihen werden pro Aktie als .CSV Datei via Shell Skript + Alpha Vantage API geholt und in ein Verzeichnis abgelegt.
  2. Alle .CSV Dateien werden mit einer Base Datenbank verknüpft. Die Datenbank sollen analog zu Calc beim Start aktualisiert werden
  3. Das Ranking berechnen
  4. Das Ergebnis darstellen

Meine Fragen:

zu 2.: so weit ich es verstehen lassen sich .CSV Daten in eine Datenbank importieren. Funktioniert auch eine Verknüpfung, sprich Aktualisierung beim Start? Ist es sinnvoller alle Zeitreihen mit einer Datenbank Tabelle zu verknüpfen oder ist es besser pro Zeitreihe eine Tabelle anzulegen.

zu 3.: gibt es in Base entsprechende Funktionen?

zu 4.: hier vermute ich, dass es für mich als Base Neuling einfacher ist das Ranking in Calc darzustellen. Lässt sich eine Base Tabelle mit einer Calc Tabelle verküpfen?

Bin ein kompletter Neuling in Base und würde mich freuen wenn jemand etwas zur grundsätzlichen Machbarkeit in Base schreiben könnte.

Vielen Dank im Voraus!

Kannst Du einmal sagen, welchen Vorteil Du Dir dabei von Base versprichst?

Jede Tabelle in Base ist in der Regel klar definiert. Calc ist gegenüber Feldinhalten wesentlich kulanter. Du kannst auch schon einmal in eine Spalte Text schreiben, obwohl sie für Zahlen gedacht ist. So etwas geht in Base nicht.

Du kannst aber auch eine reine Datenbank für Textdateien erstellen. Die zeigt Dir dann alle *.csv-Dateien in einem Verzeichnis an. Diese Dateien müssen allerdings gleich formatiert sein, d.h. der Feldtrenner und Dezimaltrenner usw. müssen in den Tabellen übereinstimmen. Siehe dazu das Handbuch, S. 88 - 90. Hier geht das Aktualisieren der Dateien natürlich vor dem Start einer Tabelle in Base.

Eine bessere Performance würed ich mir davon aber nicht versprechen, denn Du nutzt ja eigentlich nicht das Datenbankmodul, sondern genau den gleichen Importfilter wie bei Calc.

Hey und danke für die schnelle Antwort!

Zuerst erhoffe ich mir eine bessere Verbesserung des Datenimport. Der Weg über die Alpha Vantage API wäre deutlich komfortabler als der aktuelle über GoogleSheets.

Die API liefert alle Daten in gleichen Format. Wenn ich Dich richtig verstanden habe, würde ich damit eine reine Datenbank für Textdateien erstellen können/müssen.

timestamp,open,high,low,close,volume
2021-04-16,13.6300,13.6800,13.3500,13.3900,50024438
2021-04-15,13.7300,13.7500,13.4400,13.5500,50881784

Sind auf Basis dieser Daten weitere Operationen möglich, sprich kann ich damit das Ranking berechnen?

Ich habe die Zeilen in eine Textdatei eingelesen und dann diese Datei in ein Verzeichnis gepackt. Die Daten kann ich mit so einer Datenbankdatei darin sehen. Ich kann auch Abfragen dazu erstellen. Funktionen irgendwelcher Art stehen hier aber nicht zur Verfügung. Du kannst natürlich mit verschiedenen Rechenoperationen und Sortieroperationen arbeiten. Wie Du aber grundsätzlich ein Ranking berechnest weiß ich nicht. Dafür ist mir das Thema Aktien zu fern - würde ich mich im Leben nie mit beschäftigen wollen.

Sobald ich aber versuche, auf eine zweite Tabelle zuzugreifen gelingt das mit Base nicht. Und genau das würdest Du ja benötigen, oder?