Visualizzazione post con etichetta Varie. Mostra tutti i post
Visualizzazione post con etichetta Varie. Mostra tutti i post

lunedì 23 agosto 2010

HATTRICK - Scavando in HO!







In questo articolo cerco di fare un po' di luce su come HO! pervenga alle sue stime delle valutazioni di campo. Tutti i files che vedete elencati qui li avete anche nel vostro pc se avete HO! installato, li trovate nella cartella "prediction" di HO!

* defaults.xml, readme.txt, si trovano nella cartelletta "prediction", tralascio epvWeights.mlp, un elenco di pesi per reti neurali a quanto ho capito, predictionTypes.conf che è un semplice elenco delle sottocartelle con i tipi di prediction e skeleton.dat che mi pare che non faccia altro che settare i valori di default per tutto quanto

* nelle sottocartelle ci sono playerstrength.dat, che definisce la forza del giocatore, tactics.dat, che stima l'efficacia delle tattiche e le prediction per le diverse zone di campo: midfield.dat, centraldefense.dat, sidedefense.dat, centralattack.dat, sideattack.dat


Procedo con ordine cominciando dal primo gruppo





1 defaults.xml

Non fa altro che definire dei non meglio specificati "FormulaFactors" che mi lasciano un po' perplesso.



Perplesso perché - come vedete - non si spiegano le assenze di valori nei due rettangoli che ho evidenziato.




2 readme.txt

Questo file spiega un po' tutta la logica, vediamo.


"The rating parameters are split into several files one for each prediction type (midfield, central attack, side defense...). They contain at least
  • one [general] section and
  • one [SKILLNAME] or [SKILLNAME_SIDENAME] section.
  • SKILLNAME is one of {goalkeeping, defending, playmaking, passing, scoring, winger}.
  • SIDENAME is one of {allsides, thisside, middle, otherside} If the SIDENAME is omitted, we take ALLSIDES as default. The SIDENAME is especially usefully for side attack and side defense. In this context, we have to calculate two different ratings for the left side and the right side. A player on the left side has - of course - a higher rating impact for the left attack/defense side than for the right side If we calculate the right side, THISSIDE means right side and OTHERSIDE means left side."


Quindi nei files delle zone di campo troveremo una sezione "generale" e una coi pesi in relazione alle skill e alla zona di campo.

"The players are classified in the following manner:
  • ALLSIDES:___All Players
  • MIDDLE: ____Keeper, Extra Players, Single CD , Single IM, Single FW (if not TowardsWing)
  • THISSIDE: ___CD, IM, FW on this side, if not the only one on this position (cioé ci sono 2 in mezzo). Wingback and Winger on this side
  • OTHERSIDE: _Like THISSIDE, for the opposite side"

Questo consente di distinguere i diversi apporti dei giocatori, ad esempio, riprendendo dei grafici già postati in un altro articolo: questo giocatore relativamente agli apporti laterali si torverà in posizione "MIDDLE" e dividerà il suo apporto al 50% in entrambi i lati



Quest'altro invece si trova in posizione THISSIDE per la difesa laterale sinistra, a cui dà il 100% del suo apporto, non viene citato invece nella difesa destra (sarebbe il giocatore "OTHERSIDE"), per cui ad essa non dà alcun apporto



L'unico OTHERSIDE che troveremo citato sarà l'attaccante TW, che contribuisce all'attacco laterale opposto con la sola skill attacco, con valori circa il 40% di quelli dell'attacco laterale a cui è adiacente.




Poi

"How will the ratings be calculated?
  1. First, HO! parses the parameter file and searches for all [SKILLNAME] and [SKILLNAME_SIDENAME] sections.
  2. After that, HO! calculates the player strength for all players on the SIDENAME's side, based on the player's skill, form, stamina and xp using the parameters from the file playerstrength.dat.
  3. The PlayerStrength is multiplied with the PlayerWeight from the current section in the parameter file.
  4. For all players, PlayerStrength*PlayerWeight is added up.
  5. If there are general options (see below) in this section, they will be applied now.
We do this for every section and sum all these partial ratings together.
Eventually, the general options from the [general] section are applied."


