jam231 / sia

Stock market server (part of stock market simulation system).
1 stars 0 forks source link

Rezultaty #36

Closed kaiks closed 10 years ago

kaiks commented 11 years ago

Jak wyglądają wasze najbardziej optymistyczne wyniki? tj. udaje wam się chociaż trochę realistyczne te obrazki tworzyć? bo mi póki co najbliższe to coś takiego

wyk21

ale szału jak widać nie ma...

marimarek commented 11 years ago

Ja jeszcze tak długich symulacji nie przeprowadzałem, bo jak widizałem, że nie dzieje się dobrze to przerywałęm i kombinowałem, ale może to błąd, bo u Ciebie czasem po długiej przerwie coś się zacyznało dziać. Ale ostatnie 5 minutowe symulacje wyglądały obiecująco tylko agenci się wywalali. Już to naprawiłem i zapuszczam na dłużej zobaczymy co się stanie? Twoi agenci są aktualni na Twoim branchu? Jak ich odpalasz? Może ich zmixuje z moimi i zobaczymy co się wydarzy. :D

kaiks commented 11 years ago

no oni niiiby działają ale tam jest wiele do życzenia w agencie klient_konserwatywny który robi większość ruchu, ale może to naprawię w ciągu godziny ale nie wiem czy będziesz jeszcze

możesz sobie odpalić: runfile klient_spokojny.rb

i on powinien działać ale nie ręczę bo jestem w trakcie zmian tzn. tam możesz zmienić ew. dane do logowania tych agentów jeśli masz jakieś ustalone bo oni się chyba nie rejestrują póki co

a u mnie się tak dzieje że handlują po przerwie bo ci agenci są losowi no i czasem coś zmieniam w trakcie trwania sesji to też się czasem coś stanie

teraz mam poważny błąd taki że mi agenci sami ze sobą handlują :p muszę tych losowych swoich trochę bardziej ulogicznić i powinno być lepiej ale myślę że to też kwestia małej ilości tych agentów

marimarek commented 11 years ago

U mnie to nie wyglda dobrze, a nie wiem czy bede mia czas jeszcze cos zrobic. Zapuscilem test na noc, ale po 10 min. juz nic sie nie stalo. Mam 4 typy agentow: calkiem losowy, podazajacy za trendem(jesli cena spada to sprzedaje, jak rosnie kupuje - troche to czasem lawine wywoluje), czekajacy na zmiane trendu(jesli cena spadala i nagle wzrosnie to on kupuje), konserwatysta(ustala sobie na poczatku cene w ktora wierzy, ze taka jest wartosc akcji i pozniej wedlug tej ceny ocenia czy oplaca sie kupowac czy sprzedawac, jesli przez jakis okres czasu cena mocno odbiega od jego oczekiwan to ja weryfikuje). Wszyscy tez anuluja zlecenia jesli mocno odbiegaja one przez jakis czas od faktycznej ceny.

Przed wyjsciem do pracy pozmienialem parametry agenta i zapuscilem test, ale cudow sie nei spodziewam. Jak wrooce to gdzies wkomituje moich agentow. Moze mix naszych agentow cos da, nie wiem.

Strasznie mnie boli, ze to nie agenci decyduja ile maja zasobow(jak na poczatku proponowalem), bo na przyklad chcialbym sobie zrobic typ agenta gruba ryba(jakies fundusze inwestycyjne), ktory mialby duzo pieniedzy na poczatku i moze akcji tez i by wiekszosc pieniedzy inwestowal w najlepsze wedlug niego akcje i bylby cierpliwy. To prawdopodobnie by blokowalo wszelkie mozliwosci mocnych wahan, a inni agenci mogliby mocniej szalec nie psujac rynku.

marimarek commented 11 years ago

I nie wiem czemu moi agenci tak sie blokuja po krotkim czasie, bo zwykle prze zpierwsze minuty to wygladalo nie najgorzej to znaczy na niektorych symulacjach dzialo sie tak, ze przez pierwsze mintuy bylo tak jak powinno male wachania o <1%.

kaiks commented 11 years ago

jesli Ci zalezy moge dorobic jakies funkcje SQLowe, np z interfejsem:

stworz_uzytkownika(haslo, ilosc_pieniedzy)

oraz: przydziel zasob(uz, id_zasobu, ilosc)

ja prawdopodobnie dziś nie będę w stanie zbyt wiele zrobić, choć się postaram (ani jutro, na dobrą sprawę) i resztkę czasu poświęcę od środy do czwartku, tj. rzędu ~12 godzin

