Estymowanie zmiennych danych

0

Chciałbym, w czasie rzeczywistym, generować wykres pewnej wartości. Dla uproszczenia, przyjmijmy, że mowa tutaj o notowaniu akcji spółki na giełdzie. Bez problemu mogę pobrać informację o jej notowaniach w dowolnym dniu, a nawet godzinie/minucie/sekundzie w przeszłości. Na podstawie tych danych, chciałbym stworzyć wykres, pokazujący, co sekundę, zmianę tej wartości.

Problem w tym, że odpytywanie bazy co sekundę, będzie mnie kosztowało (246060 =) 86400 zapytań na dobę ... dla jednej spółki. Co więcej, takich "spółek" chciałbym monitorować 40, więc skala wzrasta do (86400 * 40 =) 3456000 zapytań na dobę. To już niestety, dużo za dużo (bo mam określoną liczbę zapytań jakie mogę do tej bazy wysłać).

Bardziej niż o rzetelności danych, w danej sekundzie, zależy mi na samym efekcie ukazania wahań notowania, aby zobrazować jak zmienna jest sytuacja.

W związku z tym, planuję:

  1. Pobrać "na spokojnie" w dłuższym okresie czasu, dane historyczne, z dokładnością do sekundy.
  2. Na podstawie danych historycznych, określić charakterystykę zmian (dobową, godzinową, minutową, sekundową).
  3. Na podstawie powyższej charakterystyki, generować estymację aktualnej sytuacji.
  4. Na podstawie danych pobieranych np. co 12/24 godziny, korygować powyższą estymację.

Czy znacie jakiś algorytm, którym warto byłoby się posłużyć? Teoretycznie jestem w stanie napisać coś takiego samodzielnie, bo nie znam gotowego rozwiązania, ale wierzę, że istnieje i z chęcią je wykorzystam, albo będę się na nim wzorował. Jednym słowem, potrzebuję zapewne jakiejś biblioteki/algorytmu wykorzystywanego w statystyce(?) lub rachunku prawdopodobieństwa (?).

Będę wdzięczny za sugestie.

0

Musiałbyś zastosować ekstrapolację, ale to nie jest zbyt dokładne rozwiązanie i wahania pomiędzy oszacowaną a prawidłową wartością mogłyby być na tyle spore że szacowanie straciło by sens. Im dalszy okres chcesz szacować tym gorzej by to wyszło.

Alternatywne rozwiązanie.
Dla danych aktualnych pobierasz dane z szybkością jaka jest możliwa i interpolujesz posiadane punkty, a w tle pobierasz brakujące prawidłowe wartości. Jeżeli potrzebujesz dokładności co do sekundy to ekstrapolujesz na podstawie 20 ostatnich punktów i jako wynik otrzymujesz przyszłe sekundy.

0

Dzięki za odpowiedź. Jeszcze chciałbym tylko dodać, że pomiędzy poszczególnymi: dniami tygodnia, dniami miesiąca, oraz godzinami (w trakcie dnia) występują podobne trendy. Te trendy chciałbym wyszukać i na ich podstawie szacować. Może to jakoś pomoże?

0

Takie prognozowanie przyszłych wartości nie jest zagadnieniem trywialnym, zwłaszcza dla spółek giełdowych, gdzie dużą rolę odgrywają czynniki niekoniecznie obecne w danych historycznych. Nie ma możliwości uzyskania w jednym zapytaniu do bazy większej ilości danych? Jak ostatnie X wartości dla danej spółki zamiast jednej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1