L'ordine mi sembra piuttosto chiaro:
  1. Si cercano le skill e le posizioni rilevanti
  2. Si calcola la FORZA del giocatore, moltiplicando la skill per i parametri di FORMA, RESISTENZA e ESPERIENZA
  3. La FORZA è moltiplicata per i PESI (coefficienti) relativi a quella zona di campo
  4. Si sommano i prodotti "Forza*Pesi" di ogni giocatore
  5. Si applicano eventuali correzioni

viene poi introdotto il file playerstrength.dat definendo tutta una serie di funzioni

"In this file, the options are ALWAYS processed in the following order:
Option___________________Function

skillSubDeltaForLevelY=x____if (skill = Y AND subskill=0) then skill = skill + x
(This is used for unknown subskills, i.e. the player did not get training yet and the user did not enter a subskill offset manually)


skillDelta=x________________skill = skill + x
staminaDelta=x_____________stamina = stamina + x
formDelta=x_______________...
xpDelta=x ________________ ...

staminaMin=x______________if stamina < stamina =" x" formmin="x" xpmin="x" skillmin="x" staminamax="x_____________"> x then stamina = x
formMax=x________________...
xpMax=x
skillMax=x

staminaMultiplier=x__________stamina = stamina * x
formMultiplier=x____________...
xpMultiplier=x
skillMultiplier=x

staminaPower=x_____________stamina = stamina^x (i.e. stamina raised by x)
formPower=x_______________... (Use 0.5 as x for square root)
xpPower=x
skillPower=x

staminaLog=x_______________stamina = log_x(stamina) (i.e. log of stamina with base x)
formLog=x_________________ ... (Use 10 as x for base-10-log)
xpLog=x
skillLog=x

finalStaminaMultiplier=x______stamina = stamina * x
finalFormMultiplier=x
finalXpMultiplier=x
finalSkillMultiplier=x

finalStaminaDelta=x__________stamina = stamina + x
finalFormDelta=x
finalXpDelta=x
finalSkillDelta=x

Now we can calculate the result using these options:
We start with result=skill

resultMultiStamina=x_________result = result * x * stamina
resultMultiForm=x___________...
resultMultiXp=x

resultAddStamina=x__________result = result + x * stamina
resultAddForm=x
resultAddXp=x"



si passa poi a introdurre i "rating files" specifici per ogni zona del campo, anche qui definendo le possibili funzioni

"General options (useable in every section, including [general] and [SKILL]):
They will be applied in the following order:

Option_________________Function

  • squareMod=x __rating = rating + x*rating*rating ________# dirty hack! Should be 0, if possible
  • cubeMod=x____rating = rating + x*rating*rating*rating __# even dirtier hack! Should be 0, if possible"

Tattiche:
  • tacticAIM=x______if Tactic=AIM then ___rating = rating * tacticAIM
  • tacticAOW=x_____if Tactic=AOW then ___rating = rating * tacticAOW
  • tacticCounter=x ...
  • tacticCreative=x
  • tacticPressing=x

Team Spirit
  • TSPreMulti=x ____rating = rating * (yourTS*TSPreMulti)^TSPower # new exponential calc
  • TSPower=x

Casa/Fuori
  • home=x _________if game is home game then ____rating = rating * home
  • away=x _________same for away
  • awayDerby=x ____same for away derby (since HO! 1.401)

PIC/MOTS
  • pic=x __________if you play PIC then ___________rating = rating * pic
  • mots=x ________same for MOTS
  • normal=x ______same for normal

ALLENATORE
  • trainerOff=x_____ if your trainer is offensive then ___rating = rating * trainerOff
  • trainerDef=x _____same for defensive trainer
  • trainerNeutral=x __same for neutral trainer
Correttori
  • multiplier=x _____rating = rating * x
  • delta=x _________rating = rating + x
  • extraMulti=x _____multiplier for extra players (extraIM, extraCD, extraFW)
gli ultimi ora sono posti a 1 dato che non c'è più penalità per i giocatori posti come "extra" in zone centrali.

Infine vengono definite le posizioni a cui applicare i Pesi (Coefficienti):

Player Weights (useable in all [SKILL] sections):

Option Function
allCDs=x ___This weight modifier will be multiplied with every CentralDef
allWBs=x ___This weight modifier will be multiplied with every Wingback
allIMs=x
___This weight modifier will be multiplied with every InnerMid
allWIs=x
___This weight modifier will be multiplied with every Winger
allFWs=x
___This weight modifier will be multiplied with every Forward

