predict based on MAX DATE, not max value

main
Bel LaPointe 2023-10-26 06:25:59 -06:00
parent c7423f8f72
commit a950c48ed1
2 changed files with 23 additions and 17 deletions

View File

@ -48,6 +48,9 @@ func registerWithContributionPredictionForNameForCurrency(reg Register, window t
if err != nil {
return err
}
if time.Since(t) > time.Hour*24*180 {
continue
}
if v, ok := reg[d][name][currency]; ok {
contributions = append(contributions, contribution{t: t, v: v})
}
@ -55,7 +58,7 @@ func registerWithContributionPredictionForNameForCurrency(reg Register, window t
sort.Slice(contributions, func(i, j int) bool {
return contributions[i].t.Before(contributions[j].t)
})
if len(contributions) < 2 {
if len(contributions) < 3 {
return nil
}
@ -106,13 +109,11 @@ func registerWithContributionPredictionForNameForCurrency(reg Register, window t
}()
latest := func() float64 {
max := 0.0
for d := range reg {
if other := reg[d][name][currency]; other > max {
max = other
last := 0.0
for _, d := range reg.Dates() {
last = reg[d][name][currency]
}
}
return max
return last
}()
for _, predictionTime := range predictionTimes(window) {
k := predictionTime.Format("2006-01")

View File

@ -75,16 +75,21 @@ func TestBPIPrediction(t *testing.T) {
}
func newTestRegister() map[string]Balances {
s := func(t time.Time) string {
return t.Format("2006-01")
}
day := time.Hour * 24
lastYear := time.Now().Add(-1 * day * time.Duration(time.Now().YearDay()))
return map[string]Balances{
"2001-01": Balances{"X": Balance{USD: 1}},
"2001-02": Balances{"X": Balance{USD: 2}},
"2001-03": Balances{"X": Balance{USD: 3}},
"2001-04": Balances{"X": Balance{USD: 4}},
"2001-05": Balances{"X": Balance{USD: 5}},
"2001-06": Balances{"X": Balance{USD: 6}},
"2001-07": Balances{"X": Balance{USD: 8}},
"2001-08": Balances{"X": Balance{USD: 10}},
"2001-09": Balances{"X": Balance{USD: 12}},
"2001-10": Balances{"X": Balance{USD: 16}},
s(lastYear.Add(day * 0)): Balances{"X": Balance{USD: 1}},
s(lastYear.Add(day * 32)): Balances{"X": Balance{USD: 2}},
s(lastYear.Add(day * 64)): Balances{"X": Balance{USD: 3}},
s(lastYear.Add(day * 94)): Balances{"X": Balance{USD: 4}},
s(lastYear.Add(day * 124)): Balances{"X": Balance{USD: 5}},
s(lastYear.Add(day * 154)): Balances{"X": Balance{USD: 6}},
s(lastYear.Add(day * 184)): Balances{"X": Balance{USD: 8}},
s(lastYear.Add(day * 214)): Balances{"X": Balance{USD: 10}},
s(lastYear.Add(day * 244)): Balances{"X": Balance{USD: 12}},
s(lastYear.Add(day * 274)): Balances{"X": Balance{USD: 16}},
}
}