Das Notes Forum

Sonstiges => Offtopic => Thema gestartet von: Don Pasquale am 22.02.05 - 18:00:35

Titel: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 22.02.05 - 18:00:35
Ich habe da ein Problem in meinem Börsenspiel. Ich möchte die Kurse
berechnen und habe mir da ein eigenes Modell überlegt.
Es gibt 18 Aktiensorten, im Beispiel gehen wir aber nur von einer Sorte aus.

Jeder - der sagen wir einmal 10 - Mitspieler verfügt über 100 Aktien. Der Startkurs beträgt 30 €. Es gibt unendlich viele Aktien im Angebot.

Laut Regel soll sich der Kurs der Aktie um 0,0125 € verändern
pro georderter Aktie. Oder um 0,125 € sinken pro verkaufter Aktie.

Das Problem: Zu dem Zeitpunkt wo jemand Aktien ordert weiss er noch nicht, zu welchem Preis er die Aktie erhalten wird, denn seine Nachfrage bestimmt den Preis ja mit.

Nehmen wir mal den leichtesten Fall :
 Alle wollen Aktien kaufen und sind bereit 1000 € auszugeben.
 Den Kurs zu dem sie kaufen werden, kennen sie noch nicht,
denn er wird ja erst durch die Nachfrage bestimmt.
Wir haben also eine Nachfrage von 10.000 €.
Der Startkurs beträgt 30 €.
Wieviel Aktien  X bekommt jeder Spieler damit folgendes stimmt :
10000 € / ( 30 € + X * 0,0125 € ) = X

Was für einen Algorithmus nutzt man denn da, denn mit
einem Durchlauf ist das ja nicht errechnet ?

Das erinnert mich an etwas was ich schon in der Schule
nur schwer lösen konnte.

Bitte nur fertigen Code posten !

kleiner Scherz.

Wer hat eine Idee ?

ICH !

LÖSUNG:

10.000 EUR / ( 30 EUR + X * 0,0125) = X        | * Klammer

10.000 EUR = ( 30 EUR + X * 0,0125) * X

10.000 EUR =  30 EUR X + X*X * 0,0125        | -10000

0,0125 X*X + 30 X - 10000 = 0           | *80

X*X + 2400 X - 800.000 = 0

und dann pq-Formel:
x1,x2 = -1200 +/- Wurzel ((1200)^2 + 800.000)

Anzahl Kauf = -1/2 * (Alter Preis * 80) + Wurzel [(1/2 * (Alter Preis * 80))^2 + (80 * Investition)]

Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: eknori am 22.02.05 - 18:12:18
FipTehler:

kann man mit 10.000€ aber 292

du meinst doch wohl eher

kann man mit 1.000€ aber 292

ach ja, was ist eigentlich die Frage ??

Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 22.02.05 - 18:18:23
@eknori

Wieder mal den Wald vor lauter Bäumen nicht gesehen.
Ich hab mein Posting ergänzt.

Wie berechnet man den Kurs, wenn das Ergebnis wieder auswirkungen auf den Startwert hat ?

Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 22.02.05 - 18:28:28
Verstehe deinen Ansatz nicht ganz.
Für mich besteht eine Order immer aus:
menge und preis. Beide werden durch das Angebot selbst nicht beeinfalusst.
Mitspieler A ordert 333 Aktien zu 31 Euro.
Mitspieler A hat aber nur 10.000 Euro.
Das Volumen (Menge * Preis) dieser Order ist aber 10.323 Euro.
Das Spiel teilt ihm dann mit, wieviel Aktien er für 10.000 Euro zu diesem Preis ordern kann.
Der Wert einer Aktie ist sowieso etwas höchst volatiles.
Sobald sich Bieter und Käufer (Orderer) zu einem Preis treffen, findet eine Transaktion statt.
Der Preis dieser Transaktion ist der neue Preis der Aktie.
Der Preis ändert sich ständig.
Ein nicht ganz triviales Problem für Datenkonsistenz bei gleichzeitigen Zugriffen auf ein RDBMS



Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: eknori am 22.02.05 - 18:29:25
noch einmal nachgefragt:

bei jedem "ungeraden Kauf" ( 1. 3. 5. ... ) steigt der Kurs um den Faktor 1,0125 , bei jedem geraden Kauf  ( 2., 4., ... ) sinkt er um -,50 €; ?

Und jetzt willst du wissen, wieviele Aktien du kaufen kannst, wenn du so dumm bist, in Stückelungen von x Euronen bei einem vorgegebenen Kapital von y Euronen Aktien zu kaufen ?


Warum kaufst du nicht direkt für 10.000, wartest ein bisschen und verkaufst die gesamte Blase wieder; setze dir ein Limit von 5% und du machst Gewinn ...


Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: eknori am 22.02.05 - 18:32:21
Zitat
Ein nicht ganz triviales Problem für Datenkonsistenz bei gleichzeitigen Zugriffen auf ein RDBMS

@Axel:

es ist ein höchst einfaches Problem nach dem Motto "Ergänzen sie die Reihe " 1  2 5 7 ... ; nicht mehr und nicht weniger  :D
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 22.02.05 - 18:35:27
Ich glaub Eknori will uns veräppeln.  ??? Oder es ist mir zu hoch.

Jedenfalls sehe ich den Preis einer Aktie (wie er z.B. in einem Börsenticker angezeigt wird) als etwas anderes an als den Preis_eines_Angebots.
Imho ist der Börsentickerwert sowieso immer nur ein snappshot, da sich der eigentliche Preis der Aktie bei vielen Transaktionen sowieso ständig pendelt.
(ich definiere Preis_der_Aktie als Preis zu dem die letzte Markträumung stattgefunden hat, d.h. Angebots_Preis und Nachfrage_Preis einer Order sich getroffen haben und Aktien den Besitzer gewechselt haben (Transaktion).

Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: eknori am 22.02.05 - 18:37:20
du denkst hier zu kompliziert; Pascal hat einfach nur eine konstruierte mathematische Aufgabe gepostet; nix reales ...
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 22.02.05 - 18:38:36
es ist ein höchst einfaches Problem nach dem Motto "Ergänzen sie die Reihe " 1  2 5 7 ... ; nicht mehr und nicht weniger  :D
Nein. Nicht veräppeln. Beginne zu verstehen.
Also ein Angebot selbst sollte niemals den Preis einer Aktie bestimmen.
Das geht vielleicht auf dem Markt beim Gemüsekauf
(gut für 2 Euro bekommen sie noch 1 Tomate extra)
Aber ich würd so keinen Aktienmarkt modellieren, weil man dann wahnsinnig wird.  ;D
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 23.02.05 - 10:12:11
@eknori: Schäm Dich was. Forumskollegen die helfen wollen zu veräppeln. Ohne Nachtisch ab ins Bett !

Von Vorne :

Ich habe ein Spiel selbst erfunden, bei dem habe ich 18 Aktien mit einem Startwert von 30 €. es gibt ein unbegrenztes Angebot. Jeder besitzt bereits 100 Aktien von jeder Sorte.

Betrachten wir nun eine Aktiensorte XY:

Der Startkurs ist 30 €.

Jeder Spieler ordert nun für 1.000 € Aktien.
Nun muß ein neuer Kurs berechnet werden. Pro Nachgefragter Aktie steigt der Wert um 0,0125 €. Nun soll also
ein neuer Gleichgewichtspreis errechnet werden.
Ungefähr so:
10.000 € / ( 30 € + X * 0,0125 €) = X
10.000 € =  X ( 30 € + x * 0,0125€ )
10.000 € = X * 30 € + x² * 0,0125 €
-> 0,0125 X² + 30 X = 10.000
0,0125 X² + 30 X - 10.000 = 0

Verdammt, warum hab ich im Studium nicht besser aufgepasst ?

Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 23.02.05 - 10:34:23
Wenn Märkte in der Praxis nach deinen Prinzipien funktionieren würden, wäre ich Kommunist.  ;D
Dein Spiel unterliegt eine ganz eigene Wirtschaftsverfassung: Happy Donismus.

Falls ich das richtig verstehe:
Wenn Leute 1000 Aktien ordern steigt der Preis.
Wenn Leute 999 Aktien ordern sinkt der Preis.

Warum auch nicht in der Preisfindung bestimmte Lotterieelemente integrieren, die zusätzliche gewisse akrobatische Mathekenntnisse honorieren.  ;D



Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 23.02.05 - 10:49:48
Mein Rechenbeispiel war nur ein falscher Ansatz.

pro nachgefragter Aktie erhöht sich der Preis um 0,0125
Wenn der Startpreis 30 € ist und 1 weitere Aktie nachgefragt wird
ist der neue Kurs 30,0125 €

Ich wollte eigentlich keine Wirtschatsverfassung diskutieren, sondern
nur meine Spielregel rechnerisch umsetzen.

Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Thomas Schulte am 23.02.05 - 11:39:23
Kannst du gar nicht, denn dein Ansatz so wie du ihn schilderst lässt den Kurs immer steigen.
kaufe 30 Aktien. Kurs steigt um 30*0,0125 =  0,375
kaufe 15 Aktien, Kurs steigt um 15*0,0125 = 0,1875
kaufe 100 Aktien, Kurs steigt um 100*0,0125 = 1,25

Gesamt Anstieg des Kurses 1,8125.

Die Rechnung ist doch eigentlich einfach. Neuer Kurs = alterkurs + (Kaufaktien*Konstante)
Was du jetzt berechnen könntest wäre die Aktienkaufkurve ausgehend von einem fiktiven Startpreis a und einer definierten Einsatzsumme b. bis du mit der Einsatzsumme keine Aktien mehr kaufen kannst.
Das wäre eine do while Schleife mit Abbruch wenn b>Kurswert(aktie)

kurswert = 30
b = 1000
CourseKonstant = 0.0125
do while b>kurswert
buyaktien = fix(b/kurswert) ' halbe Aktien kann man nicht kaufen
aktienwert = buyaktien*kurswert
Gesamtaktien =  gesamtaktien + buyaktien
Gesamtaktienwert = Gesamtaktienwert + aktienwert
durchschnittskurswert = gesamtaktienwert/gesamtaktien
print "sie haben  " & Cstr(buyaktien) & "zum kurs von " & cstr(kurswert) & " gekauft!"
print "der Durchschnittskurswert Ihrer " cstr(Gesamtaktien) & " Aktien beträgt aktuell " & cstr(durchschnittskurswert )
kurswert = kurswert + (buyaktien*coursekonstant)
print "neuer Kurs ist " & cstr(kurswert)
loop

Wenn du das ausführst kannst du übrigens eine relativ lange Laufzeit des Agents einkalkulieren, denn das ist eigentlich eine Wurzelfunktion F(x) = 1/x².

Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 23.02.05 - 12:56:12
Der Weg soll folgendes nachzeichnen

10.000 €

Preis    Aktienmenge           Preis bei nachgefragter Aktienmenge
30 €      333,33                     34,16
34,16    292,68                     33,65
33,65    297,68                     33,71
33,71    296,61                     33,70
33,70   296,68


Also bekomme ich bei einem Kurs von 33,70 € einen
gleichgewichtspreis und einen Nachfragemenge von 296 Stück.



Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Thomas Schulte am 23.02.05 - 17:49:38
Sag doch gleich das du Microökonomie betreiben und den Gleichgewichtspreis
http://www.google.de/search?q=Gleichgewichtspreis+berechnen&hl=de&lr=lang_de&c2coff=1&start=0&sa=N berechnen willst
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 23.02.05 - 18:06:08
Microökonomie funktioniert immer auf der Basis von irgendwelchen theoretischen Annahmen über die Beschaffenheit des Marktes (vollständige Konkurrenz, Polypol, Oligopol, Monopol). Hab aber auch sehr viel vergessen.
Ich verstehe Dons Marktmodell nicht. Aber mit mir redet er nicht.
Ich würde die Menge der gehandelten Aktien immer genau proportional zur Menge der Mitspieler ansteigen lassen.
Jeder bekommt bei Spielstart eine klar definierte Menge an Aktien geschenkt. So bleibt
Code
menge_Aktien / menge_Mitspieler 
immer konstant.
Die Aktien kommen so immer genau nur dann aus einem Angebots/Nachfragegleichgewicht zu gegebenen Preis in ein Ungleichgewicht, wenn ein externes Ereignis auftritt. (z.b. in einem Bundesligabörsenspiel: Dortmund verkauft alle Spieler ausser Rossitzki. HäHä  ;D).
Die Menge der Aktien mit der Menge der Mitspieler nicht proportional ansteigen zu lassen trifft alle gleich. Wenn proportional weniger verteilt werden, sind die Aktien die alle besitzen knapper (wertvoller) -> Deflation. Wenn proportional mehr verteilt werden, sind die Aktien, die alle besitzen weniger knapp (wertloser) -> Inflation.
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 23.02.05 - 18:21:01
@Axel: Wieso kommst Du auf die Idee, ich redete nicht mit Dir ?

Ich habe in meinem Spiel eben andere Annahmen getroffen und diese orientieren sich an der Spielbarkeit und nicht zwingend an der Realität. Die mikroökonomischen Modelle die einen Gleichgewichtspreis berechnen klammern ja auch die Bereiche aus, die zu komplex wären.

Ich würde hier gerne Hilfestellung haben für mein mathematisches Problem. [ Wenn Du die Spielregeln diskutieren willst, dann musst Du mitspielen ( und die Regeln dort akzeptieren. ) ] Deswegen bin ich
auf Deine Postings nicht näher eingegangen.

@ThomasSchulte:

Ich habe bereits in einem meiner Postings erwähnt, dass ich einen Gleichgewichtspreis suche. Die mikroökonoschen Grundmodelle gehen aber davon aus, dass das Angebot ebenfalls vom Preis abhängig ist. Diese Annahme habe ich der Einfachheit halber gestrichen. Deswegen passen die Lösungsansätze aus der VWL nicht.

Ciao
Don Pasquale








Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 23.02.05 - 18:34:45
Die mikroökonoschen Grundmodelle gehen aber davon aus, dass das Angebot ebenfalls vom Preis abhängig ist.
... und von den Preisen von Konkurrenzprodukten und nur unter dem Marktmodell der "Vollständigen Konkurrenz".
Bei "Vollständiger Konkurrenz" kann ein Anbieter niemals den Markt beherrschen. Das heisst, er hat immer mit einer großen Menge an Konkurrenzanbietern um die Gunst der Konsumenten zu konkurrieren. 
In Oligopolen (wenige Anbieter) und Monopolen (1 Anbieter) kann das Angebot auch durch andere Faktoren als den Preis beeinflusst werden (z.B. Konkurrenten in den Ruin treiben, Monopolist bleiben). Dafür gibt es auch Modelle. Heisst "Markt und Preistheorie" und ist sowas wie Mikroökonomie Advanced. Die klassische Mikroökonomie ging von vollständiger Konkurrenz aus.
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 23.02.05 - 18:41:54
[ Wenn Du die Spielregeln diskutieren willst, dann musst Du mitspielen ( und die Regeln dort akzeptieren. )
Danke für die Einladung. Aber:
Nachher fange ich noch an die Wied Nebbling, Markt und Preistheorie und die anderen Teile zu entstauben und dann wird jeden Feierabend über die Spielregeln diskutiert. Das hälst du nicht aus.  ;D

Axel
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 24.02.05 - 07:54:11
Da könntest Du durchaus recht haben. Meine VWL Vorlesungen sind leider schon zehn Jahre her und da habe ich nicht mehr viel drauf.

Im Unterschied zu Dir ist mein Java-Börsenspiel aber bereits realisiert und seit dieser Saison im Einsatz. :-)

Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: dh-paule am 24.02.05 - 08:28:19
was ich nicht verstehe ist das sich der Preis beim ordern der Aktien verändert. Nach der Order kann er gerne steigen, aber beim ordern... das ist doch absolut realitätsfern.

Wenn ich jetzt grad auf den Börstenticker schaue und die Aktie der Firma "knallpeng" kostet 10€ und ich weiss das ich grad 1000€ übrig habe, dann kaufe ich 100Stück. Basta! Nach diesem Kauf kannst Du gerne, weil ja Nachfrage bestand 100 x 0,0125€ aufschlagen und die Aktie kostet dann 11,25€ ....

Ach Shit... das geht ja auch nicht, denn wenn ich jetzt die hundert Aktien zu 11,25€ verkaufe mache ich ja automatisch 125€ Gewinn und die Aktie steht beim Ausgangskurs...

Machs doch noch einfacher... kauf Dir ein fertiges Börsenspiel ;)
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: eknori am 24.02.05 - 08:32:34
Zitat
mache ich ja automatisch 125€ Gewinn

Denk an die Spekulationssteuer ...
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 24.02.05 - 08:57:18
was ich nicht verstehe ist das sich der Preis beim ordern der Aktien verändert. Nach der Order kann er gerne steigen, aber beim ordern... das ist doch absolut realitätsfern.

Weißt Du wie in der Börse der Kurs zustande kommt ?
Ich nehme das <<realitätsfern>> mal wertneutral und
geh drüber hinweg.

Wenn ich jetzt grad auf den Börstenticker schaue und die Aktie der Firma "knallpeng" kostet 10€ und ich weiss das ich grad 1000€ übrig habe, dann kaufe ich 100Stück. Basta! Nach diesem Kauf kannst Du gerne, weil ja Nachfrage bestand 100 x 0,0125€ aufschlagen und die Aktie kostet dann 11,25€ ....

Ach Shit... das geht ja auch nicht, denn wenn ich jetzt die hundert Aktien zu 11,25€ verkaufe mache ich ja automatisch 125€ Gewinn und die Aktie steht beim Ausgangskurs...

Hey, Du bist sehr schnell drauf gekommen, manche meiner Mitspieler haben da etwas länger für gebraucht.

Du siehst, nicht trivial das Ganze.

Zitat
Machs doch noch einfacher... kauf Dir ein fertiges Börsenspiel ;)

Nenne mir Eines

Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 24.02.05 - 09:16:39
Im Unterschied zu Dir ist mein Java-Börsenspiel aber bereits realisiert und seit dieser Saison im Einsatz. :-)
Dafür wird mein Börsenspiel auf JBoss laufen  8)
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 24.02.05 - 09:52:11
Du kannst mir ja noch nicht mal erklären was JBOSS macht, so dass _ICH_ es verstehe !  ;D

Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Gandhi am 24.02.05 - 10:45:30
Mir persönlich fehlt in Deinem Modell der Angebotsteil.

Dein Kurs orientiert sich ausschließlich an der Nachfrage, nicht aber am Angebot.
In der Realität steigt der Aktienkurs, wenn die Nachfrage größer als das Angebot ist.
Ist das Angebot größer sinkt der Preis.
Ach ja. Noch was hast Du vergessen: Die Liquidität des Marktes. Solange nur der Wunsch eines Kaufs vorhanden ist aber nicht die notwendigen Geldmittel passiert ja nun mal gar nichts. Darum hat sich die Deutsche Börse auch die Erhöhung der Liquidität der Märkte auf die  Fahnen geschrieben....

Ich würde so vorgehen:
Im Grunde muss jede Aktie mit einem Mindestverkaufspreis versehen werden.
Jeder Kaufwunsch mit einem Maximalpreis.
Alle Kaufwünsche,  die über dem niedrigsten verfügbaren Mindestverkaufspreis liegen werden realisiert.
Der Kurs ergibt sich dann aus dem Arithmetischen Mittel aller am Tag getätigten Handel (Kassa Kurs).
Das ist dann weniger eine Frage des Algorithmus als der Datenstruktur. Du könntest 3 2-dimensionale Arrays (Name der Aktie , Kauf/Verkaufspreis)  erstellen: Eines für Aktien eines für Kaufwünsche und eines für durchgeführte Aufträge. Dann müsstest Du nur die Dinger gegeneinander absuchen, in das Aurtragsarray schreiben und daraus dann wiederum für jede Sorte Aktie das Arithmetische Mittel bilden.

Ob sich dann der Kurs nach oben oder unten bewegt hängt dann essentiell mit den geäußerten Wunschkursen der Teilnehmer ab - die  sich in ihren Wünschen ja an den Unternehmensnachrichten orientieren sollten.

Insgesamt sollte dieses Modell der Realität aber recht nahe kommen.
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 24.02.05 - 11:25:01
Ich würde so vorgehen:
Im Grunde muss jede Aktie mit einem Mindestverkaufspreis versehen werden.
Jeder Kaufwunsch mit einem Maximalpreis.
Alle Kaufwünsche,  die über dem niedrigsten verfügbaren Mindestverkaufspreis liegen werden realisiert.
Der Kurs ergibt sich dann aus dem Arithmetischen Mittel aller am Tag getätigten Handel (Kassa Kurs).
Soweit ich mich an meine BWL Vorlesung erinnere ist das recht nah am echten Börsenmodell, ausser dass der Kurs mit dem höchsten Handelsvolumen zum
aktuellen Kurs wird.

Die Idee speichere ich mal im Hinterkopf, dass gefällt mir.




Mir persönlich fehlt in Deinem Modell der Angebotsteil.

Nun, die Spieler beginnen halt mit einer gewissen Summe Geld 1 Mio
und 100 Aktien pro Sorte. Anfangs steigen eben die Kurse bis das Ganze geld verpulvert ist. Danach können die Kurse auch wieder sinken, wenn nämlich von einer Sorte mehr Aktien verkauft als gekauft werden. Dass passiert nach der 3 Runde häufiger.

In meinem Spiel ist ein Börsentag eine Runde. In der Realität hat ein Börsentag ja viele Kursbestimmungsmomente. Hier muss mein Spiel abstriche machen.




Zitat
Ach ja. Noch was hast Du vergessen: Die Liquidität des Marktes. Solange nur der Wunsch eines Kaufs vorhanden ist aber nicht die notwendigen Geldmittel passiert ja nun mal gar nichts.

Was ist bei Dir der Markt ? Die Mitspieler oder die Bank ?
Das sind eben meine Prämissen, es können unbegrenzt Aktien gekauft werden
und auch wieder unbegrenzt verkauft werden. Da die Spieler nur über begrente Geldmittel verfügen sind hier keine Auswüchse möglich.

Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Gandhi am 24.02.05 - 15:29:34
Ja, das mit der Liquidität stimmt. Wenn Du eine bestimmte Geldmenge vorgegeben hast und außerdem nur einen Handelsplatz betreibst ist das wurscht. Es sei denn, es scheint für Teilnehmer lukrativer kein Geld zu investieren sondern unterm Kopfkissen zu horten (sog. Deutschland modell). Dann wird dem Markt liquidität entzogen und steuert auf eine Deflation zu? Ist ja aber aufgrund des Modells eher unwahrscheinlich.

Und der Markt: Das ist die Summe aller Marktteilnehmer, also Aktienkäufer und Verkäufer, die wiederum alles mögliche sein können.

Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 24.02.05 - 15:46:20
Ich fand das jetzt recht interessant, obwohl ich es nicht ganz kapiere.
Mein Spiel ist viel einfacher.
Es gibt Offers mit Menge und Preis
Es gibt Orders mit Menge und Preis.

Sobald Offer.Preis <= Order.Preis tauschen die 2 Mitspieler zu denen Offer und Order gehören Geld und Aktien. (Offer.User bekommt Geld, Order.User bekommt Aktien).

Man muß da nur aufpassen, dass diese Transaktion nun ja eben eine Transaktion ist (nach diesem ACID Prinzip: Atomistisch, Complete, Irreversible (?), Durable) und nicht plötzlich z.B. die selben Aktien an 2 verschiedene User verkauft wird. 
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Gandhi am 24.02.05 - 16:26:43
Ganz ehrlich sehe ich nicht, worin sich Dein Modell wesentlich unterscheidet. 8)
Was allerdings, wenn Du 10 anbietest aber nur 5 gekauft werden wollen? Darum sehe ich es so, dass im Grunde jede Aktie einzeln behandelt werden muss.

Interessant wird das ganze natürlich dann wenn noch Leerverkäufe, Optionen etc. gehandelt werden.

Und am allerinteressantesten wird es, wenn man das Verhalten der einzelnen Spieler an diesem "Idealen" Modell analysiert und die beste Strategie  für diese Bedingungen enträtselt. Das ist dann wirklich ganz großes Tennis.

Btw: Was hast Du gegen die Borussia Mannschaft, die Ihren Namen verpfändet hat?
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 25.02.05 - 10:47:13
Also ich will noch mal wiederholen:

Ich habe da ein Börsenspiel. Je nachdem wie man dieses Wort betont,
kann man das >Börsen< oder auch das Wort >Spiel>  stärker betonen. Ich betone wahrscheinich stärker den Teil SPIEL.
Dabei orientiere ich mich an folgenden Gesichtspunkten, in genau dieser Reihenfolge:
 - Was kann ich programmiertechnisch in JAVA umsetzen.
 - Was bietet Spielspaß ( also was bietet z.B mehr Möglichkeiten
für taktische Rafinesse)
 - Wie realisätsnah ist das Ganze.

Deswegen habe ich auch als Aktiensorten Bundeslugavereine gewählt. Der Kurs bleibt weiterhin von der Nachfrage bestimmt,
aber wenn ein Team Punkte holt gibt es Dividende.
Deswegen - und das macht das Spiel für mich besser als die vielen die ich bislang im Netz gespielt habe. Ist es auch interessant Aktien von Absteigern zu halten. Wenn die nämlich mal gewinnen, dann ist die Rendite ungleich höher. Wer Bayern Aktien hält, bekommt hat häufiger und sicherer Rendite.

Wer sich für die Regeln oder sogar das mitspielen interessiert: PM genügt.

Ciao
Don Pasquale


 
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 25.02.05 - 12:00:55
Ganz ehrlich sehe ich nicht, worin sich Dein Modell wesentlich unterscheidet. 8)
Was allerdings, wenn Du 10 anbietest aber nur 5 gekauft werden wollen? Darum sehe ich es so, dass im Grunde jede Aktie einzeln behandelt werden muss.
Nö. Das Property Anzahl des Offer-Objekt werden von 10 auf 5 verringert. Die Rest-Offer bleibt im System stehen. Mit Offer.anzahl = 5;

Interessant wird das ganze natürlich dann wenn noch Leerverkäufe, Optionen etc. gehandelt werden.
Nächste Version.

Und am allerinteressantesten wird es, wenn man das Verhalten der einzelnen Spieler an diesem "Idealen" Modell analysiert und die beste Strategie  für diese Bedingungen enträtselt. Das ist dann wirklich ganz großes Tennis.
Übernächstes Release.

Btw: Was hast Du gegen die Borussia Mannschaft, die Ihren Namen verpfändet hat?
Machen auf volkstümlich, sind aber sehr, sehr berechnend und feierten sich beständig selber ab.
Ausserdem ist mein Cousin, der das Privileg hatte mit mir als 6-jährige gemeinsam in der alten Müngerdorfer Arena gloreiche 4-0 Siege der einzig waren Borussia (Mönchengladbach) mitzuerleben, auf die umgeschwenkt. 
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Gandhi am 25.02.05 - 16:35:29
Wie sähe denn das Datenmodell für das Offer- Modell aus? wo wird die Zuordnung der Aktien zu den Besitzern gemacht? Und wäre das performancetechnisch unmöglich jede Aktie einzeln zu verwalten?

Und wie man den BVB mögen kann ist mir auch ein Rätsel. Aufgrund der warmen Trikotfarben? Aufgrund der sympatischen Spieler, wie Möller, Rosicky et altri? Aufgrund des dezenten Auftritts nach außen? Aufgrund des zurückhaltenden Finanzgebahrens, das Uli H. wie einen knickerigen Oberschwaben dastehen ließ? Jemand, der von so was Fan ist, der solches gutheißen kann, dem ist auch ein Abstieg der eigenen Mannschaft in die Oberliga zuzumuten (so, und jetzt gehe ich doch mal in Deckung)
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 25.02.05 - 17:06:58
Wie sähe denn das Datenmodell für das Offer- Modell aus?
verstehe ich nicht.
wo wird die Zuordnung der Aktien zu den Besitzern gemacht?
ungefähr so (in Pseudocode, als hibernate/xdoclet user ist eh vieles egal):
Code
table StocksUsers 
id (long): (primary key) not null autogenerated
idUser (long) : (foreign key) not null
idStockDescr (int) : (foreign key) not null 
amount (int) 

unique constraint auf idUser + idStockDescr (Kombination beider ist UNIQUE). 

table StockDescr
id (int) : (primary key) not null autogenerated 
name (String) : unique
price (java.math.BigDecimal) :  

table User
id (long) : (primary key) not null autogenerated
name (String) : unique
pwd (String)
ipAdress (String)
email (String) : unique

table Offers
id (long) : (primary key) not null autogenerated
idStockDecr (int) : (foreign key) 
idUser (long) : (foreign key)
price (java.math.BigDecimal) 
amount (int)  
zur Verdeutlichung Assoziationen in POJOs (plain old java objects)
Code
class User {
long id; 
etc.
java.util.Set stocksUsers;
java.util.Set offers; 
}

class StockUser {
long id;
int amount;
StockDescr stockDescr;
User user;
}

class StockDescr {
int id;
String name;
java.math.BigDecimal price;
 // benötigt keine referenz auf StockUser
}

class Offer {
StockDescr stockDescr;
User user; 
int amount; 
java.math.BigDecimal price; 
}
Und wäre das performancetechnisch unmöglich jede Aktie einzeln zu verwalten?
bin mir ziemlich sicher das dies keinen Sinn macht. Schon von der reinen Businesslogik her.

In der Datenbank hat jeder User immer zu allen StockDescr ein StockUser.
Geht also auch, das StockUser.amount 0 ist.

StockUsers hat jeweils n zu 1 zu User und zu StockDescr
User hat 1 zu n zu StockUsers und zu Offer
Offer hat jeweils n zu 1 zu User und StockDescr.
Die 1 zu n von StockDescr werden im Klassenmodell nicht berücksichtigt. 
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Gandhi am 25.02.05 - 17:30:30
OK, das habe ich dann soweit noch verstanden.

Wodurch löst man in Java dann einen Handelsvorgang aus? gibt es einen Trigger in den Tabellen oder ist ein anderer Weg ratsam?
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 25.02.05 - 18:11:31
Ich will das User-initialisiert machen.
D.h. sobald eine Order reingestellt wird, wird geschaut, ob es Offers zu einem niedrigeren/gleich großen Preis gibt, wenn ja, gibt es einen Tausch Geld gegen Aktien.
Muß man natürlich aufpassen bei gleichzeitig eintreffenden Orders, da diese mutlithreaded in das System gehen und ich mir bei einigen Punkten bei konkurrierenden Zugriff auf RDBMS nicht so ganz sicher bin. Der Applikationsserver managed die Threads, aber meine Klassen werden von mehreren Threads gleichzeitig angesprochen.
Ich hab momentan die Theorie, dass als einziges SQL Standard RDBMS Locking Mechanismus (Repeatable Read und so) Serialized hilft. Das ist aber zu schlecht für die Performance, da das heftigste --> 1 ganze Tabelle ist nur für eine (User-) Transaktion gleichzeitig zugänglich.
Es gibt da aber noch so "RDBMS Zugriffs Pattern" (Name von mir) wie Pessimistic und Optimistic Locking. Ich glaub das Pessimistic Locking mir hier helfen wird. Das wird auch direkt von Hibernate unterstützt. In meinem DB Schema muss deshalb noch eine version (long) Spalte rein.
Dies ist der komplexeste Teil der gesamten Anwendung.
Clustering Mechanismen und Versionskontrollsysteme haben mit genau den selben Kräften zu kämpfen.
Ansonsten kann man zur Not auch zeitgesteuerte Klassen einbauen, die jede Minute den Markt räumen (d.h. Angebote und Nachfragen die sich treffen umsetzen). Dafür gibt es in JBoss eigene Mechanismen (geh ich von aus) oder ich benutze das Quartz Projekt (haben wir schon oft in der Firma benutzt).
Triggers ist ja mehr ein RDBMS Mechanismus als Java.

Gruß Axel
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 28.02.05 - 08:10:33
He Ihr Beiden, das ist mein Fred !

Für mich sieht das allerdings ziemlich nach Zufall aus:

Spieler A bietet für 100 Aktien je 35 €
Spieler B bietet für 100 Aktien je 34 €

Spieler C will für 100 Aktien je 34 €

Warum bekommt dann Spieler B den Zuschlag ?


Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 28.02.05 - 08:13:19
So, ich will dann mal meine Lösung posten :

public static void main(String[] args) {
 double startkurs = 30.0;
 double faktor = 0.0125;
 double kapital = 10000.0;
 double menge = 0;
 double kurs_neu = 30 , kurs_alt = 30;
 double zwischenstand;
 double diff = 1.1;
  kurs_alt = startkurs;
  kurs_neu = 30.0;
  int i = 0;
   while ( diff > 0.00000001 ){
   menge = kapital / kurs_alt;
   kurs_alt = kurs_neu;
   kurs_neu = menge * faktor + startkurs;
   menge = kapital / kurs_neu ;
   diff = Math.abs(kurs_neu - kurs_alt);
   kurs_alt = kurs_neu;
     }
    System.out.print("\nKapital: " + kapital);
    System.out.print("\nKurs   : " + kurs_neu);
    System.out.print("\nMenge  : " + menge);
}

Das kann man noch in eine Funktion packen,
aber dann sollte, ausgehend von einem
beliebigen Startkurs und einer beliebigen Nachfragesumme
positiv oder negativ der neue Kurs, bzw. die
Kaufmenge bestimmbar sein.



Ciao
Don Pasquale
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Marinero Atlántico am 28.02.05 - 08:44:10
Das kann man noch in eine Funktion packen,
::)
Nicht hauen und nicht persönlich gemeint, aber das ist
a) überhaupt nicht objektorientiert
b) ist die Rechnung mit double ungenau (besser: java.math.BigDecimal)
c) ist System.out.println extrem uncool. Besser: Log4j oder jdk1.4 logging.
d) Vermischung von Testdaten mit Anwendungsalgorythmen (dafür gibt es junit Tests)

Axel
Titel: Re: klitzekleinesmathematisches algorithmisches Problem
Beitrag von: Don Pasquale am 28.02.05 - 10:02:24
Das kann man noch in eine Funktion packen,
::)
Nicht hauen und nicht persönlich gemeint, aber das ist
a) überhaupt nicht objektorientiert
b) ist die Rechnung mit double ungenau (besser: java.math.BigDecimal)
c) ist System.out.println extrem uncool. Besser: Log4j oder jdk1.4 logging.
d) Vermischung von Testdaten mit Anwendungsalgorythmen (dafür gibt es junit Tests)

Axel

Einwand a) Objekt ? orientiert ? Reicht nicht auch eine Funktion ?
Einwand b) korrekt, aber mir würden sogar nur die ersten beiden stellen reichen. Genauigkeit um Ihrer selbst willen ist käse.
Einwand c) ich benötige überhaupt keine ausgabe, sondern
lediglich einen rückgabewert
Einwand d) So kann aber jeder hier im Forum meine Lösung mit dreck und dropp nachvollziehen.