keeper=_____x keeper

cd_norm=x
__central defender normal
cd_off=x ____central defender offensive
cd_tw=x ____central defender to wing

wb_norm=x _wingback normal
wb_off=x ___wingback offensive
wb_def=x ___wingback defensive
wb_tm=x ___wingback to middle

im_norm=x _inner midfield norm
im_off=x___ inner midfield offensive
im_def=x___ inner midfield defensive
im_tw=x___ inner midfield to wing

wi_norm=x _winger normal
wi_off=x ___winger offensive
wi_def=x ___winger defensive
wi_tm=x ___winger to middle

fw_norm=x _forward normal
fw_def=x ___forward defensive
fw_tw=x ___forward to wing

extra_cd=x _extra central defender
extra_im=x _extra inner midfield
extra_fw=x _extra forward


e precisato che

Every position can have a .SPECIALTY appended, e.g. "fw_def.technical".
If so, the weight is applied to players with this specialty only
.

infine viene presentato un piccolo esempio

Example 1 (Midfield)
====================
Let's say, we want to predict the midfield parameters.
We have a midfield.dat with the following text:

[general]
multiplier=0.2
delta=0.8
squareMod=0.05
...

[playmaking]
allIMs=0.5 # Multiplier for ALL IMs
im_normal=1
im_off=0.9
extra_im=0.85
...

Therefore the PlayerStrength of all normal IMs is multiplied with 0.5 * 1 = 0.5,
the PlayerStrength of all offensive IMs is multiplied with 0.5 * 0.9 = 0.45 and so on.
After that, everything is added up to the PlaymakingSum.

In the end, the parameters from the [general] section are applied to this PlaymakingSum.
I.e.
PlaymakingSum = PlaymakingSum + squareMod*PlaymakingSum^2
PlaymakingSum = PlaymakingSum * multiplier
PlaymakingSum = PlaymakingSum + delta




I files nelle sottocartelle: i due "generici"
1 playerstrenght.dat


Allora, dopo tante presentazioni qui si comincia a fare sul serio. Il succo di questo file è questo:
riguardo alla SKILL

skillDelta=-1.0
skillMin=0
# SkillSubDeltas:
# Default is to add 0.5 subskill for skills 0 (non existant) up to 7 (solid)
# Uncomment the next line to ignore the skillSubDeltas
#[ignore]
skillSubDeltaForLevel0=0.5
skillSubDeltaForLevel1=0.5
skillSubDeltaForLevel2=0.5
skillSubDeltaForLevel3=0.5
skillSubDeltaForLevel4=0.5
skillSubDeltaForLevel5=0.5
skillSubDeltaForLevel6=0.5
skillSubDeltaForLevel7=0.5


Le skill vengono ridotte tutte di "1", si controlla che non siano sotto a 0, si aggiunge 0.5 per i livelli da 0 (inesistente) a 7 (buono). Quest'ultima aggiunta si basa sul principio che quelle skill non sono probabilmente state allenate e quindi hanno decimali ignoti, a Flattermann è parso saggio porsi nel mezzo e aggiungere a tutti un forfettario 0.5
Io non sono molto d'accordo con questa procedura, perché se è vero che posso accettare un 2,5 e un 3,5 al posto di un 2 e un 3, skill 6 e soprattutto 7 possono essere state allenate e quindi non mi pare il caso di aggiungere ben 0.5 a 7 portandolo a 7.5 (tra l'altro è proprio per questo che se un giocatore eccellente pesa in HO solo 0.5 più di un buono, perché questi bonus forfettari finiscono proprio a 7). Credo sarebbe piu' prudente addolcire la curva e aggiungere un 0.3/0.4 a 6 e un 0.2/0.3 a 7.

Vi sono poi una serie di operazioni su RESISTENZA, FORMA e ESPERIENZA che si riducono alle seguenti formule:

# stamina-Factor =____((stamina+6.5)/14)^0.6
# form-Factor =______((form-0.5)/7)^0.45
# xp-Factor =________1 + 7.16% * RADQ(xp-0.5)


che determinano questa tabella



che vanno applicate al precedente valore di skill

