|
LinkBack | Ämnesverktyg |
2010-09-23, 21:50 | #76 |
Kul att du tycker att ämnet är intressant!
Det stämmer att jag har tweakat algoritmen som bedömer sannolikhet till vinst och således fastställer minimumodds för att häst skall vara spelvärd allt eftersom jag har genomfört och studerat äldre lopp (back-testat 10 veckor) just med hjälp av data-mining för att hitta spelvärda mönster. Jag är införstådd med att det inte är någon garanti för vinst jag har identifierat, men det känns betryggande med en förväntad ROI på 223% med de utvalda kriterierna. Jag förväntar mig inte att kunna upprättahålla dessa siffror, men är rätt säker på att åtminstone kunna plussa hyggligt i och med att flera av modellerna jag har testat har gett bra avkastning vilket minimerar (ej eliminerar) riskerna med tillfälligheter. Därtill är jag dock medveten om att mängden lopp som är back-testade är väldigt liten, men det beror på att jag inte har tillräckligt med data (ännu). Primärt letar jag outsiders och snittodds är ca 20x. Se gärna min Speldagbok för mer information kring placerade spel och spreadsheet. |
|
2010-09-24, 07:15 | #77 |
Jag visste väl att jag hade en poäng i att det skulle löna sig att specialisera sig på vissa lopptyper. Att jag inte kom på att tipsa dig om det där med längre distanser var lite klantigt, för det vet egentligen alla som följt travet en längre tid. Det är t ex väldigt sällsynt att jag helgarderar ett långlopp eller att jag spelar en vinnare till över 20ggr pengarna där, men det är något som sätter sig i ryggmärgen som man inte reflekterar särskilt mycket över. Det där Lindwall skriver om att stayerlopp med flera volter ska undantas är jag dock inte riktigt med på, för åtminstone ca 95% av stayerloppen startas just på flera volter och då blir det inte många kvar på ett år.
Att voltlopp överlag är mer skrällbenägna är en annan sak jag med stor säkerhet kan bekräfta, då det helt enkelt är mycket större risk att favoriterna felar bort sig samt att störningar och hur bra hästarna kommer iväg allmänt gör att vissa hästar vinner eller tappar 20-30 meter på de andra i starten. För att få ett bättre underlag som verifierar det här än att göra din 10-veckorskörning kan du istället plocka in vinnaroddsen för de olika lopptyperna map distans och startmetod för det senaste året enbart från ATG. Om du kör en sådan kan du gärna kika på hur ofta hästar med startnummer 1 kommer in på plats över kort respektive medeldistans med autostart och vilket snittodds de har, det skulle jag vilja ha siffror på. |
|
2010-09-27, 11:26 | #78 |
Jag hoppas du inte överger tråden, den var så intressant!
Jag håller som sagt (i din speldagbok) på med samma sak. Berätta gärna vad du parsar ut, detta kör jag med: Lopp: Datum, loppnummer (altså för dagen), längd, starttyp (auto, volt), bana (plats), lopptyp (VP, V65, V64, V75, DD), odds, vinnare Hästar: Namn, född, kön, ras, vinster (antal), placeringar (antal etta, tvåa, trea), insprunget (år för år) [allt är år för år, med är även livsstatistik] Kuskar: Namn, född, hemmabana, licens, vinster (antal), placeringar (antal etta, tvåa, trea), insprunget (år för år) [allt är år för år, med är även livsstatistik] Tränare: Namn, född, hemmabana, licens, vinster (antal), placeringar (antal etta, tvåa, trea), insprunget (år för år) [allt är år för år, med är även livsstatistik] Mitt program kan just nu dra hem samtiliga lopp för en dag och parsa ut det viktigaste och stoppa i en databas (MySQL), har dock inte byggt att den hittar dagarna själv i kalendern än, men det kommer snart. Allt skrivet i PHP. Tänkte samla på mig 1000 lopp innan jag börjar köra någon seriös analys. Kommer även bygga in så den hämtar odds från bet365 och expekt (atg har den ju redan). Totalt är det nio tabeller, men kanske kommer fler. Kanske ska notera att den plockar ut id för hästar/kuskar/tränare också, och de används sedan när man kopplar tabellerna. Jag kommer bara ta med dagens "huvudbana" (altså där Vxx körs) och bara travlopp. Senast redigerad av LosKrikon den 2010-09-27 klockan 11:38. |
|
2010-09-27, 15:57 | #79 | |
Citat:
En annan sak man ska tänka på är att även om man "bara" har ett ROI på 110% så är det en grym edge. Enligt siffor jag hört har ett normalt sportbetting pro en edge på 4-5%. Sen ger programmet bara rekomendationer också, inte exakt vad man ska göra, ser en rekomendation ut att vara för bra för att vara sann så behöver man ju såklart inte spela den. Den lägger ju heller inte bettet åt en, även man kan skulle kunna göra dett app som funkar så. Det finns massor av liknande program för fotboll, golf, amerikansk fotboll etc. Det finns ju även travrankningsprogram ute, även om de är gjorda för DD/Vx. Fundera på hur aktiemarknaden skulle fungera utan analysprogram. De är ju så bra att större delen av handeln numer sker automatiskt (altså är de bottar). Det enda som man gör egentligen är att hitta brytpunkten där en häst har högre odds än förväntad vinstchans. Många antar ju att vinstchans = 1/odds, men det stämmer ju inte. Däremot är instatserna fördelade på det sättet (då räknar jag inte med spelbolagets behållning). Eftersom bra hästar överspelas, och där med får ett odds lägre än 1/vinstchans, så betyder det omvända för resterande hästar, att deras odds är högre än 1/vinstchans. Altså så man "bara" hitta hästarna som är underspelade (med en viss marginal) och spela på dem så kommer man vinna i längden på det. Det är hur man hittar dem som är det intressanta, och det programmet gör. Gjorde en enkel illustration i Paint för att visualisera det. |
||
2010-09-27, 17:02 | #80 | |
Citat:
Det jag menade med spelbolagen var väl att om flera konton spelar alla odds som progammet pekar ut kommer de väl limitera ganska fort, antar att de har mönsterigenkänningssystem för sånt. Limitering råkar man ut för ganska lätt ändå, det verkar vara rätt svårt att komma undan nuförtiden om man är framgångsrik. Och nej, jag räknade givetvis inte ATG till dessa spelbolag eftersom de har poolspel. Jag förutsatte att ni avsåg att spela exakt efter vad programmet rekommenderar, annars ser jag inte riktigt poängen med det hela. Hela idén står och faller väl lite med att man är konsekvent på den punkten? |
||
2010-09-27, 17:19 | #81 |
Jo, fast inget program är ju helt perfekt. Man kan nog gå plus även om man tar alla rekomendationer, men kanske får lite mer edge om man gallrar manuellt också.
Vore konstigt om de limiterar en, med tanke på att ingen av oss verkar intresserad av att spela för stora pengar. Jag kommer börja med en instats på 10kr till exempel. |
|
2010-09-27, 20:20 | #82 | |||||
Citat:
Citat:
Citat:
Jag har inte tagit ut någon data för ålder, kön eller ras (ännu). Jag tror man kan hitta på mycket roligt med detta, som t.ex. att undersöka om renodlade stolopp bäddar för mer outsider-vinster, eller som att exkludera/öka minodds på ston i lopp mot hingstar och vallacker. Citat:
Anledningen till att jag inte gjort det är för att jag främst kommer att spela på outsiders och mina spelobjekt har (oftast) inte någon känd kusk. Jag ser det således som en "extra" marginal till minimumoddset genom att inte har med detta, dvs. om jag hade med kuskpåverkan hade förmodligen de favorittippade hästarna fått större chans till vinst enligt mitt program och således höjt minimumoddset på outsiders jag letar efter - jag kan då lika gärna ställa om värdet för när en häst bedöms som spelvärd. "En outsiderspelare underskattar alltså inte kuskens vikt, men ser det hela på ett annat sätt än andra spelare. Mindre kända kuskar kan fungera som omotiverade oddshöjare, vilket självklart skall utnyttjas" för att citera Johan Lindvall. Missförstå mig dock inte - det är bra att samla in denna data och laborera med den så länge man använder det på rätt sätt. Citat:
1. Ladda ner loppdata med startlistor, odds mm. (underlag till backtestning) 2. Ladda ner tävlingsresultat mm. för deltagande hästar (underlag till backtestning) 3. Program för att backtesta och testa olika parametrar 4. Program för att ranka hästar och bedöma sannolikhet till vinst för ett kommande lopp med tillhörande odds mm. (används för att ge spelförslag i speldagboken) Hästid och sammansatt nyckel (datum, loppnummer, bana) används för relationer. Vart hämtar du tävlingshistorik förresten? Jag förmodar att det är via ATG eller travsport.se? Jag har upplevt prestandaproblem (begränsade anslutningar inom ett visst tidsintervall) hos ATG vilket gjorde insamligen av data mer tidskrävande än jag trodde. Har du upplevt samma problem? (Jag kör med CURL-biblioteket) Ser fram emot återkoppling och dina synpunkter! |
||||||
2010-09-27, 20:54 | #83 |
Oja, jag blir snabbt "cappad" på atg också. Dock kan jag ta ett lopp i taget med tillhörande statistik utan problem. Egentligen är det ju inget stort problem eftersom man bara behöver dra hem ett lopp en gång (om man inte vill ha mer data då). Man kan ju spara htmlen annars på disk och parsa om därifrån. Jag sparar dock inga filer på disken (förutom nåra för referens för snabbkoll i koden) utan matar in allt i databasen på en gång. Kontroll görs även om loppet/hästarna osv redan finns och då skippar den det.
Har inte mycket till gui eller nått, utan allt är en stor (typ 210 rader just nu) PHP-fil. När man kör den så dras all info till loppet man specificerat den till hem (så många parametrar som jag gjort hittils). Tänkte göra en enkel sida där man kan klicka på vad man vill göra. Tex dra hem nya lopp, uppdatera befintliga (nya saker man parsar ur som stått som null hittils tex) osv. När jag är klar så kommer jag dock ha ett mer avancerat gui där man kan ranka bäst spår vid 1640 autostart osv. När jag kör enkla stats nu så är det direkt i MySQLs CLI. Kör WAMP själv. Inga extra bibliotek. Hämtar med file_get_contents() och parsar allt med strstr() och substr(). Har även gjort andra projekt på liknande sätt, och det var grymt snabbt att parsa. Bland annat en tvkalender (precis som TV Calendar fast helt rent interace och den har alla serier jag tittar på) som drar info (webscrape) från tvrage.com och stoppar in i en databas. Nu kan man dock köra via XML där men har inte brytt mig bygga om än. Visade koden som arbetsprov på en jobbintervju som systemutvecklare (i just PHP) jag sökte och fick jobbet Senast redigerad av LosKrikon den 2010-09-27 klockan 21:18. |
|
2010-09-27, 21:45 | #84 | ||
Citat:
Citat:
|
|||
2010-09-27, 22:13 | #85 |
Häst/kusk/tränar-statstiken kan man ju lätt hämta i efterhand också, eftersom deras id finns i databasen när man väl fått in loppen (så kör jag allafall).
preg_match är fint, men har alltid undvikit pga prestandan, men med dagens datorer är det nog inga problem. Det sitter väl i sen "förr" dock. Är uppväxt med sunkiga datorer där man försökte pressa ur all prestanda. Även programmerat demos/intros osv på den gamla goda tiden. Älskar fortfarande hårdvarunära programmering i assembler. Även läst datorteknik med inriktning på inbyggda system (MCUer och DSPer). Riktigt intressant. Speciellt på DSPerna var man tvungen att optimera hårt eftersom programmen var beroende av det. Även läst datalogi, matematik och matematisk statistik. Allt har man nytta av till sånt här. Plus att jag spelat och varit intresserad av framförallt systemspel sen mellanstadiet. Fast sen jag sålde jultidningar och en av böckerna var "Spela tippa vinn 5", som jag köpte. Hittade även nummer 2 på en loppis en gång och köpte för en femma, riktigt fynd. Har dock inte kvar någon av dem nu men ska köpa alla begagnade senare tänkte jag. Tänkte först bygga en site lik abcranken men det är så långt mellan vinsterna att man kan få vänta livstider mellan det man får 7 rätt på V75, även med stora system. Då småspelar jag hellre och får lite vinnst i taget. Körde precis samma taktik när jag spelade poker online, satsade på cash games just för lite vinst i taget, istället för att turneringar där det är mycket vinst eller inget typ (vinsten växer exponentiellt med placeringen i turneringen) som gäller. |
|
2010-09-28, 14:22 | #86 |
Blev just klar med parsingen för de tre viktigaste tabellerna (av nio), har även vissa värden färdiga för andra. Databasen ser ut såhär, fast kan ju komma att ändras:
Kod:
lopp (en per lopp) +------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+----------------+ | loppid | int(11) | NO | PRI | NULL | auto_increment | | datum | date | YES | | NULL | | | loppnummer | int(11) | YES | | NULL | | | distans | int(11) | YES | | NULL | | | starttyp | varchar(1) | YES | | NULL | | | bana | varchar(50) | YES | | NULL | | | V65 | tinyint(1) | YES | | NULL | | | V64 | tinyint(1) | YES | | NULL | | | V75 | tinyint(1) | YES | | NULL | | | DD | tinyint(1) | YES | | NULL | | +------------+-------------+------+-----+---------+----------------+ lopp_stats (en per startnummer i varje lopp) +-------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------+------+-----+---------+-------+ | loppid | int(11) | YES | MUL | NULL | | | startnummer | int(11) | YES | | NULL | | | hastid | int(11) | YES | | NULL | | | kuskid | int(11) | YES | | NULL | | | tranarid | int(11) | YES | | NULL | | | distans | int(11) | YES | | NULL | | | odds | int(11) | YES | | NULL | | +-------------+---------+------+-----+---------+-------+ hastar (en för varje häst) +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | hastid | int(11) | YES | MUL | NULL | | | namn | varchar(50) | YES | | NULL | | | fodd | date | YES | | NULL | | | kon | varchar(20) | YES | | NULL | | | ras | varchar(20) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ hastar_stats (en för varje år per häst, plus en livs per häst) +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | hastid | int(11) | YES | MUL | NULL | | | ar | int(11) | YES | | NULL | | | starter | int(11) | YES | | NULL | | | etta | int(11) | YES | | NULL | | | tvaa | int(11) | YES | | NULL | | | trea | int(11) | YES | | NULL | | | intjanat | int(11) | YES | | NULL | | +----------+---------+------+-----+---------+-------+ kuskar (en för varje kusk) +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | kuskid | int(11) | YES | MUL | NULL | | | namn | varchar(50) | YES | | NULL | | | fodd | int(11) | YES | | NULL | | | hemmabana | varchar(50) | YES | | NULL | | | licens | varchar(10) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ kuskar_stats (en för varje år per kusk) +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | kuskid | int(11) | YES | MUL | NULL | | | ar | int(11) | YES | | NULL | | | starter | int(11) | YES | | NULL | | | etta | int(11) | YES | | NULL | | | tvaa | int(11) | YES | | NULL | | | trea | int(11) | YES | | NULL | | | intjanat | int(11) | YES | | NULL | | +----------+---------+------+-----+---------+-------+ tranare (en för varje tränare) +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | tranarid | int(11) | YES | MUL | NULL | | | namn | varchar(50) | YES | | NULL | | | fodd | int(11) | YES | | NULL | | | hemmabana | varchar(50) | YES | | NULL | | | licens | varchar(10) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ tranare_stats (en för varje år per tränare) +----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+-------+ | tranarid | int(11) | YES | MUL | NULL | | | ar | int(11) | YES | | NULL | | | starter | int(11) | YES | | NULL | | | etta | int(11) | YES | | NULL | | | tvaa | int(11) | YES | | NULL | | | trea | int(11) | YES | | NULL | | | intjanat | int(11) | YES | | NULL | | +----------+---------+------+-----+---------+-------+ vinnare (en för varje lopp) +------------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------+------+-----+---------+-------+ | loppid | int(11) | YES | MUL | NULL | | | hastid | int(11) | YES | MUL | NULL | | | vinnarodds | float | YES | | NULL | | +------------+---------+------+-----+---------+-------+ |
|
2010-09-28, 16:52 | #87 |
tino: testa en grej! Kör analys (eller hur du nu sätter parametrar) enbart på den första halvan av dina minade data och se var du får för stats på tex alla Vxx 1640 lopp. Kör sedan testet mot andra halvan (som du inte använder analysresultat från) och kolla vad du får där. Altså ett litet minitest (även datamängden är för liten) hurvida statistik från gamla lopp även gäller framtida (viket man kan anta att den andra halvan är eftersom den inte är analyserad).
|
|
2010-09-28, 22:25 | #88 | |
Citat:
|
||
2010-09-28, 23:16 | #89 |
Tanken var att dela loppen i två delar, där du bara gör analys på den ena och sedan testar de optimala settingsen på den delen även på den andra delen och ser hur mycket tex ROI skiljer sig. Den andra delen kan då ses som "framtida" eftersom vi inte tagit hänsyn till dess statistik när vi gjorde analysen. Kontrollgrupp typ, istället för att göra analys på allt du har nu och sen kolla hur det blir med nya lopp, så får den andra halvan av loppen bli "nya" eftersom vi inte vet resultatet där (eller vet och vet, vi räknar inte med det allafall). Jag kommer köra så åtminstonne.
|
|
2010-09-30, 13:19 | #90 |
Kommit riktigt långt nu med mitt app. Det drar automatiskt hem alla lopp i kalendern, kan parsa loppen och stoppa i databasen. Det drar även hem statistiken för hästar/kuskar/tränare och parsar det viktigaste (lite kvar med det). Ska använda lopphemdragaren att göra samma sak med vinnarna också, behöver bara modifieras lite. Allt cachas dessutom nu. Så fort den ska ta hem något från nätet (utom kalendern då) så kontrolleras om den ligger i cachen först annars drar den hem från nätet och sparar i cachen. Konfade även om php och apache och allt är bra mycket snabbare nu. Verkar även ha hittat bra tider att vänta mellan man drar hem filer, har inte fått något fel senaste timmen. Har delat upp koden i flera filer också och man kan köra de olika delarna via en meny.
|
|
|