marimarek commented 11 years ago

Nie wiem, czy jest sens, zebys to robil, bo ja chyba tez nie bede mial czasu juz z tego skorzystac. Byc moze tez w srode po poludniu bede mial chwile czasu, ale to raczej watpliwe. A Twoi agenci co sa na branchu dzialaja(ktorych mozna uzywac na obecna chwile)? Rozumiem, ze runfile klient_spokojny.rb odpala jednego agenta? A jakbym chcial odpalic wiecej?

kaiks commented 11 years ago

na dole pliku klient_spokojny.rb jest kod:

@klienci = []

88.times { |i|
  @klienci << Thread.new {
    sleep(1.0*rand(100)/10.0)
    DumbClient.new('%06d' %(i+402), i+402)
    #EventMachine.connect '127.0.0.1', 12345, DumbClient, '%06d' %(i+2), i+2
  }
}

który sprawia że uruchamiają mi się agenci o ID 402...490 i haśle "000402"..."000490" myślę że kod mówi sam za siebie mniej więcej :p a czy on działa to być może (w nocy robiłem refaktoryzacje i nie testowałem jeszcze)

tak czy inaczej do 15 będzie działał

kaiks commented 11 years ago

jeszcze jedna sprawa @marimarek pamiętaj o tym że na masterze jeszcze do nocy były błędy z anulowaniem zleceń póki @jam231 nie dodał fixa (nie działało anulowanie) jeśli z tego korzystałeś

marimarek commented 11 years ago

Wiem, ja to okolo 2-3 w nocy przerzucilem na mastera.

marimarek commented 11 years ago

Czy ilosc akcji na dole wykresu oznacza ilosc akcji na rynku. Bo mam jesli tak to chyba problemem jest, ze moi agenci wykupuja akcje i nie kwapia sie z ich sprzadaza.

marimarek commented 11 years ago

Dobra już wiem o co chodzi z tym wykresem. :P

kaiks commented 11 years ago

Na obecną chwilę sytuacja wygląda następująco:

pod tym adresem: https://github.com/kaiks/SIA_RYNKI_r_agent są moi agenci, których odpala się np poprzez uruchomienie pliku just_agents.bat (mozna tam zajrzec zeby zobaczyc jak to dziala)

u @jam231 na branchu są jego agenci https://github.com/kaiks/SIA_RYNKI_r_agent/tree/dev_jam231 których odpala się z katalogu jamAgent (ale podkatalog też jest potrzebny)

u @marimarek są jego agenci których odpala się przez QT

