Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
10bee8c2
C
czsc
项目概览
zengbin93
/
czsc
通知
23
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
czsc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
10bee8c2
编写于
9月 23, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.5.6 新增单因子分析
上级
9817a2e2
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
88 addition
and
6 deletion
+88
-6
czsc/cobra/factor_analyst.py
czsc/cobra/factor_analyst.py
+52
-6
test/test_cobra_factor_analyst.py
test/test_cobra_factor_analyst.py
+36
-0
未找到文件。
czsc/cobra/factor_analyst.py
浏览文件 @
10bee8c2
...
...
@@ -5,13 +5,36 @@ from typing import List
def
cal_nbar_percentile
(
k
:
dict
,
kn
:
List
[
dict
],
n
:
int
)
->
float
:
"""计算 N 周期区间百分位
:param k: dict
信号出现时的 K 线
信号出现时的 K 线,如:
{'symbol': '000001.SH',
'dt': '2007-04-05 15:00:00',
'open': 3286.16,
'close': 3319.14,
'high': 3326.92,
'low': 3259.63,
'vol': 114528051.0}
:param kn: List[dict]
信号出现后的 N 根 K 线
信号出现后的 N 根 K 线,如:
[{'symbol': '000001.SH',
'dt': '2007-04-06 15:00:00',
'open': 3287.68,
'close': 3323.59,
'high': 3334.22,
'low': 3273.86,
'vol': 119644881.0},
{'symbol': '000001.SH',
'dt': '2007-04-09 15:00:00',
'open': 3333.42,
'close': 3398.95,
'high': 3399.51,
'low': 3333.26,
'vol': 137314104.0}]
:param n: int
周期数 N
:return: float
"""
assert
len
(
kn
)
==
n
,
"计算 {} 周期区间百分位时传入的 kn 数量为 {}"
.
format
(
n
,
len
(
kn
))
...
...
@@ -28,13 +51,36 @@ def cal_nbar_percentile(k: dict, kn: List[dict], n: int) -> float:
def
cal_nbar_income
(
k
:
dict
,
kn
:
List
[
dict
],
n
:
int
)
->
float
:
"""计算 N 周期区间收益
:param k: dict
信号出现时的 K 线
信号出现时的 K 线,如:
{'symbol': '000001.SH',
'dt': '2007-04-05 15:00:00',
'open': 3286.16,
'close': 3319.14,
'high': 3326.92,
'low': 3259.63,
'vol': 114528051.0}
:param kn: List[dict]
信号出现后的 N 根 K 线
信号出现后的 N 根 K 线,如:
[{'symbol': '000001.SH',
'dt': '2007-04-06 15:00:00',
'open': 3287.68,
'close': 3323.59,
'high': 3334.22,
'low': 3273.86,
'vol': 119644881.0},
{'symbol': '000001.SH',
'dt': '2007-04-09 15:00:00',
'open': 3333.42,
'close': 3398.95,
'high': 3399.51,
'low': 3333.26,
'vol': 137314104.0}]
:param n: int
周期数 N
:return: float
"""
assert
len
(
kn
)
==
n
,
"计算 {} 周期区间收益时传入的 kn 数量为 {}"
.
format
(
n
,
len
(
kn
))
...
...
test/test_cobra_factor_analyst.py
0 → 100644
浏览文件 @
10bee8c2
# coding: utf-8
import
sys
import
warnings
sys
.
path
.
insert
(
0
,
'.'
)
sys
.
path
.
insert
(
0
,
'..'
)
import
os
import
pandas
as
pd
import
czsc
from
czsc.cobra.factor_analyst
import
cal_nbar_income
,
cal_nbar_percentile
warnings
.
warn
(
"czsc version is {}"
.
format
(
czsc
.
__version__
))
cur_path
=
os
.
path
.
split
(
os
.
path
.
realpath
(
__file__
))[
0
]
# cur_path = "./test"
def
test_nbar
():
file_kline
=
os
.
path
.
join
(
cur_path
,
"data/000001.SH_D.csv"
)
kline
=
pd
.
read_csv
(
file_kline
,
encoding
=
"utf-8"
)
bars
=
kline
.
to_dict
(
"records"
)
i
=
100
n
=
10
k1
=
bars
[
i
]
kn
=
bars
[
i
+
1
:
i
+
n
+
1
]
ni
=
cal_nbar_income
(
k1
,
kn
,
n
)
assert
ni
==
3.91
np
=
cal_nbar_percentile
(
k1
,
kn
,
n
)
assert
np
==
12.94
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录