# result = skill
# result = result * 1 * stamina___(resultMultiStamina)

# result = result * 1 * form _____(resultMultiForm)

# result = result * 1 * xp_______(resultMultiXp)




2 tactics.dat

# Autogenerated with PredictionSimulation for HO by flattermann
# TacticLevelPrediction [chisquare=0.269985, using 7268 samples, 6637 runs]
[general]
version = 4.0
delta = 1.000000 # fixed
extraMulti = 0.850000 # fixed
squareMod = 0.000000 # fixed
cubeMod = 0.000000 # fixed

[aim_aow]
postMulti = 0.194912 # err=0.001890
squareMod = 0.009067 # err=0.001452
cubeMod = -0.000351 # err=0.000020

[counter]
postMulti = 0.235751 # err=0.007073
squareMod = 0.022976 # err=0.002754
cubeMod = -0.000422 # err=0.000021
multiPs = 0.923695 # err=0.035743
multiDe = 0.404393 # err=0.013345

[pressing]
postMulti = 0.062717 # err=0.001658
squareMod = 0.035617 # err=0.008675
cubeMod = -0.001443 # err=0.000171

[longshots]
postMulti = 0.001162 # err=0.000047
squareMod = -0.310785 # err=0.050769
cubeMod = 302.472449 # err=38.520727


Intuisco le formule, ma non mi è chiaro come e dove si applichino. Le posto per completezza.




I files nelle sottocartelle: le valutazioni di zona
Infine i files di rating veri e propri, quelli che siamo andati a modificare per elaborare le prediction nella ricerca della scorsa stagione, i valori dei pesi cambiano, per fare l'esempio ho scelto il 442 con 2 difensori centrali e due centrocampisti


1 midfield.dat

allora

[general]
multiplier = 0.250000 # fixed
delta = 1.000000 # fixed


per cui alla fine dovremo dividere tutto per 4 e sommare 1

tacticCounter = 0.930000 # fixed

perdita del 7% col contropiede

home = 1.199529 # err=0.004183
awayDerby = 1.113699 # err=0.007379


+20% se si gioca in casa, +11.3% se si gioca un derby in trasferta

pic = 0.839949 # err=0.003179
mots = 1.109650 # err=0.004748


-16% col PIC e quasi +11% col MOTS

teamspiritPreMulti = 0.147832 # err=0.003676
teamspiritPower = 0.417779 # err=0.005549


su questa sono perplesso... applicando i valori presenti qui i conti non mi tornano...

extraMulti = 1.000 # fixed

qui prima c'era 0.85, una perdita del 15% per il cc aggiunto

squareMod = 0.008504 # err=0.001206
cubeMod = -0.000027 # err=0.000005


sono i modificatori "furbetti" visti sopra, al rating del cc si deve sommare
rating + 0.008504*rating*rating -0.000027*rating*rating*rating

tacticLongshots = 0.950323 # err=0.008919

perdita del 5% del cc con la tattica tiri da lontano


Infine ecco i Pesi in regia per i vari ruoli

[playmaking_allsides]
CD_norm = 0.11328
CD_off = 0.15264
CD_tw = 0.07920
WB_norm = 0.07800
WB_off = 0.10800
WB_def = 0.03100
WB_tm = 0.07800
IM_norm = 0.43056
IM_off = 0.40664
IM_def = 0.40664
IM_tw = 0.37996
WI_norm = 0.21800
WI_off = 0.18300
WI_def = 0.18300
WI_tm = 0.27600
FW_def = 0.18330





2 centraldefense.dat

[general]
multiplier = 0.250000 # fixed
delta = 1.000000 # fixed


come prima alla fine dovrò dividere per 4 e sommare 1

trainerOff = 0.928162 # err=0.003268
trainerDef = 1.196307 # err=0.004050
trainerNeutral = 1.050000 # fixed


-7.2% con l'allenatore offensivo, +19.6% col difensivo, +5% col normale

tacticAOW = 0.858029 # err=0.004653
tacticCreative = 0.930999 # err=0.005163


AOW fa perdere il 14.2%, LI il 7%

extraMulti = 1.000 # fixed

anche questo è un residuo del passato

squareMod = 0.008462 # err=0.000976
cubeMod = -0.000017 # err=0.000003


