Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert sind; Die von diesem Forum gesetzten Cookies düfen nur auf dieser Website verwendet werden und stellen kein Sicherheitsrisiko dar. Cookies auf diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Open Source Tools und Daten
#21
Notiz 

RE: Open Source Tools und Daten

(05.01.2023, 12:01)Lancelot schrieb: Da besteht wohl ein Missverständnis. kdb+  ist eine Time Series Datenbank + Real Time Analytics. Das ist Software. kdb+ ist kein Datenlieferant. Das wird auch von Formel 1 Teams und Telecoms benützt. Das ist erstmal agnostisch zu Daten. Da ist kdb+ keine Magie (wie alles). Da liegen auch nur Files in einem Filesystem. 

Wie die Daten in die Datenbank kommen, ist eine andere Fragestellung. Dafür bist du selbst zuständig. Du kannst natürlich Daten über IB in die kdb+ Datenbank ziehen. IB bietet auch FIX an. Da gibst überall Code Schnippsel für. Wenn du die Client API verwendest kannst du das mit ein bisschen code in den Ticker Plant von kdb+ schieben. 

So etwa:
https://github.com/mfitsilis/ibfeed

Aber das ist natürlich von der Performance der IB Client das Bottleneck.

Hast du eigentlich Erfahrung mit der Anbindung von python und kdb+ (Stichwort pyq;
Code:
x = q.f('IBM', date(2006,10,6))
)?

Aktuell liegen bei mir gecached Kursdaten einfach mit ihrem Symbol in einem Verzeichnis. Ich hatte mir immer schon mal überlegt, die in eine Datenbank zu packen, allerdings war mir dann die ganze Aufrufgeschichte doch zu aufwendig. Mit kdb+ scheint das ja deutlich einfach zu sein.
#22
Notiz 

RE: Open Source Tools und Daten


Lancelot
Wenn du 
- eh primär mit Python arbeitest
- und deine Datenmengen nicht super riesig sind und Performance nicht enorm wichtig ist

würde ich entweder:
- pytables verwenden: (hdf5) komprimiert, relativ performant, intuitiv und einfach aufzusetzen. Das habe ich oft verwendet. https://www.pytables.org/
- ordentlich partitionierte (Beispiel symbol, date) parquet files (zstd compression) un dein bisschen boilerplate code in polars schreiben. Das ist imnmer meine erste Art Daten zu organisieren. https://www.pola.rs/. Ich hab mein eigenem packages  für. 
Liest sich dann in etwa so ticker.read_symbol.ohlc("AAPL").freq("5min").from(start_date).to(end_date)  oder ticker.read_symbol.quotes_and_trades("SPY").from(start_date) und raus kommt ein polars dataframe. 

Tatsächlich habe ich kdb+ aus python nicht viel verwendet. Ich hatte getrennte kdb+ jobs/Prozesse die Daten aufbereitet haben und dann aggregiert irgendwo abgelegt haben. Auf diese Aggregate bin ich dann separat mit Python. 

Mann sollte sich das genau überlegen ob man eine echte Datenbank braucht. In der Regel kommt man mit den beiden oben beschriebenen Wegen weit genug.




__________________
Forum-Besserwisser und Wissenschafts-Faschist
#23
Notiz 

RE: Open Source Tools und Daten

(05.01.2023, 14:38)Lancelot schrieb:
Lancelot
Wenn du 
- eh primär mit Python arbeitest
- und deine Datenmengen nicht super riesig sind und Performance nicht enorm wichtig ist

würde ich entweder:
- pytables verwenden: (hdf5) komprimiert, relativ performant, intuitiv und einfach aufzusetzen. Das habe ich oft verwendet. https://www.pytables.org/
- ordentlich partitionierte (Beispiel symbol, date) parquet files (zstd compression) un dein bisschen boilerplate code in polars schreiben. Das ist imnmer meine erste Art Daten zu organisieren. https://www.pola.rs/. Ich hab mein eigenem packages  für. 
Liest sich dann in etwa so ticker.read_symbol.ohlc("AAPL").freq("5min").from(start_date).to(end_date)  oder ticker.read_symbol.quotes_and_trades("SPY").from(start_date) und raus kommt ein polars dataframe. 

Tatsächlich habe ich kdb+ aus python nicht viel verwendet. Ich hatte getrennte kdb+ jobs/Prozesse die Daten aufbereitet haben und dann aggregiert irgendwo abgelegt haben. Auf diese Aggregate bin ich dann separat mit Python. 

Mann sollte sich das genau überlegen ob man eine echte Datenbank braucht. In der Regel kommt man mit den beiden oben beschriebenen Wegen weit genug.




Gute Tipp! Die Voraussetzungen dürften für mich passen, werde mir pytables mal anschauen.
#24

RE: Open Source Tools und Daten

Welche Python-Module brauche ich für so was hier:

Ich habe je 1000 Datensätze in je 100 CSV-Dateien.
Ich möchte für jeden Datensatz in der neuesten Datei recursiv nach den zum Teil übereinstimmenden Einträgen in den übrigen 99 Dateien suchen und daraus ggf. für jeden der 1000 Datensätze einen 2 dimensionales Array bzw. Tabelle erstellen, um diese dann auszuwerten.

Pandas? Pytables? Am besten beides? Was anderes?

__________________
"In times of rapid change, experience could be your worst enemy"

J. Paul Getty
#25
Notiz 

RE: Open Source Tools und Daten

(05.01.2023, 18:03)lomo schrieb: Welche Python-Module brauche ich für so was hier:

Ich habe je 1000 Datensätze in je 100 CSV-Dateien.
Ich möchte für jeden Datensatz in der neuesten Datei recursiv nach den zum Teil übereinstimmenden Einträgen in den übrigen 99 Dateien suchen und daraus ggf. für jeden der 1000 Datensätze einen 2 dimensionales Array bzw. Tabelle erstellen, um diese dann auszuwerten.

Pandas? Pytables? Am besten beides? Was anderes?

was heißt "zum Teil übereinstimmend" heißt du hast einen fachlichen Schlüssel? Also du hast Einträge zu MSFT in deiner neusten csv und suchst alle Einträge zu MSFT in den alten Dateien?

Für sowas ist ne Datenbank schon nett. Bei so kleinen Datenmengen geht das auch mit brute force machen. Dauert völlig bescheuert programmiert unter 3 Sekunden.

Der Großteil des codes ist da um Testdaten zu erzeugen. 
  
Code:
import pandas as pd
import numpy as np
import glob
import os
import time
start_time = time.time()

# hier einen pfad für die erstellten Testdaten eintragen
my_path = "C:/Data/test/"

# test daten erzeugen
anzahl_keys = 10
anzahl_daten = 1000
anzahl_files = 100
keys = ["key_" + str(x) for x in range(anzahl_keys)]

for file in range(anzahl_files):
    if file == 1:
        filename = "new_file.csv"
    else:
        filename = "file_nr_"+ str(file)+".csv"

    pd.DataFrame(
        data = np.concatenate((np.random.choice(keys, (anzahl_daten, 1)),
                               np.random.standard_normal((anzahl_daten, 1))), axis=1),
    columns = ["key","value"]).to_csv(my_path + filename)


# daten lesen und auf die keys in der neusten filtern.
new_df = pd.read_csv(my_path + "new_file.csv")
new_keys = new_df["key"].drop_duplicates()
old_dfs = pd.concat([pd.read_csv(file).merge(new_keys,on=["key"], how = "inner")
                     for file in list(filter(lambda x: "new_file" not in x,glob.glob(os.path.join(my_path , "*.csv"))))])

all = pd.concat([new_df,old_dfs])

print("zeit? " + str( (time.time() - start_time)) )

Du müsstest konkreter werden was genau dein Ziel ist. Was sind die zwei Dimensionen? Der neue Wert und die "ähnlichen" (was heisst das?) Werte der alten Daten? Sind die Werte in der neuen csv eindeutig?

__________________
Forum-Besserwisser und Wissenschafts-Faschist
#26

RE: Open Source Tools und Daten

100 Files (100 Tage) mit je 1000 Wertpapierkennungen inkl. OHLC-Daten auf EoD-Basis (täglich rolierend, spielt aber hier keine Rolle).
Ich müsste daraus ein File erstellen, die z.B. 100 Schlußkurse dieser Hundert Tage für jede der 1000 Kennungen beinhaltet, um dann mit dieser Matrix zu arbeiten.
Ich will jetzt deine Thread nicht zumüllen. Mir ging es nur darum, welche Module in Python hilfreich wären, um dies effizient zu erledigen. Das hast du ja mit dem vorigen Post beantwortet.

__________________
"In times of rapid change, experience could be your worst enemy"

J. Paul Getty
#27
Notiz 

RE: Open Source Tools und Daten

https://chat.openai.com/

Wie beurteilt ihr das hier (ich finde schon etwas krass):

Input:
"Calculate the slope of each stock in the S&P 500 on daily basis for a time span of 90 days, and then sort the stocks in descending order by their slope and printed them out. Use pandas_datareader libraries for grap all members of S&500 in wikipedia and get EoD data in Yahooo Finance. Use yfinance as well."

Output:
Here is an example of how you could use the yfinance library to download the end-of-day data for each stock in the S&P500 from Yahoo Finance, calculate the slope of the closing prices for each stock on a daily basis for a time span of 90 days, sort the stocks in descending order by their slope, and print out the stock symbol and its slope:

   