Zastrzegam, że dziś, ze względu na fantazyjne próby zmuszenia serwera do współpracy (próba wymuszenia 10000 agentów) nie udało mi się przeprowadzić żadnej sensownej symulacji. (tj. np. akcje tylko rosną: wyk12


W razie wątpliwości kogokolwiek chętnego do przeprowadzania jakichś sensownych symulacji, możecie tu pisać lub dzwonić


Symulacji (długotrwałej) nie damy rady przeprowadzić na >600 agentów: serwer się krztusi. Powiem więcej, mam przypuszczenia, że na 300 agentach, symulacja będzie bardziej realistyczna, niż na 600, ze względu na to właśnie, że serwer zamula


Ja na dziś daję sobie z tym spokój. Plan na jutro:

kaiks commented 11 years ago

Jeszcze może zastrzegę, że nie jest aż tak znowu bardzo tragicznie

Niektóre mniej płynne spółki z WIG20 (tj. te zamykające 20 firm którymi najczęściej handluje się na polskiej giełdzie) również miewają szarpane wykresy: http://stooq.pl/q/?s=lwb&c=1d&t=l&a=lg&b=0 http://stooq.pl/q/?s=brs http://stooq.pl/q/?s=bhw

Znajome kształty da się rozpoznać ze spółek trochę mniejszych, ale nadal należących do dużych: http://stooq.pl/q/?s=cdr&c=1d&t=l&a=lg&b=0

Najsmuklejsze wykresy są każdego dnia na KGHM: http://stooq.pl/q/?s=kgh&c=1d&t=l&a=lg&b=0 , dużo transakcji dziennie bywa zawieranych na spółce groszowej: http://stooq.pl/q/?s=oil

jam231 commented 11 years ago

Ja tylko od siebie dodam, że udało mi się odpalić ~1000 moich agentów (handluja juz od godzinki). Na jednym komputerze mam zuzycie cpu na poziomie od ~20 do ~45 % (na tym na którym stoi giełda + ~600 agentow), na drugim natomiast waha sie od 1 do 35%. Z ramem tez nie jest tak tragicznie, bo w sumie zzera moze z 3 gb.

Wygenerowałbym jakieś wykresy, ale nie dziala ten feature ;-(

Myślę, że i z 1300 agentów dałoby rade (gdyby cześć moich zastąpić Twoimi). Niestety u mnie dość dobitnie widać, że serwer już jest u szczytu swoich możliwości (no dobra, jeszcze pownienem wywalić ten output z qDebuga()) i przy wiekszej liczbie agentów po prostu będzie ignorował część agentów.

[20 min pozniej...] 400 moich nadpobudliwych agentow wykorzystuje w porywach 1.5 % z 36 Mbps łącza (Wireless network), co daje niecałe 80 kB/s - również relatywnie mało.

marimarek commented 11 years ago

Ja dzisiaj sprobuje zmienic jeszcze swoich agentow dosc mocno i przeprowadze jeszcze max 2 symulacje: na 1h godzine i do rana, na wiecej nie bede mial czasu bo do domu wroce kolo 21, a jutro do pracy rano.

kaiks commented 11 years ago

@jam231 te 10 000 też mi się odpalało, problem w tym, że później się okazywało, że działa z nich tylko 5% po 10 minutach

chyba że rzeczywiście po odpaleniu tego tysiąca nadal masz co najmniej 3 transakcje na sekundę

a co do wykresów to możesz dać znać co tam Ci nie działa to sprawdzę

kaiks commented 11 years ago

Zgodnie z zapowiedzą, zrobiłem mądrzejsze przydzielanie zasobów: Każdemu użytkownikowi w dalszym ciągu przydzielana jest ta sama ilość pieniędzy, lecz:

Przy tworzeniu użytkownika, losowane są dla niego w pierwszej kolejności dwie zmienne: liczba zasobów wartość pieniężna P wszystkich zasobów jakie otrzyma

Każdy użytkownik dostaje od 1 do 6 zasobów wybieranych losowo

Dla każdego zasobu losowana jest wartość UZ z przedziału (0, 0.5), która oznaczać będzie procentową ilość wartości poświęconej na ten konkretny zasób.

Następnie wyliczamy wartość zasobu: UZ*P i dzielimy przez "prawidłową" cenę zasobu (tj. taką, jaka była na prawdziwym rynku w momencie mojego zdobywania informacji nt. spółek). To jest ilość akcji danego zasobu.

Przykład: Tworzony jest nowy użytkownik. Przydzielamy mu 10 000 00 jednostek pieniężnych.

Losowana jest liczba zasobów: 2 Losowana jest wartość pieniężna: 100 000

Losowane są udziały procentowe zasobów w portfelu: 0.235, 0.765

Iteracja 1: Losowana jest akcja: KGHM Cena KGHM wynosi 11730 wylosowany udział KGHM w portfelu wyniósł 0.23 Użytkownik dostaje: 0.235*100000/11730 ~= 2 akcje kghm

Iteracja 2: Natrafiamy znów na KGHM. Wiemy, że to już było, losujemy ponownie

Iteracja 3: Losowana jest akcja Boryszew Cena Boryszew wynosi: 52 wylosowany udział: 0.765 Użytkownik dostaje: 100000*0.765/52 ~= 1471 akcji boryszew

Koniec.

marimarek commented 11 years ago

Moi agenci teraz raczej ciagna akcje w dol niz w gore, wiec jakby zmixowac ich to moze by cos z tego wyszlo, ale dalej nie moge Twoich w ruby odpalic, a nie bardzo moge swoich na brancha wrzucic, bo cos nie moge sie z mojego kompa z internetem polaczyc. A tez nie mam czasu tutaj, zeby bawic sie co mam nie tak z ruby.

kaiks commented 11 years ago

Jeśli mi nie napiszesz błędu to ja Ci na pewno nie pomogę.

Kiedy mi przesyłacie symulacje to jeśli już nie chcecie mi przesyłać plików tekstowych żebym sobie sam wygenerował (prosiłem o txt+png) to chociaż generujcie NOWE wykresy, z pogrubioną linią, bo tak to nic nie będzie widać.

Fajnei by też było jakbyś @marimarek przesyłał mi informacje nt. tego jakich agentów w jakich proporcjach używałeś, bo

No, tu mamy tego, eeee, kolejną symulację... no i ona jakoś tak wygląda... idźmy dalej

jest chyba średnio przekonujące, zwłaszcza gdy padnie pytanie:

no, fajnie, a czym się ona różni od poprzedniej?