quindi rating + 0.008462*rating*rating -0.000017*rating*rating*rating

pullback = 0.25

credo che questo significhi guadagno del 25% con il ripiegamento e non il 20% come ipotizzato da GM-Homerjay


Infine ecco i Pesi in difesa e parate per i vari ruoli

[goalkeeping_allsides]
keeper = 0.55750

[defending_allsides]
keeper = 0.26500
CD_norm = 0.60192
CD_off = 0.42048
CD_tw = 0.44976
WB_norm = 0.28000
WB_off = 0.23850
WB_def = 0.29850
WB_tm = 0.42600
IM_norm = 0.21804
IM_off = 0.12374
IM_def = 0.35788
IM_tw = 0.19964
WI_norm = 0.12550
WI_off = 0.05400
WI_def = 0.16750
WI_tm = 0.16000




3 sidedefense.dat


[general]
multiplier = 0.250000 # fixed
delta = 1.000000 # fixed

come prima alla fine dovrò dividere per 4 e sommare 1

trainerOff = 0.927577 # err=0.002694
trainerDef = 1.197332 # err=0.003328
trainerNeutral = 1.050000 # fixed

come per la difesa centrale, -7.2% con l'allenatore offensivo, +19.6% col difensivo, +5% col normale

tacticCreative = 0.930663 # err=0.004241
tacticAIM = 0.853911 # err=0.003586

AIM fa perdere il 14.6% (un po' piu' di quanto AOW faceva perdere alla difesa centrale), LI il 7%

extraMulti = 1.000 # fixed

il solito residuo del passato

squareMod = 0.011591 # err=0.000943
cubeMod = -0.000029 # err=0.000003

quindi rating + 0.011591*rating*rating -0.000029*rating*rating*rating

pullback = 0.25



Infine ecco i Pesi in difesa e parate per i vari ruoli

[goalkeeping_allsides]
keeper = 0.61700

[defending_allsides]
keeper = 0.27650

[defending_thisside]
CD_norm = 0.49824
CD_off = 0.37680
CD_tw = 0.73200
WB_norm = 0.92250
WB_off = 0.65800
WB_def = 0.98000
WB_tm = 0.70600
IM_norm = 0.17388
IM_off = 0.09660
IM_def = 0.24932
IM_tw = 0.22954
WI_norm = 0.35000
WI_off = 0.18500
WI_def = 0.49800
WI_tm = 0.31250

[defending_middle]
CD_norm = 0.24960
CD_off = 0.18225
IM_norm = 0.08708
IM_off = 0.02563
IM_def = 0.12472




4 centralattack.dat

[general]
multiplier = 0.250000 # fixed
delta = 1.000000 # fixed

al solito, alla fine dovrò dividere per 4 e sommare 1

trainerOff = 1.135257 # err=0.004339
trainerDef = 0.927930 # err=0.005792
trainerNeutral = 1.050000 # fixed

+13.5% con l'allenatore offensivo, -7.2% col difensivo, +5% col normale

confidence = 0.0525 # Educated guess by GM-Mjoelnir :-)

valore della fiducia

extraMulti = 1.000 # fixed

il solito residuo del passato

squareMod = 0.011339 # err=0.001363
cubeMod = -0.000029 # err=0.000005

quindi rating + 0.011399*rating*rating -0.000029*rating*rating*rating

tacticLongshots = 0.970577 # err=0.008211

perdita del 3% del con la tattica tiri da lontano

pullback = -0.25


che è l'opposto del valore di difesa


Infine ecco i Pesi in attacco e passaggi per i vari ruoli

[scoring_allsides]
FW_norm = 0.56306
FW_def = 0.34310
FW_tw = 0.34310

[passing_allsides]
IM_norm = 0.17756
IM_off = 0.26404
IM_def = 0.11960
IM_tw = 0.12650
WI_norm = 0.06100
WI_off = 0.08000
WI_def = 0.03100
WI_tm = 0.08800
FW_norm = 0.20774
FW_def = 0.32195
FW_def.technical = 0.32195
FW_tw = 0.14664





5 sideattack.dat

[general]
multiplier = 0.250000 # fixed

delta = 1.000000 # fixed

al solito, alla fine dovrò dividere per 4 e sommare 1

trainerOff = 1.133359 # err=0.003514
trainerDef = 0.921278 # err=0.004323
trainerNeutral = 1.050000 # fixed

+13.3% con l'allenatore offensivo, -7.9% col difensivo, +5% col normale

confidence = 0.0525 # Educated guess by GM-Mjoelnir :-)

valore della fiducia

extraMulti = 1.000 # fixed

il solito residuo

squareMod = 0.012093 # err=0.001183
cubeMod = -0.000027 # err=0.000005

quindi rating + 0.012093*rating*rating -0.000027*rating*rating*rating

tacticLongshots = 0.972980 # err=0.006620

perdita del 2.7% del con la tattica tiri da lontano

pullback = -0.25


e infine

[passing_middle]
IM_norm = 0.08714
IM_off = 0.09067
IM_def = 0.05602

[passing_allsides]
FW_norm = 0.10011
FW_def = 0.18612
FW_def.technical = 0.27495

[winger_allsides]
FW_norm = 0.15181
FW_def = 0.10340

[passing_thisside]
IM_norm = 0.17434
IM_off = 0.18538
IM_def = 0.11224
IM_tw = 0.21712
WI_norm = 0.18200
WI_off = 0.20900
WI_def = 0.15000
WI_tm = 0.13500
FW_tw = 0.14805

[winger_thisside]
CD_tw = 0.21360
WB_norm = 0.43450
WB_off = 0.55000
WB_def = 0.27500
WB_tm = 0.24150
IM_tw = 0.39468
WI_norm = 0.73900
WI_off = 0.83250
WI_def = 0.62250
WI_tm = 0.54000
FW_tw = 0.33887

[scoring_allsides]
FW_norm = 0.18424
FW_def = 0.09400

[scoring_otherside]
FW_tw = 0.12757

[scoring_thisside]
FW_tw = 0.31255


PS. dai un occhio all' INDICE del blog, ci sono parecchi articoli che ti potrebbero interessare.




Andreac (team ID 1730726 in Hattrick)

Creative Commons License
This opera by Andreac is licensed under a Creative Commons Attribuzione-Non commerciale 3.0 Unported License. Cioé questo lavoro può essere liberamente copiato, distribuito o modificato senza espressa autorizzazione dell'autore, a patto che l'autore sia chiaramente indicato e la pubblicazione non sia a fini commerciali.

domenica 9 maggio 2010

HATTRICK - La struttura delle Serie





Nell'attesa di avere più dati di feedback per stimare le variazioni intervenute negli apporti dei giocatori dedico un piccolo articolo alla struttura delle serie.
Devo dire che solo recentemente mi sono reso conto della forte "piramidalità" di questa struttura: sapevo che le squadre comprese tra la serie A e la V erano molto meno della metà del totale, ma non immaginavo fossero appena il 3.22% di quelle tra la A e la X.

Il numero dei gironi si restringe infatti drasticamenti via via che si sale: dai 4096 della X si dimezza ai 2048 della IX e VIII, poi ancora dimezzamento e 1024 gironi in VII e VI. Poi il restringimento aumenta ancora e diventa costante, ogni serie superiore ha un numero di gironi pari a 1/4 di quella sotto: in V i gironi si riducono quindi a 256, 64 in IV, 16 in III, 4 in II e 1 naturalmente in serie A.


Se sommiamo i team tra la serie A e la III non arriviamo neanche all'1% del totale e, come detto sopra, arriviamo solo a poco poù del 3% aggiungendo la V.

Questo un grafico del numero dei team per serie



PROMOZIONI / RETROCESSIONI

Debottizzazione e promozioni d'ufficio a parte la struttura delle PROMOZIONI prevede un numero di team naturalmente identico a quello dei retrocessi dalle serie superiori.
Il numero dei team
  • retrocessi DIRETTAMENTE è lo stesso per tutte le serie, e cioè 2
  • che vanno allo SPAREGGIO per evitare la retrocessione è lo stesso per tutte le serie coinvolte (dalla A alla V) e cioè altri 2,
Quindi, cominciando dal basso, dai 2048 gironi della IX retrocedono 2048*2=4096 team e dato che ci sono 4096 gironi in X si crea posto solo per le prime classificate.
Dai 2048 gironi dell'VIII retrocedono 2048*2=4096 team, quindi ci sono 4096 posti per salire in VIII ed essendoci in IX 2048 gironi, vengono promosse la prima e la seconda classificata.
In VII il numero di gironi si dimezza e quindi dall'VIII (come visto per la X) può salire solo la prima classificata.
In VI invece il numero di gironi è identico alla VII e quindi possono salire in VI sia la prima che la seconda classificata.


Dalla VI in su abbiamo visto che i gironi si riducono a 1/4 di quelli della serie inferiore e quindi sarebbero disponibili solo 2*256=512 posti in V, cioé 0.5 posti per ogni girone di VI.

Le prime arrivate in VI vengono divise in due gruppi: la metà migliore (quelli con "più punti, con una migliore differenza reti, con più gol segnati e così via") viene direttamente promossa in V e va a sostituire i 512 team retrocessi direttamente (il 7° e 8° classificato in V), la metà peggiore deve vedersela, per essere promossa, con il 5° e il 6° classificato della serie superiore. Il fatto che questi spareggi si giochino in casa del team della serie superiore rende piuttosto arduo salire per la metà peggiore delle prime classificate.

La struttura non cambia per le serie superiori, cambia solo il numero dei team coinvolti, promozione diretta in VI per le migliori 512 e spareggi per le altre 512, in V promozione diretta per le migliori 128 e spareggi per le altre 128, in IV promozione diretta per le migliori 32 e spareggi per le altre 32, in III promozione diretta per le migliori 8 e spareggi per le altre 8, in II promozione diretta per le migliori 2 e spareggi per le altre 2.

Tutto questo ci può fare osservare la % di ricambio delle serie, ossia quante vengono promosse e quante retrocesse in ogni girone.




Viene pertanto promosso il 12.5% dei team di X (1 su 8), il 25% dei team di IX (facile salire in VIII), il 12.5% di quelli di VIII e il 25% di quelli di VII (again, facile salire in VI). Dopodiché salire diventa difficile, i posti oscillano tra il 6.25% e il 12.5% (a seconda dell'andamento degli spareggi), ma data la difficoltà degli spareggi il numero effettivo è più vicino al limite basso della forchetta di variazione. Non è quindi tanto la VI a fare da scoglio, quanto il fatto che salire dalla VI in su comincia a essere davvero duro.

Per le retrocessioni il valore è pari al 25% per le serie basse e oscilla tra il 25% e il 50% in quelle alte, tendendo sempre al valore inferiore.


PS. dai un occhio all' INDICE del blog, ci sono parecchi articoli che ti potrebbero interessare.




Andreac (team ID 1730726 in Hattrick)

Creative Commons License
This opera by Andreac is licensed under a Creative Commons Attribuzione-Non commerciale 3.0 Unported License. Cioé questo lavoro può essere liberamente copiato, distribuito o modificato senza espressa autorizzazione dell'autore, a patto che l'autore sia chiaramente indicato e la pubblicazione non sia a fini commerciali.

mercoledì 17 febbraio 2010

HATTRICK - Guida ai Mondiali U20 (U20 World Cup)

Ciao a tutti.
Ecco qualche riga per capire il funzionamento dei mondiali U20.

I mondiali giovanili si disputano nell'arco di 2 stagioni. Nella prima stagione vengono disputate le qualificazioni, nella seconda stagione la parte finale, che si svolge nel Paese ospitante l'evento. Attualmente quindi si sta disputando il mondiale delle stagioni 41/42, seguirà quello delle stagioni 43/44 e così via.


La Fase delle Qualificazioni (chiamata in Hattrick anche "1° Turno" o "Round 1") prevede che le 124 squadre partecipanti siano divise in 16 gruppi (4 da 7 squadre e 12 da 8 squadre). Vengono disputate 7 partite di andata e 7 di ritorno, per un totale di 14 partite. Passano il turno le migliori 2 di ogni girone.



La Fase Finale è divisa in 5 ulteriori fasi che selezionano le squadre qualificate:
  • Fase/Round 2, 32 squadre in 8 gruppi da 4, passano le migliori 2
  • Fase/Round 3, 16 squadre in 4 gruppi da 4, passano le migliori 2
  • Fase/Round 4, 8 squadre in 2 gruppi da 4, passano le migliori 2
  • Semifinale
  • Finale

La dinamica temporale di queste fasi però non è uniforme. Infatti mentre
  • la Fase delle Qualificazioni prevede che le 14 partite siano disposte in modo omogeneo nel tempo (1 partita a settimana tra la 3a e la 16a settimana)
  • La Fase Finale è piuttosto irregolare: le 3 partite del round 2 avvengono a metà stagione (8a e 9a settimana), le restanti 8 si svolgono in un arco di tempo molto breve tra la 13a settimana e la 16a (la finale stessa sborda nella stagione successiva, al suo primo giorno)


Capire questa dinamica è essenziale per valutare le possibilità dei giovani campioncini.
Dato infatti che gli allenatori delle Nazionali U20 sono ovviamente piuttosto restii a sconvocare giocatori per le conseguenze negative sul TS della squadra, i giocatori che una volta convocati hanno la possibilità di giocare tutte le partite della fase avranno la preferenza su giocatori anche più forti, ma che compiono il 21° anno di età (limite massimo) durante la fase stessa.

Diventa cruciale quindi capire fino a quale partita un giocatore con "tot" giorni possa essere schierato. Costruire un foglio excel sempre aggiornato è piuttosto semplice. Vediamo passo passo la procedura.


In colonna A e B vedete la stagione e la settimana, in colonna C la data della partita e in colonna D il tipo di partita. In colonna E e F vedete l'età attuale massima di un giocatore per giocare quella partita.

Prendiamo in esame la riga 12 e vediamo come calcolare le colonne E e F.
Si tratta della partita che sarà disputata il 12 marzo 2010, nona partita delle qualificazioni.
La colonna H indica il limite di nascita di un giocatore, cioè il giorno più lontano ammissibile, calcolato con =C12-(21*112-1) cioé la data di oggi, meno 21 anni hattrickiani (21*112) meno un giorno perché il giocatore sia ancora 20 enne, cioè 20enne e 111 giorni. Il risultato è il 4 ottobre 2003.
Un tale giocatore avrà oggi 2328,22 giorni (colonna I), valore ottenuto con =ADESSO()-H12, cioè un valore decimale di anni (colonna J) pari a 20,79, valore ottenuto con =I12/112 cioé semplicemente dividendo il numero precedente per 112 (i giorni dell'anno hattrickiano)
Quindi la colonna E sarà =INT(J12) l'intero del numero precedente, cioé 20 anni.
Il numero dei giorni in colonna F si ottiene con =INT(I12)-E12*112 cioé considerando il numero di giorni attuali meno il numero di giorni al precedente compleanno, che ci sarà i giorni residui.
-> Quindi un giocatore che oggi ha 20 anni e 88 giorni potrà disputare quella partita.

Con questa procedura è facile calcolare quanti giorni ha oggi un giocatore che potrà disputare una certa partita futura: ad esempio giocatori con massimo 19 anni e 51 giorni potranno disputare la prossima finale mondiale.


Per quanto riguarda invece il prossimo campionato del mondo, quello delle stagioni 43/44, giocatori con massimo 18 anni e 53 giorni possono disputare tutta la fase delle qualificazioni, mentre giocatori con massimo 17 anni e 51 giorni possono disputare la finale di queli campionati.
Ci sono quindi giocatori con un numero di giorni "fortunato" e altri meno fortunati. Ad esempio un giocatore "A" con 18 anni e 53 giorni sarà particolarmente fortunato perché potrà giocare giuste giuste tutte le partite di qualificazione. Invece un giocatore "B" con 17 anni e 110 giorni non potrà giocare alcuna partita più di A, tendenzialmente quindi, avendo minor tempo per sviluppare le sue skill, sarà più debole e date le medesime prospettive di impiego ad esso sarà preferito il primo.


Idem per il successivo campionato delle stagioni 45/46.




PS. dai un occhio all' INDICE del blog, ci sono parecchi articoli che ti potrebbero interessare.




Andreac (team ID 1730726 in Hattrick)

Creative Commons License
This opera by Andreac is licensed under a Creative Commons Attribuzione-Non commerciale 3.0 Unported License. Cioé questo lavoro può essere liberamente copiato, distribuito o modificato senza espressa autorizzazione dell'autore, a patto che l'autore sia chiaramente indicato e la pubblicazione non sia a fini commerciali.