Files
QuanTAlib/python/tests/__pycache__/test_golden.cpython-313-pytest-9.0.2.pyc
T

122 lines
16 KiB
Plaintext
Raw Normal View History

2026-02-28 14:14:35 -08:00
ó
ðL£iì
ãóöSrSSKJr SSKrSSKJs Jr SSK r
SSK r \
RRS5rSr\R!\5R#5S-r\\R'SS\5-r\\R'SS\5-
r\R'S S
\5rS r\ R0"S S
9S5r"SS5r"SS5r"SS5r"SS5r"SS5r"SS5r"SS5r g)test_golden.py — Compare quantalib outputs vs known golden values.
Golden values are computed once from the managed QuanTAlib C# library.
This ensures the NativeAOT path produces identical results.
é)Ú annotationsNi90édçY@gà?ç@g€„.AgÐSAg»½×Ùß|Û=Úmodule)Úscopecó|SSKnU$![[4a#n[R"SU35 SnAgSnAff=f)Nrz$quantalib native lib not available: )Ú quantalibÚOSErrorÚ ImportErrorÚpytestÚskip)Ú_qtlÚes Ú/c:\github\quantalib\python\tests\test_golden.pyÚqtlrs>ð@Û Øˆ øÜ ”[Ð @Ü Š Ð:¸1¸?ûð@úsˆ;˜6;có"\rSrSrSrSSjrSrg)Ú
TestSmaGoldenézSMA golden value checks.cóÆ[R"SS5nURUSS9nUSnSoTU-
n[U5ow[:oˆ(Gd/[
R "SU4SU[45S [R"5;d[
R"[5(a[
R"[5OS [
R"U5[
R"U5[
R"U5S
[R"5;d[
R"[5(a[
R"[5OS
S .-n S S
U 0-n
[[
R"U
55eS=n=n=n=pxUSnSoTU-
n[U5ow[:oˆ(Gd/[
R "SU4SU[45S [R"5;d[
R"[5(a[
R"[5OS [
R"U5[
R"U5[
R"U5S
[R"5;d[
R"[5(a[
R"[5OS
S .-n S S
U 0-n
[[
R"U
55eS=n=n=n=pxg)z5SMA(10) of uniform data should equal mean of last 10.gð?g5@é
©Úlengthég/@©Ú<)z;%(py7)s
{%(py7)s = %(py0)s((%(py2)s - %(py4)s))
} < %(py9)sÚabsÚTOL)Úpy0Úpy2Úpy4Úpy7Úpy9zassert %(py11)sÚpy11Né g@)
ÚnpÚarangeÚsmarrÚ
@pytest_arÚ_call_reprcompareÚ @py_builtinsÚlocalsÚ_should_repr_global_nameÚ _safereprÚAssertionErrorÚ_format_explanation) ÚselfrÚdataÚresultÚ @py_assert1Ú @py_assert3Ú @py_assert5Ú @py_assert6Ú @py_assert8Ú @py_format10Ú @py_format12s rÚtest_sma_last_valueÚ!TestSmaGolden.test_sma_last_value!äyŠy˜˜dÓØ˜ bÐà˜"+ Ð+ Ñ+ŒsÐÑ×+Œs×+Œs×+×+:×+×+ ×+××ט!‘9Ð)˜sÐ)˜s‘?Ð)Œs)¤cÑ)×)×)×#¤c×)Œs×)Œs×)×)9×)×)˜s×)×)×)×)¤c×)¤cשÚreturnÚNone)Ú__name__Ú
__module__Ú __qualname__Ú__firstlineno__Ú__doc__r;Ú__static_attributes__r>r=rrrs
Ù*r=rcó"\rSrSrSrSSjrSrg)Ú
TestEmaGoldené+zEMA golden value checks.có„[R"SS5nURUSS9nUSnSoTU-
n[U5nSo‡U:o™([R
"SU 4SXx45S [ R"5;d[R"[5(a[R"[5OS [R"U5[R"U5[R"U5[R"U5S
.-n
S S U
0-n [[R"U 55eS
=n=n=n=n=p˜g
)z1EMA of constant should converge to that constant.é2gE@rréÿÿÿÿgíµ ÷ư>r)z<%(py7)s
{%(py7)s = %(py0)s((%(py2)s - %(py4)s))
} < %(py10)sr)rr r!r"Úpy10zassert %(py12)sÚpy12N) r&ÚfullÚemarr)r*r+r,r-r.r/r0) r1rr2r3r4r5r6r7Ú @py_assert9r8Ú @py_format11Ú @py_format13s rÚtest_ema_convergesÚ TestEmaGolden.test_ema_converges.äwŠwr˜4Ó ˆØ˜ bÐà˜", Ð, Ñ,ŒsÐÐÑ,×,×,×,×,Œs×,Œs×,×,:×,×, ×,××,×,×,×,×,×,r=r>Nr?)rBrCrDrErFrUrGr>r=rrIrI+s
Ù-r=rIcó"\rSrSrSrSSjrSrg)ÚTestMedpriceGoldené6zMedprice golden value check.cóÐ[R"/SQ5n[R"/SQ5nURX#5n[RR U/SQ[
S9 g)N)ç$@g4@g>@)rg@)r\ç(@g2@)Úatol)r&ÚarrayÚmedpriceÚtestingÚassert_allcloser)r1rÚlr3s rÚtest_medprice_simpleÚ'TestMedpriceGolden.test_medprice_simple9sGÜ HŠHÒ Ü HŠH’_Ó Ø˜aÓÜ
×" 6Ò+<Ä3ÐGr=r>Nr?)rBrCrDrErFrerGr>r=rrXrX6s ÙHr=rXcó"\rSrSrSrSSjrSrg)Ú
TestRsiGoldené@zRSI golden value checks.có’UR[SS9nU[R"U5n[RnSoSUod"U5ow(Gd"[
R "SU4SX545S[R"5;d[
R"U5(a[
R"U5OS[
R"U5S.-nSS [R"5;d[
R"[5(a[
R"[5OS [
R"U5U[
R"U5S
.-n [[
R"U 55eS =n=n=pW[RnS oSU:*od"U5ow(Gd"[
R "S
U4SX545S[R"5;d[
R"U5(a[
R"U5OS[
R"U5S.-nSS [R"5;d[
R"[5(a[
R"[5OS [
R"U5U[
R"U5S
.-n [[
R"U 55eS =n=n=pWg )z"RSI should stay in [0, 100] range.érg©ú>=)z%(py3)s >= %(py6)sÚfinite)Úpy3Úpy6zGassert %(py10)s
{%(py10)s = %(py2)s
{%(py2)s = %(py0)s.all
}(%(py8)s)
}r&)rr Úpy8rNNr)ú<=)z%(py3)s <= %(py6)s)
ÚrsiÚCLOSEr&ÚisfiniteÚallr)r*r+r,r-r.r/r0)
r1rr3rnr4r6Ú @py_assert4rRÚ @py_format7rSs
rÚtest_rsi_rangeÚTestRsiGolden.test_rsi_rangeCs{àœ rÐØœŸ š  FÓÜv‰vÐБmÐ$ˆ$×$×$f×$×$×$×$×$f×$×$×$f×$×$ ×$×$×$Œr×$Œr×$×$ˆv×$×$×v‰vÐ& Ð& &ˆ&×&×&f×&×&×&×&×&f×&×&×&f×&×& ×&×&×&×&×&×&Œr×&×&×&Œr×&×&ˆv×&×&×&×&×&×&×&×&r=r>Nr?)rBrCrDrErFryrGr>r=rrhrh@s
Ù'r=rhcó"\rSrSrSrSSjrSrg)ÚTestBbandsGoldenéKz$Bollinger Bands golden value checks.có°UR[SSS9nUup4n[R"U5[R"U5-[R"U5-n[RosUo„Uo™[
-
o¨U
o·"U 5oÌ(Gd?[ R"SU 4SXŠ45[ R"U5[ R"U 5S[R"5;d[ R"[
5(a[ R"[
5OSS.-n
SS [R"5;d[ R"[5(a[ R"[5OS [ R"U5U
[ R"U 5S
.-n[[ R"U55eS =n=n=n =n =p¬[RotUo…Uo™[
-
o¨U
o·"U 5oÌ(Gd?[ R"SU 4SXŠ45[ R"U5[ R"U 5S[R"5;d[ R"[
5(a[ R"[
5OSS.-n
SS [R"5;d[ R"[5(a[ R"[5OS [ R"U5U
[ R"U 5S
.-n[[ R"U55eS =n=n=n =n =p¬g ) z&Upper >= Mid >= Lower for all non-NaN.ér)rÚstdrl)z%(py4)s >= (%(py7)s - %(py8)s)r)r!r"rqzHassert %(py13)s
{%(py13)s = %(py2)s
{%(py2)s = %(py0)s.all
}(%(py11)s)
}r&)rr r$Úpy13N)Úbbandsrtr&rurvrr)r*r.r+r,r-r/r0)r1rr3ÚupperÚmidÚlowerÚmaskr4r5r7rRr6Ú @py_assert12r9Ú @py_format14s rÚtest_bbands_orderingÚ%TestBbandsGolden.test_bbands_orderingNàœE¨"°#Ð6ˆØˆ{Š{˜!¤B§K¢K°Ó$4Ñ4´r·{²{À5Ó7IÑÜv‰vÐ5˜D‘kСYС_Ð5 _Ñ5ˆvÐ5×5×5k×5×5k×5×5 Y×5×5×××5Œr×5Œr×5×5ˆv×5×v‰vÐ5˜$‘iС;ÐÑ#4Ð5Ð#4Ñ5ˆ5×5×5i×5×5i×5×5 ;×5×5×××5Œr×5Œr×5×5ˆv×5×5×5×5×5×5r=r>Nr?)rBrCrDrErFr‰rGr>r=rr|r|Ks
Ù6r=r|có"\rSrSrSrSSjrSrg)Ú
TestObvGoldenéWzOBV golden value checks.có”[R"/SQ5n[R"/SQ5nURX#5n[U5nSoeU:How(Gd
[R
"SU4SXV45S[ R"5;d[R"[5(a[R"[5OSS[ R"5;d[R"U5(a[R"U5OS[R"U5[R"U5S.-nS S
U0-n [[R"U 55eS =n=pv[Ro¤S oº"U 5of(S
S[ R"5;d[R"[5(a[R"[5OS[R"U
5[R"U 5[R"U5S.-n[[R"U55eS =n