first version
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
package features
|
||||
|
||||
import (
|
||||
"math"
|
||||
"testing"
|
||||
|
||||
"github.com/shopspring/decimal"
|
||||
)
|
||||
|
||||
func dec(raw string) decimal.Decimal {
|
||||
v, err := decimal.NewFromString(raw)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return v
|
||||
}
|
||||
|
||||
func TestReturnsAndLogIdentity(t *testing.T) {
|
||||
rOn, err := OvernightReturn(dec("102"), dec("100"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !rOn.Equal(dec("0.02")) {
|
||||
t.Fatalf("overnight return=%s", rOn)
|
||||
}
|
||||
rDay, err := IntradayReturn(dec("105"), dec("102"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !rDay.Round(10).Equal(dec("0.0294117647")) {
|
||||
t.Fatalf("intraday return=%s", rDay)
|
||||
}
|
||||
linear := CumulativeLinear([]decimal.Decimal{dec("0.01"), dec("-0.02"), dec("0.03")})
|
||||
logs := []float64{math.Log(1.01), math.Log(0.98), math.Log(1.03)}
|
||||
if math.Abs(linear.InexactFloat64()-CumulativeLog(logs)) > 1e-10 {
|
||||
t.Fatalf("linear/log cumulative mismatch")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user