From 3ded27e5f922f8c6faa89af0c100325cdf4fb39e Mon Sep 17 00:00:00 2001 From: zhaoli Date: Mon, 17 Aug 2026 09:33:24 +0000 Subject: [PATCH] finish experiment 20 (exp/20-improve-the-risk-limit-reference-signal) --- code/MANIFEST.txt | 10 +++++++++- .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 374 bytes .../data/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 216 bytes .../data/__pycache__/handler.cpython-312.pyc | Bin 0 -> 10154 bytes .../model/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 319 bytes .../__pycache__/rank_ensemble.cpython-312.pyc | Bin 0 -> 12387 bytes .../model/__pycache__/rank_gbdt.cpython-312.pyc | Bin 0 -> 9838 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 234 bytes .../__pycache__/optimal_stop.cpython-312.pyc | Bin 0 -> 10428 bytes 9 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc create mode 100644 code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc diff --git a/code/MANIFEST.txt b/code/MANIFEST.txt index dd7d5b2..72ca05d 100644 --- a/code/MANIFEST.txt +++ b/code/MANIFEST.txt @@ -1,15 +1,23 @@ # TradeAC custom-qlib-code snapshot (auto-generated) -# parent repo HEAD : 80c7230e17b5eb9c08d1e61737e79cae074680c1 +# parent repo HEAD : 125be7b96fb5975e798a0b4301eeb5809a8a181c # tac-qlib/tac_qlib/contrib # tac-qlib/tac_qlib/data # per-file hashes (git hash-object): 1b6298c4a5652f2e863cbdc385a1014a570fcd59 tac-qlib/tac_qlib/contrib/__init__.py + b8112569f9b2537c45b6535e1a505a207878d322 tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc c76a9f17f680e74eea766eff27f7624359749ed6 tac-qlib/tac_qlib/contrib/data/__init__.py + 8d5333ebd2b44165c50cba639ca2d4ac3fc7cfec tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc + 18cb37c0354184c49fa2e598396d7df0634cce0f tac-qlib/tac_qlib/contrib/data/__pycache__/handler.cpython-312.pyc 871ff1e163c29261f140c3f53d42a41e6504c779 tac-qlib/tac_qlib/contrib/data/handler.py b151d139a0dcde87d74b21e7c4b729176ba5c39b tac-qlib/tac_qlib/contrib/model/__init__.py + ab958203f33a99d12c7d923b6efb435189231666 tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc + 7478f6b0f6de419615c02d4d92b54529f689ef04 tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc + 9f9014ddd9bce37490061312d51e8e6fe540fec4 tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc ce77dea53f6a87c5379782709293bf8ff55b2c75 tac-qlib/tac_qlib/contrib/model/rank_ensemble.py ccfe7d554989aa7f3e5a2128ae663e51b2207149 tac-qlib/tac_qlib/contrib/model/rank_gbdt.py 4afcf9058231111c412925f4c4b84e81d656db87 tac-qlib/tac_qlib/contrib/strategy/__init__.py + 74e5ecbbbb20bb71fd5cd083383de4ce88476712 tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc + afaf562aeaa12cebc8529cd916153252e7e3c38a tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc 96a0a25201f0a1bb2fc2190e26228c5c0e711a79 tac-qlib/tac_qlib/contrib/strategy/hmm_risk.py 816de5d58ae23d996635d42331cf9fc8963d5dbe tac-qlib/tac_qlib/contrib/strategy/momentum_gate.py 79aaad9e39fcc740a773f4f63c512ce1086cfde0 tac-qlib/tac_qlib/contrib/strategy/optimal_stop.py diff --git a/code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b8112569f9b2537c45b6535e1a505a207878d322 GIT binary patch literal 374 zcmY+9y-ve06os#U@}ojKbOi=Bf&_g5R0%o&QUQrFd9h3rRRKE*t{FPgmtbe(S$F`X zND%`Q8=@N%*AWcd;pjW}T>IKD-EIf4UWdz@2?2Qb=C9~4ti}kBkU~l{7$OMqOp&Re zh6&bsritN#x6Cy)fe2a-G&7+H3Cti3pNNPSQ4)XPE=WktQ{_}b>%f$0rt5g_ta90G zfl=q`aCD-IRA&}l?@|@Fr=#)l(V3sbPXD5ExlwxJ%4$>=&Xzi1HpF{v2 kv^_lP|1{q~`DBEU2KsNX)xc&0+YRh|alS?$BD;?H4}gGL82|tP literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/data/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d5333ebd2b44165c50cba639ca2d4ac3fc7cfec GIT binary patch literal 216 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 H$VUGk@_{`y literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/model/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ab958203f33a99d12c7d923b6efb435189231666 GIT binary patch literal 319 zcmX@j%ge<81lR4FvQ7c%#~=<2FhLogHGqui3@HpLj5!Rsj8Tk?AU0DDQ!aB9b1q91 z3nN21LkjaE#wgZG7ERWdj6mg@jJL#s67#Y>on7;aQ*)DYQhnT=eDhOMb2OQ5@j+x@ zBDZ*ofGRVSqzEXG3v!Zve0*kJW=VX! uUP0w84jZ6YX-=wL5f9J+kY9=gfW!x8Mn=ZF42Jg^j305iHL@3h!VLf*)l?q< literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_ensemble.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7478f6b0f6de419615c02d4d92b54529f689ef04 GIT binary patch literal 12387 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 D+5u~A literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/model/__pycache__/rank_gbdt.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f9014ddd9bce37490061312d51e8e6fe540fec4 GIT binary patch literal 9838 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 jdZp;;nRPyLH1UW2d!L?X2*~q#l literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..74e5ecbbbb20bb71fd5cd083383de4ce88476712 GIT binary patch literal 234 zcmX@j%ge<81lR4FvSNYsV-N=hn4pZ$VnD`ph7^Vr#vF!R#wbQch7_iB#weyrW=)ot zj6g|E##=)E1tpoei8;X~`327Tc_l^pIYrDsDL+l-TRiy?x%gtBBv|wodwhIiPELIM zN`}uMTYeeqCl(awmn0_Z7UpCoff(^%Ml#4Kpg?g+QDRAIdZm7Rd}dx|NqoFsLFFwD ro80`A(wtPgB2J(gAcqtS0ErLGjEszT8FU_S%U|G9Xk;&92MPiJ;Qu}S literal 0 HcmV?d00001 diff --git a/code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc b/code/tac-qlib/tac_qlib/contrib/strategy/__pycache__/optimal_stop.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..afaf562aeaa12cebc8529cd916153252e7e3c38a GIT binary patch literal 10428 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 literal 0 HcmV?d00001