This will give you the slope of the closing prices for each stock in the S&P500 on a daily basis for a time span of 90 days, sorted in descending order, and it will print out the stock symbol and its slope.
Please note that the above code will download the data for all the stocks in S&P500 and it may take a while to execute. Also, it will skip the stocks if it doesn't find the data for the stock.

__________________
"In times of rapid change, experience could be your worst enemy"

J. Paul Getty
#28
Notiz 

RE: Open Source Tools und Daten

(12.01.2023, 15:58)lomo schrieb: https://chat.openai.com/

Wie beurteilt ihr das hier (ich finde schon etwas krass):

Input:
"Calculate the slope of each stock in the S&P 500 on daily basis for a time span of 90 days, and then sort the stocks in descending order by their slope and printed them out. Use pandas_datareader libraries for grap all members of S&500 in wikipedia and get EoD data in Yahooo Finance. Use yfinance as well."

Output:
Here is an example of how you could use the yfinance library to download the end-of-day data for each stock in the S&P500 from Yahoo Finance, calculate the slope of the closing prices for each stock on a daily basis for a time span of 90 days, sort the stocks in descending order by their slope, and print out the stock symbol and its slope:



This will give you the slope of the closing prices for each stock in the S&P500 on a daily basis for a time span of 90 days, sorted in descending order, and it will print out the stock symbol and its slope.
Please note that the above code will download the data for all the stocks in S&P500 and it may take a while to execute. Also, it will skip the stocks if it doesn't find the data for the stock.


Großartig - die angebliche Intelligenz des Menschen wird maßlos überschätzt. Ich liebe chatGPT und warte drauf, dass die "KI" auf Zugriff auf aktuelle Daten hat und mit einigen Heuristiken ihre Antworten bewertet.

chatGPT ich will ein Kind von dir Pctap ... muss nur noch schauen, wo ich das Baby großziehen kann - wird wohl nicht billig...
#29
Notiz 

RE: Open Source Tools und Daten

(12.01.2023, 16:32)TomJoe schrieb: chatGPT ich will ein Kind von dir Pctap ... muss nur noch schauen, wo ich das Baby großziehen kann - wird wohl nicht billig...

Das Ding ist so was von krass...
Es macht sogar vorschläge zur Verbesserung des Inputs selber

"
This task requires a significant amount of programming and data analysis. Here is an outline of the steps that would need to be taken in order to complete it:
1 ...
2 ...
3 ...
4 ...
5 ...
6 ...
It's important to note that this task requires a good understanding of mathematical and statistical concepts such as exponential growth, R-squared, and slope. It also requires proficiency in programming and data analysis using Python and the pandas library.
"

__________________
"In times of rapid change, experience could be your worst enemy"

J. Paul Getty
#30
Notiz 

RE: Open Source Tools und Daten

Die Diskussion hatte ich erst vor kurzem mit jemanden aus der frühen Schachprogrammierwelt. Eventuell ist das alles gar nicht so toll, was wir Menschen machen. Also unsere Intelligenzleistung ist vielleicht nicht so überragend. 

Es ist irgendwie immer das Selbe: sobald die Machine Learning Community ein Problem löst, heißt es immer: ja aber Intelligenz ist was anderes.

1992: TD Gammon => so gut wie die besten Spieler in Back Gammon. Neuronales Netzt mit Temporal Difference Learning. Ja aber..nicht wirklich Intelligent. So was wie Schach könnte das nicht spielen.
1997: Deep Blue => ja aber eigentlich Brute Force Search auf nem Riesenrechner. Ein bisschen Heuristik und dann rechnet das einfach alles durch. Keine Intelligenz
2005: Hydra zerlegt mühelos Schach Großmeister mit nem Normalen Laptop. Ja aber nur monte carlo tree search.... Ein komplexeres Spiel wie Go geht so nicht. Da ist der Suchraucm zu groß. Menschen können das aber trotzdem.
2011: Siri => ja, aber die peilt ja garnix
2016: AlphaGo => ups
2019: Pluribus zerlegt einen ganzen Tisch von Profi Poker-Spielern. Obwohl die Profis tatsächlich eher gegen den Algo kooperieren anstatt selbs zu spielen. 
> 2020 ChatGTP3 und Cicero (das ist wirklich für mich das härteste: eine AI di kommuniziert, plant, manipuliert..).

__________________
Forum-Besserwisser und Wissenschafts-Faschist


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
Notiz Kostenlose Historische EOD Daten atze2000 69 74.809 04.03.2021, 15:55
Letzter Beitrag: Noni-Binder
Notiz EOD Daten Feeds atze2000 7 9.364 08.02.2019, 12:59
Letzter Beitrag: Noni-Binder
Notiz Free Future Daten atze2000 0 2.296 11.01.2019, 13:27
Letzter Beitrag: atze2000
Notiz Cot Daten atze2000 2 3.786 10.01.2019, 19:46
Letzter Beitrag: atze2000

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste