9.
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
9.
J Lugo doubled to left. 3-4
C Crisp sacrificed to third, J Lugo to third. 3-4
D Pedroia hit sacrifice fly to left, J Lugo scored. 4-4
D Ortiz singled to left. 4-4
J Ellsbury ran for D Ortiz. 4-4
M Ramirez homered to left, J Ellsbury scored. 6-4
- lammpa-1
- Jäsen
- Viestit: 2186
- Liittynyt: 20.01.2007, 11:16
-
Tuotto: +96.12 yks.
Palautus%: 111.49%
Panosten ka: 2.56 yks.
Vetoja: 327
- Pisteitä: 873
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
En näe tarvetta selitellä asiaa sen enempää, homman pointin joko ymmärtää tai ei. Ja vaikka ei ymmärtäisi niin eipä tässä mitään menetä.En ihan meinannut pysyä kärryillä
Mikään ei tosin estä että tulevaisuudessa tänne tulisi myös alkuperäisestä ideasta poikkeavaa sisältöä mutta katsotaan nyt........
Minikommentit
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Toki myös Tampa huormaili eilen kolmen juoksun johdon kolmen juoksun tappioksi ysissä.
Voittotodennäköisyydet tarjosi: http://winexp.walkoffbalk.com/expectancy/search
Minikommentit
-
power
- Jäsen
- Viestit: 2536
- Liittynyt: 10.12.2003, 15:41
-
Tuotto: -73.99 yks.
Palautus%: 97.85%
Panosten ka: 1.70 yks.
Vetoja: 2030
- Pisteitä: 215
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Japani murskasi Korea, en mitenkään osannut odottaa noin juoksurikasta peliä mutta Korea aloittaja veti huonosti ja pallo pomppi todella selvästi Japanin suuntaan. Lohkovoitto näyttää käytänössä varmalta tämän jäljeen.
Mutta asiaa eli illan Hollanti DR peliin, Hollanti sai vähän turhan hyvän alun peliin kun parin DR:n errorin jälkeen ekassa vuorossa napsui 4 juoksua. DR:n lyöntipeli näytti todella heikolta, lineupissa on kovia nimimiehiä vaikka kuinka mutta Ponson ja muut keskikertaiset Hollannin syöttäjät pystyivät helposti pitämään DR:n kurissa. Jos tästä jotain hyvää pitää hakea niin helpottaa sentään Puerto Ricon lohkovoittoa ja sen vedon osumista.
Loppuun vielä valitusta välittäjien hitaudesta, vaikka seuraavan ottelun joukkueet ovat tiedossa niin saattaa kestää melkein puoli päivää että bookit saavat kertoimet julkaistua. Nyt kun pelejä on vielä usealla aikavyöhykeella niin menee vähän hankalaksi kun pitäisi olla koneella 24/7 että saisi vedot järkevästi sisään. Toisaalta Pinnaclella ainakin limitit kohdallaan näihin seuraavan päivän otteluihin.
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Taisin olla vähän turhankin oikeassa, Aussit murskasivat Meksikon 17-7. Yhdessä pelissä syntyi yli 4 kertaa enemmän juoksuja kuin kaikissa aussien wbc peleissä edellisessä turnauksessa. En ole peliä vielä nähnyt joten hankala sanoa mitä tuolla tapahtui, Meksikolla oli kuitenkin paperilla melko vahva syöttöporukka.kai voisi sanoa että aika arpapeliä nämä kansainväliset beissiturnaukset.
Panama ei pysty tekemään juoksuja sitten millään eikä syöttöpeli näytä riittävän parempia joukkueita vastaan joten D lohko on toistaiseksi Puerto Ricon hallinnassa, DR voi toki nousta vielä voittaa viimeisessä pelissä.
Aasian-lohkon viimeinen peli tänään 11:30, toivottavasti Japani hoitaa lohkovoiton kotiin (ja lohkovoitto vedon), otteluvetoja ei tuohon löytynyt.
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Minikommentit
-
power
- Jäsen
- Viestit: 2536
- Liittynyt: 10.12.2003, 15:41
-
Tuotto: -73.99 yks.
Palautus%: 97.85%
Panosten ka: 1.70 yks.
Vetoja: 2030
- Pisteitä: 215
Tälle kaudelle tuli hankittua Baseball Prospectus-kirja vähän auttamaan rankingeissa, mutta ei ole jaksanut pläräillä vielä läpi. Luultavasti suurimmaksi osaksi jatkan kuitenkin tilastojen pohjalta pelaamista. Pitää odotella pari kierrosta niin saa päivitetyt joukkeiden kokoonpanot. Sen jälkeen pöytälaatikkovetoja ja viime kaudesta viisastuneena vihjeitä vasta kun Malli näyttää plussaa.
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Ainakin ensimmäinen viikko on minun osaltani hiljaista, olen noin viikon normaaleista aikatauluista jäljessä joten en saa julkaistua mitään arvioita kuin aikaisintaan tulevana viikonloppuna.Tänään alkaa. Tuleeko Markukselta vihjeitä aikaisempien kausien tapaan?
Muutenkin tulossa kiireinen kevät muiden projektien osalta eikä motivaatio ole enää kovin korkealla edellisen kausien "menestyksen" jälkeen joten päivittäin jaksan tuskin arvioita tehdä ja puskea taululle. Ehkä 2-3 kertaa viikossa.
Sinulla meni sentään oikein päin, itse olin vielä voitolla viimekaudesta ennen syyskuuta mutta sitten tulikin isolla hutia koko kuukausi. Täydellistä seurantaan en ole vielä uskaltanut päivittää mutta pakkaselle meni.tselläni meni viime kauden vihjeet penkin alle, mutta sain omat vedot plussan puolelle loppukaudella uusitun Mallin avulla, vihjeitä en enää silloin tietenkään kehdannut jaella.
Minikommentit
-
power
- Jäsen
- Viestit: 2536
- Liittynyt: 10.12.2003, 15:41
-
Tuotto: -73.99 yks.
Palautus%: 97.85%
Panosten ka: 1.70 yks.
Vetoja: 2030
- Pisteitä: 215
Re: 9.
Tampa Bay@Cleveland 10-11
4th R Garko homered to left center, M DeRosa scored. 10-2
8th M LaPorta grounded into double play, third to second to first, S Choo scored, R Garko out at second, M DeRosa to third. 10-3
8th B Francisco reached on infield single to third, M DeRosa scored. 10-4
9th S Choo grounded into fielder's choice to shortstop, G Sizemore scored on throwing error by shortstop R Brignac, J Peralta safe at third on throwing error by shortstop R Brignac. 10-5
9th R Garko homered to left, J Peralta and S Choo scored. 10-8
9th G Sizemore walked, A Cabrera scored, B Francisco to third, J Carroll to second. 10-9
9th V Martinez singled to center, B Francisco and J Carroll scored, G Sizemore to second. 10-11
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Nykyinen mlb-koneeni on ollut melkein samassa muodossa 3-4 vuotta ja luulen että tämä kausi jää nykyisellä koneella viimeiseksi. Uuden järjestelmän suunnittelu on hyvin alustavassa vaiheessa ja on aivan varmaa että 2010 kauden alkuun mitään ei ole vielä valmista mutta ehkä joskus tuokin systeemi näkee päivänvalon. Jos innostun niin saatan blogittaa enemmänkin uuden järjestelmän suunnittelusta ja toteutuksesta, ihan pienistä teknisistä yksityiskohdista tilastollisiin tutkimuksiin. Ottaen huomioon vanhat tulokset niin kovin suurien tai tuottavien salaisuuksien paljastamista ei tarvitse pelätä.
Jos jotain hyvää pitää kaudesta löytää niin 100% konearvioilla vedetyt omat spessut ovat sentään menneet ihan hyvin, niihin pariin firmaan jotka vielä tarjoavat jonkinlaisia järkeviä erikoisvetoja ei tosin tunnu puolta kautta pitempään saavan vedää ilman että kohteet häviävät listoilta tai tilille napsuu tiukat limitit.
Liigasta voisi yleisesti sanoa että huiman tasaista on taas ollut, jokaisessa divarissa on vähintään 3 joukkuetta joilla on vielä yli 10% mahdollisuudet pudotuspeleihin. Siirtomarkkinoista on tulossa kiintoisat kun 19/30 joukkuetta yrittää parantaa asemiaan.
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Illan kysymysmerkit:C Park relieved P Martinez. 1 0
C Blake singled to left. 1 0
J Pierre ran for C Blake. 1 0
R Belliard reached on bunt single to first, J Pierre to second. 1 0
J Pierre ran for C Blake. 1 0
R Belliard reached on bunt single to first, J Pierre to second. 1 0
J Pierre ran for C Blake. 1 0
R Belliard reached on bunt single to first, J Pierre to second. 1 0
R Martin grounded into fielder's choice to third, R Belliard out at second, J Pierre to third, J Pierre scored on throwing error by second baseman C Utley. 1 1
J Thome hit for H Kuo. 1 1
S Eyre relieved C Park. 1 1
J Thome singled to right, R Martin to third. 1 1
J Castro ran for J Thome. 1 1
R Madson relieved S Eyre. 1 1
R Furcal walked, J Castro to second. 1 1
M Kemp struck out swinging. 1 1
J Happ relieved R Madson. 1 1
A Ethier walked, R Martin scored, J Castro to third, R Furcal to second. 1 2
C Durbin relieved J Happ. 1 2
M Ramirez popped out to third. 1 2
1. Miksi keskenkuntoinen ja yleisesti huono Park tuodaan syöttämään tuossa tilanteessa?
2. Miksi ei Utleyn kasetti taaskaan kestä paineessa vaan virheitä tulee liukuhihnalta
3. Koska Manuel oppii edes alkeellisen bp:n käytön?
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Nyt kun aikataulut alkaa hieman helpottaa kiireisen loppuvuoden jälkeen niin voisi yrittää aktivoida tätäkin projektia. Alustavana tarkoituksena on siis lähteä kehittämään uutta mlb-konetta enemmän ja vähemmän tyhjästä ja samalla blogittaa projektin etenemisestä sekä teknisestä että vedonlyönnin näkökulmasta. Tänne kirjoittelun tarkoituksena on lähinnä asettaa edes jonkinlaista aikataulupainetta edetä projektissa sekä motivaatiota, asia sinänsä tuskin kiinnostaa kovinkaan montaa foorumin lukijaa.MarkusM kirjoitti:Nykyinen mlb-koneeni on ollut melkein samassa muodossa 3-4 vuotta ja luulen että tämä kausi jää nykyisellä koneella viimeiseksi. Uuden järjestelmän suunnittelu on hyvin alustavassa vaiheessa ja on aivan varmaa että 2010 kauden alkuun mitään ei ole vielä valmista mutta ehkä joskus tuokin systeemi näkee päivänvalon. Jos innostun niin saatan blogittaa enemmänkin uuden järjestelmän suunnittelusta ja toteutuksesta, ihan pienistä teknisistä yksityiskohdista tilastollisiin tutkimuksiin. Ottaen huomioon vanhat tulokset niin kovin suurien tai tuottavien salaisuuksien paljastamista ei tarvitse pelätä.
Yritän pitää viestien sisällön edes suunnilleen 50/50 järjestelmän tekniikan ja varsinaisen vedonlyöntiteorian välillä. Välillä saattaa tosin tulla postauksia joissa tekniikka ottaa vallan. Etenemisjärjestys on sellainen että yritän saada melko nopeasti peruslaskennan ja järjestelmän pyörimään johon sitten ajan kanssa lisättäisiin uusia tulkintoja, lisätoimintoja ja tilastokorjauksia.
Jos aloittaisi avaamalla niitä toiminallisia vaatimuksia joita järjestelmällä on:
-Automaattinen päivittäisen data hallinta
Kaikki päivittäin muuttuva data kuten listatut syöttäjät, kertoimet, edellisien pelien tulokset ja tilastot yms. päivittyvät automaattisesti taustalla ilman että käyttäjän tarvitsee syöttää mitään arvoja käsin tai edes käynnistää noutoa.
-Pelin arvioiden laskenta automaattisesti
Pelien arviot päivittyvät automaattisesti taustalla aina kun otteluun vaikuttavat tekijät muuttuvat(Esim syöttäjät vaihto tai edellisen ottelun päättyminen). Automaattisesti tehtyjä arvioita voi tarvittaessa muokata käsin.
-Pelivalinnat ja seuranta päivitys
Pelivalinnat, pelivalintojen julkaisu, seuranta ja seurannan julkaisu päivittyvät jatkuvasti ilman käyttäjän toimia. Myös erikoistilanteet kuten syöttäjät vaihdokset, pelien peruuntuminen yms. huomioidaan
-Useiden eri laskentamallien tuki
Yksittäisen ottelun tai vetotyypin arviot voi tarvittaessa laskea usealla eri menetelmällä ja verrata näiden tuloksia. Jos uusia arviomenetelmiä toteutetaan kesken kauden niin myös historiassa olevat pelit on oltava mahdollista laskea uudestaan vertailuun.
-Tuki live-vedonlyönnin arvioiden laskemiselle
-Tuki erikoisvetojen laskemiselle
-Järjestelmän helppo laajennettavuus
Tuki esimerkiksi WebService, dll yms laajennuksille jotta kesken kauden voidaan nopeasti kehittää vaihtoehtoisia laskentamalleja, uusia erikoisvetoja yms. ilman että itse ohjelmaa tarvitsee lähteä muokkaamaan.
-Loukkaantumisten automaattinen käsittely
-Treidien ja minor-league siirtojen huomioiminen
Osa näistä on tietenkin turhan korkealentoisia eikä sellaisenaan välttämättä toteudu tai ainakaan kovin nopeasti.
Tekninen alusta tulee olemaan seuraavan, tietokantana SQL-Server 2008 Express(Kunhan tietomassat kasvavat niin tästä siirrytään sujuvasti vastaavan tuotteen kaupallisiin versioihin). Itse sovellus tulee pääasiassa olemaan selainpohjainen asp.net 3.5:lla toteuttena. Osa taustapalveluista kuten ajastettuna tapahtuvat tilastoajot yms. toteutetaan .Net 3.0 Windows serviceinä tai sovelluspalvelimella pyörivinä desktop softina.
Kertoimien hallinta ja haku tapahtuu ulkoisessa järjestelmässä jonka rajapinnan läpi haetaan kerroindataa mlb-laskennan käyttöön.
Katsotaan miten projekti lähtee liikkeelle ja kuinka ehdin/jaksan postailla tänne mutta eiköhän ainakin jotain tapahdu seuraavan parin viikon sisällä. Seuraavassa viestissä voisi avata ainakin laskentamallin perusideaa ja kantarakennetta.
Minikommentit
-
power
- Jäsen
- Viestit: 2536
- Liittynyt: 10.12.2003, 15:41
-
Tuotto: -73.99 yks.
Palautus%: 97.85%
Panosten ka: 1.70 yks.
Vetoja: 2030
- Pisteitä: 215
Re: 9.
Tarkoittaako tyhjästä aloittaminen siis täysin eri menetelmiin perustuvaa laskentaa? Sinullahan on odotusarvot olleet aina melko realistisia markkinaan nähden, joten tuskin siellä mitään kovin pahasti on pielessä ollut. Lisäksi omat kokemukseni samanlaisesta projektista olivat se, että mitä monimutkaisemmiksi kehitin systeemejäni pbp-datan ja kaikkien eri osatekijöiden osalta, sitä huonompia olivat tulokset. Tosin MLB:ssä on minulla aina tulokset tulleet hirveissä putkissa, joten ehkä minulle osui vain se huono putki juuri testausvaiheissa.MarkusM kirjoitti: Nyt kun aikataulut alkaa hieman helpottaa kiireisen loppuvuoden jälkeen niin voisi yrittää aktivoida tätäkin projektia. Alustavana tarkoituksena on siis lähteä kehittämään uutta mlb-konetta enemmän ja vähemmän tyhjästä ja samalla blogittaa projektin etenemisestä sekä teknisestä että vedonlyönnin näkökulmasta.
Tämä olisikin kiva. Olen odotellut milloin saisit viime kauden seurannan päivitettyä. Muistaakseni loppukausi meni hyvin, joten plussalle taisi päätyä? Se ei ole mikään huono lähtökohta uudellekaan systeemille, joten ihan tyhjästä ei ehkä kannata aloittaa.-Pelivalinnat ja seuranta päivitys
Pelivalinnat, pelivalintojen julkaisu, seuranta ja seurannan julkaisu päivittyvät jatkuvasti ilman käyttäjän toimia.
Oletko ajatellut lähestyä laskentaa eri tulosvaihtoehtojen todennäköisyyksien kautta. Silloin saa kerralla suurimman osan vetomuodoista laskettua samalla menetelmällä ja riippuvuussuhteetkin eri vetomuotojen suhteen tulee automaattisesti otettua huomioon. Itse olen saanut simulointimallinnuksella tulosjakaumat ihan nätisti, lähtöarvoissa vaan on hiomista aika paljon.-Useiden eri laskentamallien tuki
Yksittäisen ottelun tai vetotyypin arviot voi tarvittaessa laskea usealla eri menetelmällä ja verrata näiden tuloksia. Jos uusia arviomenetelmiä toteutetaan kesken kauden niin myös historiassa olevat pelit on oltava mahdollista laskea uudestaan vertailuun.
Mitenkäs tämä onnistuu? Itselläni loukkaantumiset+kokoonpanojen tarkastelu vie selvästi eniten aikaa, ja kun matseja on 15 päivässä niin meinaa tuskastua. Varsinkaan kun ei siitä tunnu mitään hyötyä olevan, paitsi ehkä pullpenin kohdalla. Lopulliset kokoonpanoarvauksetkin menee yleensä silti pieleen ja lähes samaan pääsee, kun käyttää vain edellisen matsin rotaatiota.-Loukkaantumisten automaattinen käsittely
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Menetelmät pysyvät ainakin perusidealtaa samana mutta kun aloitan puhtaalta pöydältä niin tutkin ja tarkistan kaikki laskennan välivaiheet uudestaan ilman että siirrän mitään laskennan osa-alueita vanhasta systeemistä itsestäänselvyytenä.power kirjoitti: Tarkoittaako tyhjästä aloittaminen siis täysin eri menetelmiin perustuvaa laskentaa? Sinullahan on odotusarvot olleet aina melko realistisia markkinaan nähden, joten tuskin siellä mitään kovin pahasti on pielessä ollut. Lisäksi omat kokemukseni samanlaisesta projektista olivat se, että mitä monimutkaisemmiksi kehitin systeemejäni pbp-datan ja kaikkien eri osatekijöiden osalta, sitä huonompia olivat tulokset. Tosin MLB:ssä on minulla aina tulokset tulleet hirveissä putkissa, joten ehkä minulle osui vain se huono putki juuri testausvaiheissa.
On mahdollista että mitä monimutkaisempi ja läpinäkymättömämpi systeemi on niin se tuottaa heikompaa tulosta tai ainakin virheiden analysointi on hankalampaa mutta pidetään ainakin toistaiseksi tavoitteet korkealla eikä lähdetä vielä yksinkertaistamaan hommaa.
Ai niin, tuokin on unohtunut. Täytyy yrittää päivittää tässä lähiaikoina. Seurannan ja vetojen päivitys on ehkä paras esimerkki siitä minkälaisen manuaalisen työn haluan poistaa kokonaan, vanhassakin systeemissä seuranta pyöri melkein automaattisesti mutta tuossakin piti säätää syöttäjävaihdoksien, erikoisvetojen, otteluiden peruutusten yms. sälän kanssa niin että seurannan päivitys meni usein jäljessä.Tämä olisikin kiva. Olen odotellut milloin saisit viime kauden seurannan päivitettyä. Muistaakseni loppukausi meni hyvin, joten plussalle taisi päätyä? Se ei ole mikään huono lähtökohta uudellekaan systeemille, joten ihan tyhjästä ei ehkä kannata aloittaa.
Loukaantumiset tulee olemaan iso haaste enkä ole täysin varma miten tuo onnistuu, todennäköisesti tuo tulee menemään sillä tasolla että dl-keikat systeemi pystyy haistelemaan itse ja poimimaan todennäköisen korvaajan mutta yksittäisten päivien loukkaantumiset tai epäsäännölliset lepuutukset joutuu päivittämään käsin.Mitenkäs tämä onnistuu? Itselläni loukkaantumiset+kokoonpanojen tarkastelu vie selvästi eniten aikaa, ja kun matseja on 15 päivässä niin meinaa tuskastua. Varsinkaan kun ei siitä tunnu mitään hyötyä olevan, paitsi ehkä pullpenin kohdalla. Lopulliset kokoonpanoarvauksetkin menee yleensä silti pieleen ja lähes samaan pääsee, kun käyttää vain edellisen matsin rotaatiota.
Mutta tästä tulevan pelin lineupin arvailusta paljon lisää kunhan pääsen sen tarkempaa suunnitteluun asti.
Jos et hae simuloinnilla itse pelitilanteiden mallinnusta vaan vuoroparien juoksumäärien simulointia esim koko pelin juoksuodotusarvojen kautta niin aikalailla samoilla periaateilla olen suunnitellut tekeväni lähtöarvioiden muuttamisen prosenteiksi.Oletko ajatellut lähestyä laskentaa eri tulosvaihtoehtojen todennäköisyyksien kautta. Silloin saa kerralla suurimman osan vetomuodoista laskettua samalla menetelmällä ja riippuvuussuhteetkin eri vetomuotojen suhteen tulee automaattisesti otettua huomioon. Itse olen saanut simulointimallinnuksella tulosjakaumat ihan nätisti, lähtöarvoissa vaan on hiomista aika paljon.
Jos taas puhut varsinaisen pelinkulun simuloinnista niin ainakaan toistaiseksi tuota ei ole tarkoitus toteuttaa, joskus olen tuollaista pyöritellyt ja ehkä se tulee vaihtoehtoisena laskentatapana myöhemmin mutta ei näin alkuvaiheessa.
Tästä voisikin hyvin jatkaa kirjoittamalla pikaisen kuvauksen perusarvioiden suunnitellusta laskentalogiikasta. Otteluarvioissa muodostetaan ensin juoksuodotusarvot joukkueille joiden perusteella laskentaan ml, tasoitus, u/o yms. arviot.
Juoksuodotusarvojen laskenta tulisi yksinkertaistettuna menemään seuraavan mallin tyylisesti:
1. Muodostetaan joukkueelle lineup projektio jossa arvioituna kuinka monta PA:ta kukakin pelaaja saa ja missä tilanteissa. Lineup projektion muodostuksessa käytetään kauden alussa arvioitua joukkueen oletuslineuppia, edellisten pelien peluutuksia, mahdollista l/r matchuppia, pelaajien lepuutuksia, personal catcheraita ja loukkaantumisia. Avaan tätä vaihetta tarkemmin myöhemissä viesteissä.
2. Arvioidun lineupin perusteella muodostetaan lyöntipelaajien perusteella arvio kuinka monta juoksua joukkue tekisi liigan keskivertoa syöttäjää vastaan neutraalilla stadionilla. Lyöntipelaajien "voimalukuina" käytetään jonkin tarjoalla olevan player projection lähteen tietoja(Esim: BP, Zips, Marcel jne..) joita korjataan kauden sisällä pelaajien todellisten suoritusten mukaan. Projektioista käytetään nimenomaan stadion neutraaleja lukuja.
3. Aloittavan syöttäjän "voimaluvut" tulevat pääasiassa projectioista(Esim: BP, Zips, Marcel jne..) jota korjataan levon, mahdollisen loukkaantumisen ja kauden edeltävien pelien tilastojen mukaan. Syöttäjälle arvioidaan myös syötettyjen vuorojen määrä jossa huomioidaan vastustajat lyöntiteho, stadioni, syöttäjät historia ja sää.
4. Bullpenin tapauksessa tehdään lineup projektion kaltainen pelaajien arvioitu käyttö mutta yksinkertaistettuna. Riippuen siitä kuinka pitkälle aloittavan syöttäjän oletetaan syöttävän, onko kyseessä tasainen/epätasainen peli, koti/vieras saadaan kaikille bp:n syöttäjille arviot.
5. Yhdistetään edellisistä vaiheista saadut luvut joukkueet juoksuodotusarvoksi neutraalilla stadionilla. Yksinkertainen esimerkkikaava:
JuoksuOA = (LyöntipeliJuoksuOA / LiiganKeskiarvoJuoksumäärä) * (AloittajanJuoksuOA * (AloittajanArvioidutSyöttövuorot / 9)) + (BullpenJuoksuOA * (BullpeninArvioidutSyöttövuorot / 9)) / LiiganKeskiarvoJuoksumäärä)
6. Huomioidaan stadion korjaus. Tämän vaiheen oikeus toteuttamisessa on vielä paljon tutkittavaa, aikaisemmin olen huomioinut stadionilta päivä/ilta pelien erot, edun l/r lyöjille sekä tuuli ja lämpötilaolot mutta kuten muutkin monimutkaisemmat asiat niin park factorien käsittely täytyy tutkia ja toteuttaa täysin uudestaan tähän systeemiin jotta vanhojen järjestelmien virheistä ei jäisi turhaa painolastia.
Yksinkertaisuuden vuoksi en mieti vielä tässä vaiheessa fieldingin huomiointia sekä kaikkia muita pikku hienouksia, katsotaan myöhemmin miten nuo saadaan mukaan laskentaan.
Siihen miten juoksuodotusarvoista saadaan % arviot eri pelimuotoihin palataan myöhemmin koska kyseessä ei ole mitään erityisen simppeli juttu.
Edellisen viestin jälkeen päädyin lisäämään systeemin vaatimuksiin tuen käyttäjähallinalle. Eli tarvittaessa systeemiin voi luoda useita eri käyttäjätilejä eri oikeuksin. Subjektiivinen data kuten arviot, vedot yms. linkittyy käyttäjän alle joten usea käyttäjä voi tehdä toisista riippumattomia arviota.
Kantarakenne on vielä pahasti vaiheessa joten sitä en pääse julkaisemaan vielä ~viikkoon.
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Tässä linkki nykyiseen tietokantakaavioon. Tuosta ei suoraan näe mitkä kentät linkittyvät taulujen välillä mutta idea varmasti selvää kenttien nimien kautta. Jostain syystä kuvakaappaus Management Studiosta ei onnistunut virheettömästi joten kuvassa on pari "roskaa".Kantarakenne on vielä pahasti vaiheessa joten sitä en pääse julkaisemaan vielä ~viikkoon.
Karkealla tasolla taulut voisi jakaa toteutuneiden tilastojen tallentamiseen(mlb_games*), rankkien ja projektioiden käsittelyyn (projections, depth), käyttäjähallintaan ja eri laskentamallien tulosten erotteluun(users, sources, estimations, picks, lineup projections) sekä yleisiin perustietoihin (teams, players, notes jne.)
Tämä kantarakenne pitäisi ideatasolla täyttää kaikki toiminalliset vaatimukset. Jätän vielä auki aletaanko tietokantaan säilöä tilastoja yksittäisten pelitilanteiden tarkkuudella mutta kannassa on valmiudet myös tuolle. Käytännön ongelmana tuossa on tietojen parserointi, kauden sisällä tehtävissä tilastopäivityksissä pelitilanteiden tiedosto pitäisi päätellä "G Norton singled to center, G Blanco to third." tyylisistä teksteistä eikä dataa saisi valmiina koneellisessa muodossa. Kauden jälkeen pelitilanteet olisi luettavissa helposti retrosheetin event-tiedostoista.
Koska kannassa ei ole kovinkaan montaa yhteenvetotaulua niin saattaa olla osa tilastohauista game_plays ja sen alataulujen kautta menee liian hitaaksi. Tarvittaessa lisätään tuohon jokunen yhteenvetotaulu tai näkymä jonne kootaan otteluiden, pelaajien tai joukkueiden tilatoja nopeammin käsiteltävässä muodossa.
Seuraavaksi listalla on ensimmäisen boxscore lukupalikan tekeminen jotta kantaan saataisiin sen verran dataa edelliskausilta että sen päällä pystyisi testailemaan laskennan eri osa-alueita.
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Pitkästä aikaa hieman tilanneraporttia, nyt alkaa toteutuneen ottelun tilastojen lukupalikka olla tarpeeksi hyvässä kunnossa jotta sen läpi voi alkaa ajamaan enemmäkin pelejä ja dataa. Lähdin liikkeelle mlb.comin datan luvusta koska täältä kautta saa edelliset pari kautta tarkassa muodossa ja tulevilla kausilla ottelun data heti pelin päättymisen jälkeen. Retrosheetin eventfiluista vastaava lukupalikka tehdään myöhemmin jotta kantaan saadaan myös vanhempia kausia mutta toistaiseksi projekti voi edetä myös ilman noita.Seuraavaksi listalla on ensimmäisen boxscore lukupalikan tekeminen jotta kantaan saataisiin sen verran dataa edelliskausilta että sen päällä pystyisi testailemaan laskennan eri osa-alueita.
MLBcomin luku tulkitsee oikein 99% pelitilanteista mukaan lukien syöttö ja pbp tiedot, joillekin erikoistilanteille ei ole vielä tehty tukea mutta noilta osin täydennetään lukua myöhemmin.
Käytännön tasolla tilastojen luku menee GameDataUpdateI interfacen läpi josta periytyvät luokat toteuttavat abstraktit metodit get_games ja read_full_game. GameDataUpdateI tarjoaa myös eri lukutoteutuksille yleisiä apumetodeita kuten checkadd_player pelaajien tarkistamiseksi/lisäämiseksi, add_msg viestien logittamiseen jne.
GameDataUpdateI sisäinen toteutus huolehtii siitä että tilastojen lukeminen onnistuu sekä uusille peleille(vanhojen kausien massaluku) että vanhoille peleille tulosten selviämisen jälkeen(luku kauden sisällä). Lukuluokat eivät itse vastaa tietojen tallentamisesta kantaan vaan se tapahtuu keskitetysti GameDataUpdateI:n sisällä, lukuluokat osaavat myös kertoa profiilin(mlb_boxscore_profile) avulla mitä tietovat ne pelistä kertovat joten samaan peliin voidaan hakea dataa useasta eri paikasta täydentäen toisiaan.
Kaikkia tietoja käsitellään ja säilötään LINQ to SQL kautta luoduissa entiteettiluokissa, koska kantarakenne on jo käytänössä valmis niin tällä tavalla sai todella helposti ja nopeasti tietoluokat oikeilla propertyilla käyttöön. Parissa tapauksessa sisäänluvussa on tarvetta laajentaa väliaikaisesti linq entiteettejä ja tämä tehtiin partial classilla, esim:
Koodi: Valitse kaikki
partical class mlb_games
{
public string BoxUrl { get; set; }
}
Tässä vielä pari snipsettiä koodista jos edes yhtä lukijaa kiinnostaisi tarkemmin myös tekninen puoli.
Koodi: Valitse kaikki
MLBComC.cs:
private void read_players()
{
string strUrl = mGame.BoxUrl + "players.xml";
XmlTextReader reader = new XmlTextReader(strUrl);
reader.WhitespaceHandling = WhitespaceHandling.None;
long iActiveTeam = 0;
while (reader.Read())
{
if ((reader.Name == "team") && (reader.NodeType == XmlNodeType.Element))
{
iActiveTeam = (reader.GetAttribute("type") == "away" ? mGame.Team1 : mGame.Team2);
}
if ((reader.Name == "player") && (reader.NodeType == XmlNodeType.Element))
{
mlb_player player = checkadd_player(reader.GetAttribute("id"),"MLBCOM",reader.GetAttribute("first"),reader.GetAttribute("last"),"MLBCOM",reader.GetAttribute("position"),(reader.GetAttribute("position") == "P" ? reader.GetAttribute("rl") : ""),(reader.GetAttribute("position") != "P" ? reader.GetAttribute("rl") : ""));
player.BoxName = reader.GetAttribute("boxname");
player.Team = iActiveTeam;
mPlayers.Add(player);
}
if ((reader.Name == "coach") && reader.NodeType == XmlNodeType.Element)
{
mlb_manager manager = checkadd_manager(reader.GetAttribute("id"), "MLBCOM", reader.GetAttribute("first"), reader.GetAttribute("last"));
mlb_game_manager game_manager = new mlb_game_manager
{
Manager = manager.Id,
Team = iActiveTeam,
Role = reader.GetAttribute("position")
};
mGame.mlb_game_managers.Add(game_manager);
}
}
reader.Close();
}
Koodi: Valitse kaikki
MLBComC.cs:
private void parse_atbat(XmlTextReader reader, int iInning)
{
mlb_game_play_field last_field = get_last_field(miPitchingTeam);
string strEvent = reader.GetAttribute("event");
mActivePlay = new mlb_game_play
{
Inning = Convert.ToByte(iInning),
Team = miBattingTeam,
Outs = Convert.ToByte(reader.GetAttribute("o")),
Balls = Convert.ToByte(reader.GetAttribute("b")),
Strikes = Convert.ToByte(reader.GetAttribute("s")),
Score1 = miActiveScore1,
Score2 = miActiveScore2,
PAPlayer = find_player(reader.GetAttribute("batter"),"MLBCOM",0).Id,
PAPlayerHand = reader.GetAttribute("stand"),
PPlayer = find_player(reader.GetAttribute("pitcher"), "MLBCOM",0).Id,
Field = last_field.Id,
Runner1 = miRunner1,
Runner2 = miRunner2,
Runner3 = miRunner3,
EventLine = reader.GetAttribute("des"),
Leadoff = (mbLeadoff ? 1 : 0),
Pinchhit = 0, //nan
Pos = "", //nan
LPos = 0, //nan
EventType = strEvent,
BatterEvent = 1,
Ab = 1,
Hit = ((strEvent == "Single" || strEvent == "Double" || strEvent == "Triple" || strEvent == "Homerun") ? 1 : 0),
SacHit = (strEvent == "Sac Bunt" || strEvent == "Sac Fly" ? 1 : 0),
SacFly = (strEvent == "Sac Fly" ? 1 : 0),
OutsMade = 0, //runner post
DpTp = 0, //runner post
Rbi = 0, //runner post
WildPitch = 0,
PassedBall = 0,
FieldedByPos = "",
BBType = 0, //nan
Bunt = (strEvent == "Sac Bunt" ? 1 : 0),
HitLoc = "", //nan
HitLocX = 0, //nan
HitLocY = 0, //nan
EventNum = Convert.ToInt32(reader.GetAttribute("num")),
BoxSource = "MLBCOM"
};
if (reader.GetAttribute("home_team_runs") != null)
{
miActiveScore1 += Convert.ToInt32(reader.GetAttribute("away_team_runs"));
miActiveScore2 += Convert.ToInt32(reader.GetAttribute("home_team_runs"));
}
mGame.mlb_game_plays.Add(mActivePlay);
while (reader.Read())
{
if (reader.Name == "atbat" && reader.NodeType == XmlNodeType.EndElement)
{
//postupdate:
///pitch sequence
mActivePlay.PitchSequense = "";
foreach (mlb_game_play_pitch pitch in mActivePlay.mlb_game_play_pitches)
{
mActivePlay.PitchSequense += pitch.PitchResult;
}
mbLeadoff = false;
return;
}
bool bRunnerFromHPTo = false;
if (reader.Name == "runner" && reader.NodeType == XmlNodeType.Element)
{
mlb_game_play_runner_movement runner = new mlb_game_play_runner_movement
{
Player = find_player(reader.GetAttribute("id"),"MLBCOM",0).Id,
Type = "Adv",
FromBase = (reader.GetAttribute("start") == "" ? 0 : Convert.ToInt32(reader.GetAttribute("start").Replace("B",""))),
ToBase = (reader.GetAttribute("end") == "" ? 4 : Convert.ToInt32(reader.GetAttribute("end").Replace("B", "")))
};
if (reader.GetAttribute("end") == "" && reader.GetAttribute("score") == null)
{
runner.ToBase = 5;
mActivePlay.OutsMade++;
}
if (reader.GetAttribute("start") == "")
{
bRunnerFromHPTo = true;
}
if (reader.GetAttribute("event") != null && reader.GetAttribute("event").IndexOf("Triple Play") > -1)
{
mActivePlay.DpTp = 2;
}
if (reader.GetAttribute("event") != null && reader.GetAttribute("event").IndexOf(" DP") > -1)
{
mActivePlay.DpTp = 1;
}
mActivePlay.mlb_game_play_runner_movements.Add(runner);
if (reader.GetAttribute("rbi") != null && reader.GetAttribute("rbi") == "T")
{
mActivePlay.Rbi++;
}
switch (runner.ToBase)
{
case 1:
miRunner1 = runner.Player;
break;
case 2:
miRunner2 = runner.Player;
break;
case 3:
miRunner3 = runner.Player;
break;
}
}
if (bRunnerFromHPTo)
{
mActivePlay.OutsMade++;
}
if (reader.Name == "pitch" && reader.NodeType == XmlNodeType.Element)
{
parse_pitch(reader, iInning);
}
}
}
Koodi: Valitse kaikki
MLBComC.cs:
private void parse_inning_action(XmlTextReader reader, int iInning)
{
bool bLastEventUpdatedField = (mstrLastEvent == "Defensive Switch" || mstrLastEvent == "Defensive Sub" || mstrLastEvent == "Pitching Substitution" || mstrLastEvent.IndexOf("Relief with") > -1);
if (reader.GetAttribute("event") == "Defensive Switch")
{
Match mt = Regex.Match(reader.GetAttribute("des"), "(.*?) remains in the game as the (designated hitter|pitcher|first baseman|second baseman|third baseman|catcher|shortstop|left fielder|right fielder|centre fielder).");
if (mt.Success)
{
update_field(miPitchingTeam, mt.Groups[1].Captures[0].ToString(),transform_pos(mt.Groups[2].Captures[0].ToString()),!bLastEventUpdatedField);
}
mt = Regex.Match(reader.GetAttribute("des"), "Defensive switch from (designated hitter|pitcher|first base|second base|third base|catcher|shortstop|left field|right field|centre field) to (designated hitter|pitcher|first base|second base|third base|catcher|shortstop|left field|right field|centre field) for (.*)\\.");
if (mt.Success)
{
update_field(miPitchingTeam, mt.Groups[3].Captures[0].ToString(),transform_pos( mt.Groups[2].Captures[0].ToString()), !bLastEventUpdatedField);
}
}
if (reader.GetAttribute("event") == "Defensive Sub")
{
Match mt = Regex.Match(reader.GetAttribute("des"), "Defensive Substitution: (.*?) replaces (designated hitter|pitcher|first baseman|second baseman|third baseman|catcher|shortstop|left fielder|right fielder|centre fielder) (.*?), batting ([0-9]{1})[A-Za-z]{2}, playing (pitcher|first base|second base|third base|catcher|shortstop|left field|right field|centre field).");
if (mt.Success)
{
update_field(miPitchingTeam, mt.Groups[1].Captures[0].ToString().Trim(),transform_pos(mt.Groups[5].Captures[0].ToString()), !bLastEventUpdatedField);
}
}
if (reader.GetAttribute("event") == "Pitching Substitution" || reader.GetAttribute("event").IndexOf("Relief with") > -1)
{
Match mt = Regex.Match(reader.GetAttribute("des"), "Pitcher Change: (.*?) replaces (.*?)(, batting ([0-9]{1})[A-Za-z]{2})?.");
if (mt.Success)
{
//update field
update_field(miPitchingTeam, mt.Groups[1].Captures[0].ToString(), "P", !bLastEventUpdatedField);
}
}
mstrLastEvent = reader.GetAttribute("event");
}
Tämä ei sisällä kerroinmuutoksia, ottelun ulkopuolisia eräajoja(esim sarjataulukon päivitykset), siirtojen tai loukkaantumisten käsittelyä vaan nämä toteutetaan jokainen omana servicenaan.
Tässä lähipäivinä pistän lukukoodin vetämään 2008 ja 2009 kaudet läpi jotta saan tietokantaan kunnolla dataa, toivottavasti mlb:n serverin ei ala lyömään ip-banneja urakan aikana . Kunhan tuo data on turvallisesti hallussa niin seuraavaksi alan tutkimaa ottelun lineupin ennustamista. Täytyy kehittää jonkinlainen simppeli korrelaatio kaava jotta pystyn vertailemaan eri projektitapojen tuottamia lineuppeja toteutuneisiin.
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Tuossa koottu tulevan kauden otteluohjelma, osassa peleistä kellonaikana 00:00:00 koska oikeaa otteluaikaa ei ollut vielä selvillä.
Varsinainen projekti on edennyt hitaasti edellisen päivityksen jälkeen, viimekauden pelit tilastoineen on ajettu kantaan ja eri lineup projektioiden vertailuun koodasin vertailupalikan mutta varsinaisia eri projektiomalleja en ole ehtinyt yhtään miettiä.
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Powerin kehoituksesta postataan tämä tänne, 1B tuomarilla riittää sentään kanttia myöntää oma virheensä http://nbcsports.msnbc.com/id/37479309/ ... s-baseball ja ehkä kaikella tällä on se hyvä lopputulos että saadaan viimenkin video review beissiin. http://www.fangraphs.com/blogs/index.ph ... -our-gain/
Kaikille betsareille on varmaan tuttua että just ne vedon kusemisen aiheuttavat tilanteet ovat tuomarivirheitä :O
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Minikommentit
-
brickster
- Jäsen
- Viestit: 554
- Liittynyt: 24.04.2003, 12:54
- Pisteitä: 25
Re: 9. MLB12
98%MarkusM kirjoitti: Alussa tavoitteena ei ole kovinkaan monimutkainen systeemi sillä laskennan pitäisi pyöriä kauden alkuun mennessä. Kuten viimeksikin niin täytyy taas muistuttaa että en usko systeemin olevan voitollinen tällaisenaan alussa, realistinen odotettu palautus voisi olla jossain 98 % lähettyvillä.
No ei ole kovin korkealla ainakaan tavoitteet, satunnaisesti pelivalinnan arpomalla pääsee tuohon palautukseen.
+135,602
tasapanoksella pelatut
5-0 +3,402
Minikommentit
-
MarkusM
- Jäsen
- Viestit: 2187
- Liittynyt: 23.03.2003, 16:54
-
Tuotto: -109.66 yks.
Palautus%: 95.74%
Panosten ka: 14.63 yks.
Vetoja: 176
- Pisteitä: 76
- Paikkakunta: Tampere
Re: 9.
Jos järkevällä otoksella palautus mene tuohon niin se osoittaa ainakin että laskennassa ei ole mitään usein toistuvaa isompaa virhettä (Tai sitten että markkinoilla on sama virhe).98%
No ei ole kovin korkealla ainakaan tavoitteet, satunnaisesti pelivalinnan arpomalla pääsee tuohon palautukseen.
Kyllähän tavoitteena voisi olla vaikka 103% mutta en usko että tämän tyyppisellä perusarvioilla pääsee tuohon koska muuten jokainen tilastojen pyörittelijä tekisi voittoa. Sen jälkeen kun laskentaa aletaan laajentamaan niin toivottavasti noustaan satasen yläpuolelle.
Minikommentit