15. 辅助函数

以下函数属于 Tools 子模块, 是其他功能模块共享和调用的辅助函数.

以下示例默认导入了 datetime 和 QuantStudio 模块:

>>>import QuantStudio.api as QS

15.1. 日期时间

DateTime.getMonthLastDateTime(dts)

获取给定时间序列的每月最后一个时点的序列

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每月最后一个时点的序列
返回类型:list(datetime.datetime)
>>>import datetime as dt
>>>QS.Tools.DateTime.getMonthLastDateTime([dt.datetime(2001,1,1),dt.datetime(2014,3,2),dt.datetime(2001,1,2),dt.datetime(2016,10,31),dt.datetime(2016,10,4)])
[datetime.datetime(2001, 1, 2, 0, 0), datetime.datetime(2014, 3, 2, 0, 0), datetime.datetime(2016, 10, 31, 0, 0)]
DateTime.getMonthMiddleDateTime(dts, middle_day=15)

获取给定时间序列的每月中间一个时点的序列, 每月小于等于 middle_day(默认 15) 的最后一天的最后一个时点

参数:
  • dts (list(datetime.datetime)) – 给定的时间序列
  • middle_day (int) – 作为每月中间的分隔日, 默认值 15
返回:

每月中间一个时点的序列

返回类型:

list(datetime.datetime)

DateTime.getMonthFirstDateTime(dts)

获取给定时间序列的每月第一个时点的序列

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每月第一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getWeekLastDateTime(dts)

获取给定时间序列的每周最后一个时点的序列

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每周最后一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getWeekFirstDateTime(dts)

获取给定时间序列的每周第一个时点的序列

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每周第一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getYearLastDateTime(dts)

获取给定时间序列的每年最后一个时点的序列

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每年最后一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getYearFirstDateTime(dts)

获取给定时间序列的每年第一个时点的序列

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每年第一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getQuarterLastDateTime(dts)

获取给定时间序列的每季度最后一个时点的序列

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每季度最后一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getQuarterFirstDateTime(dts)

获取给定时间序列的每季度第一个时点的序列

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每季度第一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getFinancialQuarterLastDateTime(dts)

获取给定时间序列的每财报季度最后一个时点的序列,上年 11 月初至当年 4 月底为第一季度,5 月初至 8 月底为第二季度,9 月初至 10 月底为第三季度

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每财报季度最后一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getFinancialQuarterFirstDateTime(dts)

获取给定时间序列的每财报季度第一个时点的序列,上年 11 月初至当年 4 月底为第一季度,5 月初至 8 月底为第二季度,9 月初至 10 月底为第三季度

参数:dts (list(datetime.datetime)) – 给定的时间序列
返回:每财报季度第一个时点的序列
返回类型:list(datetime.datetime)
DateTime.getDateSeries(start_date, end_date)

获取给定的起始日和终止日之间连续的自然日序列(包括起始日和终止日)

参数:
  • start_date (datetime.date) – 给定的起始日
  • end_date (datetime.date) – 给定的终止日
返回:

自然日序列

返回类型:

list(datetime.date)

DateTime.getTimeSeries(start_time, end_time, timedelta)

获取日内的时间序列

参数:
  • start_time (datetime.time) – 给定的起始时间
  • end_time (datetime.time) – 给定的终止时间
  • timedelta (datetime.timedelta) – 时间间隔
返回:

日内时间序列

返回类型:

list(datetime.time)

DateTime.getDateTimeSeries(start_dt, end_dt, timedelta)

获取时间序列

参数:
  • start_dt (datetime.datetime) – 给定的起始时点
  • end_dt (datetime.datetime) – 给定的终止时间
  • timedelta (datetime.timedelta) – 时间间隔
返回:

时间序列

返回类型:

list(datetime.datetime)

15.2. 数学函数

Math.CartesianProduct(data)

计算若干向量的笛卡尔积

参数:data (list(list)) – 给定的若干个向量
返回:笛卡尔积
返回类型:list(list)
>>>QS.Tools.Math.CartesianProduct([[1,2,3],['a','b']])
[[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b'], [3, 'a'], [3, 'b']]

15.3. 文件操作

File.clearDir(dir_path)

清空给定目录下的所有内容

参数:dir_path (str) – 给定的目录路径
返回:没有成功删除的文件或文件夹数目
返回类型:int
File.listDirDir(dir_path='.')

获取给定目录下所有文件夹的名称列表

参数:dir_path (str) – 给定的目录路径
返回:文件夹名称列表
返回类型:list(str)
File.listDirFile(dir_path='.', suffix='csv')

获取给定目录下给定后缀的文件名称列表

参数:
  • dir_path (str) – 给定的目录路径
  • suffix (str) – 给定的后缀, 如果为 None 表示获取目录下所有文件名称列表
返回:

文件名称列表

返回类型:

list(str)

File.copyDir(source_dir, target_pos, if_exist='replace')

复制源文件夹到指定位置, 如果目标位置下该文件夹已经存在,则根据 if_exist 参数进行操作

参数:
  • source_dir (str) – 源文件夹路径
  • target_pos (str) – 目标位置路径
  • if_exist (str) – 可选:”replace”, “skip”, “replace” 表示覆盖, “skip” 表示放弃复制操作
返回:

ErrorCode

返回类型:

int

File.detectFileEncoding(file_path, big_file=False, size=None)

猜测文件的编码格式

参数:
  • file_path (str) – 待检测的目标文件路径
  • big_file (bool) – 如果是 False, 将读取整个文件内容进行分析, 否则读取部分内容分析
  • size (int) – big_file 为 True 时读取的文件字节数
返回:

{‘confidence’: 置信度, ‘encoding’: 编码格式}, 例如: {‘confidence’: 0.99, ‘encoding’: ‘GB2312’}

返回类型:

dict

File.readCSV2Pandas(filepath_or_buffer, detect_file_encoding=False, **other_args)

支持中文路径的读取 csv 文件为 pandas 对象的函数, 除了 detect_file_encoding 以外其他输入参数同 pandas.read_csv 函数完全一致

参数:detect_file_encoding (bool) – 如果是 True, 将自动检测文件的编码格式
返回:同 pandas.read_csv 函数

15.4. 投资策略

Strategy.calcWealthAfterTrade(p_holding, p_target, wealth, transfee_rate, epsilon=1e-6)

计算在考虑交易费且无交易限制假设下投资组合交易后的财富值, 使用迭代法求解方程:

\[x=wealth-{\left\| x\cdot p_{target}-wealth\cdot p_{holding} \right\|_{1}}\]

通过压缩映射原理可以证明迭代一定收敛

参数:
  • p_holding (Series) – 当前持有的投资组合, Series(权重, index=[ID])
  • p_target (Series) – 目标投资组合, Series(权重, index=[ID])
  • wealth (float) – 当前财富值
  • transfee_rate (float) – 交易费率
  • epsilon (float) – 确认收敛停止迭代的误差界
返回:

交易后的财富值

返回类型:

float

Strategy.calcYieldSeq(wealth_seq, init_wealth=None)

给定净值或价格序列, 计算收益率序列

参数:
  • wealth_seq (array) – 净值或价格序列
  • init_wealth (float) – 初始净值或价格, 若为 None 使用 wealth_seq 的第一个元素
返回:

收益率序列

返回类型:

array

Strategy.calcWealthSeq(yield_seq, init_wealth=None)

给定收益率序列, 计算净值序列

参数:
  • yield_seq (array) – 收益率序列
  • init_wealth (float) – 初始净值或价格, 如果不为 None, 则返回的序列比 yield_seq 多一个元素, 在初始位置添加 init_wealth
返回:

净值序列

返回类型:

array

>>>QS.Tools.Strategy.calcWealthSeq(np.array([0.1,0.04]), init_wealth=1)
array([ 1.   ,  1.1  ,  1.144])
>>>QS.Tools.Strategy.calcWealthSeq(np.array([0.1,0.04]), init_wealth=None)
array([ 1.1  ,  1.144])
Strategy.calcAnnualYield(wealth_seq, num_per_year=252, start_date=None, end_date=None)

给定净值或价格序列, 计算年化收益率

参数:
  • wealth_seq (array) – 净值或价格序列
  • num_per_year (float) – 每年的期数
  • start_date (datetime.date) – 初始日期
  • end_date (datetime.date) – 终止日期, 如果初始日期和终止日期均不为 None, 则使用这两个日期估计 num_per_year
返回:

年化收益率

返回类型:

float

Strategy.calcAnnualVolatility(wealth_seq, num_per_year=252, start_date=None, end_date=None)

给定净值或价格序列, 计算年化波动率

参数:
  • wealth_seq (array) – 净值或价格序列
  • num_per_year (float) – 每年的期数
  • start_date (datetime.date) – 初始日期
  • end_date (datetime.date) – 终止日期, 如果初始日期和终止日期均不为 None, 则使用这两个日期估计 num_per_year
返回:

年化波动率

返回类型:

float

Strategy.calcRollingAnnualYieldSeq(wealth_seq, window=252, min_window=252, num_per_year=252)

给定净值或价格序列, 滚动窗口方式计算年化收益率序列

参数:
  • wealth_seq (array) – 净值或价格序列
  • window (int) – 滚动窗口长度
  • min_window (int) – 可以执行计算的最小窗口长度, 如果回溯日期数小于该参数, 则填充 NaN
  • num_per_year (float) – 每年的期数
返回:

年化收益率序列

返回类型:

array

Strategy.calcRollingAnnualVolatilitySeq(wealth_seq, window=252, min_window=252, num_per_year=252)

给定净值或价格序列, 滚动窗口方式计算年化波动率序列

参数:
  • wealth_seq (array) – 净值或价格序列
  • window (int) – 滚动窗口长度
  • min_window (int) – 可以执行计算的最小窗口长度, 如果回溯日期数小于该参数, 则填充 NaN
  • num_per_year (float) – 每年的期数
返回:

年化波动率序列

返回类型:

array

Strategy.calcExpandingAnnualYieldSeq(wealth_seq, min_window=252, num_per_year=252)

给定净值或价格序列, 扩张窗口方式计算年化收益率序列

参数:
  • wealth_seq (array) – 净值或价格序列
  • min_window (int) – 可以执行计算的最小窗口长度, 如果回溯日期数小于该参数, 则填充 NaN
  • num_per_year (float) – 每年的期数
返回:

年化收益率序列

返回类型:

array

Strategy.calcExpandingAnnualVolatilitySeq(wealth_seq, min_window=252, num_per_year=252)

给定净值或价格序列, 扩张窗口方式计算年化波动率序列

参数:
  • wealth_seq (array) – 净值或价格序列
  • window (int) – 滚动窗口长度
  • min_window (int) – 可以执行计算的最小窗口长度, 如果回溯日期数小于该参数, 则填充 NaN
  • num_per_year (float) – 每年的期数
返回:

年化波动率序列

返回类型:

array

Strategy.calcBeta(wealth_seq, market_wealth_seq)

给定净值或价格序列, 计算 \(\beta\)

参数:
  • wealth_seq (array) – 净值或价格序列
  • market_wealth_seq (array) – 市场净值或价格序列
返回:

\(\beta\)

返回类型:

float

Strategy.calcLPM(wealth_seq, threshold=0.0, order=2)

给定净值或价格序列, 计算收益率的 Lower Partial Moment

参数:
  • wealth_seq (array) – 净值或价格序列
  • threshold (float) – 收益率下限阈值
  • order (int) – 矩的阶数
返回:

Lower Partial Moment

返回类型:

float

Strategy.calcHPM(wealth_seq, threshold=0.0, order=2)

给定净值或价格序列, 计算收益率的 Higher Partial Moment

参数:
  • wealth_seq (array) – 净值或价格序列
  • threshold (float) – 收益率下限阈值
  • order (int) – 矩的阶数
返回:

Higher Partial Moment

返回类型:

float

Strategy.calcSharpeRatio(wealth_seq, risk_free_rate=0.0, expected_return=None)

给定净值或价格序列, 计算 Sharpe 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • risk_free_rate (float) – 无风险利率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Sharpe 比率

返回类型:

float

Strategy.calcAdjustedSharpeRatio(wealth_seq, risk_free_rate=0.0, expected_return=None)

给定净值或价格序列, 计算调整的 Sharpe 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • risk_free_rate (float) – 无风险利率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

调整的 Sharpe 比率

返回类型:

float

Strategy.calcTreynorRatio(wealth_seq, market_wealth_seq, risk_free_rate=0.0, expected_return=None)

给定净值或价格序列,计算 Treynor 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • market_wealth_seq (array) – 市场净值或价格序列
  • risk_free_rate (float) – 无风险利率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Treynor 比率

返回类型:

float

Strategy.calcInformationRatio(wealth_seq, benchmark_wealth_seq)

给定净值或价格序列, 计算信息比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • benchmark_wealth_seq (array) – 基准净值或价格序列
返回:

信息比率

返回类型:

float

Strategy.calcModiglianiRatio(wealth_seq, benchmark_wealth_seq, risk_free_rate=0.0, expected_return=None)

给定净值或价格序列, 计算 Modigliani 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • benchmark_wealth_seq (array) – 基准净值或价格序列
  • risk_free_rate (float) – 无风险利率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Modigliani 比率

返回类型:

float

Strategy.calcSortinoRatio(wealth_seq, risk_free_rate=0.0, target_return=0.0, expected_return=None)

给定净值或价格序列,计算 Sortino 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • risk_free_rate (float) – 无风险利率
  • target_return (float) – 目标收益率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Sortino 比率

返回类型:

float

Strategy.calcOmegaRatio(wealth_seq, risk_free_rate=0.0, target_return=0.0, expected_return=None)

给定净值或价格序列, 计算 Omega 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • risk_free_rate (float) – 无风险利率
  • target_return (float) – 目标收益率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Omega 比率

返回类型:

float

Strategy.calcKappaThreeRatio(wealth_seq, risk_free_rate=0.0, target_return=0.0, expected_return=None)

给定净值或价格序列, 计算 Kappa3 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • risk_free_rate (float) – 无风险利率
  • target_return (float) – 目标收益率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Kappa3 比率

返回类型:

float

Strategy.calcGainLossRatio(wealth_seq, target_return=0.0)

给定净值或价格序列, 计算盈亏比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • target_return (float) – 目标收益率
返回:

盈亏比率

返回类型:

float

Strategy.calcUpsidePotentialRatio(wealth_seq, target_return=0.0)

给定净值或价格序列, 计算 Upside Potential Ratio

参数:
  • wealth_seq (array) – 净值或价格序列
  • target_return (float) – 目标收益率
返回:

Upside Potential Ratio

返回类型:

float

Strategy.calcVaR(wealth_seq, alpha=0.05, method="Historical")

给定净值或价格序列, 计算 VaR 和 CVaR

参数:
  • wealth_seq (array) – 净值或价格序列
  • alpha (float) – 置信水平
  • method (str) – 计算方法, 可选 “Historical”, “Norm” 或者 “Cornish-Fisher”
返回:

(VaR, CVaR)

返回类型:

tuple

Strategy.calcUpPeriod(wealth_seq)

给定净值或价格序列, 计算净值或价格上升区间

参数:wealth_seq (array) – 净值或价格序列
返回:(净值或价格上升区间, 净值或价格上升索引位置), 元素个数为偶数, 两两组成一个区间
返回类型:tuple
>>>a = np.array([ 3.327461, 1.869487, 2.731358, 3.764781, 4.036605, 2.613911, 4.054651,  4.6229, 2.696089, 0.639644])
>>>QS.Tools.Strategy.calcUpPeriod(a)
(array([1.869487, 4.036605, 2.613911, 4.6229  ]), array([1, 4, 5, 7]))
Strategy.calcDownPeriod(wealth_seq)

给定净值或价格序列, 计算净值或价格下降区间

参数:wealth_seq (array) – 净值或价格序列
返回:(净值或价格下降区间, 净值或价格下降索引位置), 元素个数为偶数, 两两组成一个区间
返回类型:tuple
>>>a = np.array([ 3.327461, 1.869487, 2.731358, 3.764781, 4.036605, 2.613911, 4.054651,  4.6229, 2.696089, 0.639644])
>>>QS.Tools.Strategy.calcDownPeriod(a)
(array([3.327461, 1.869487, 4.036605, 2.613911, 4.6229  , 0.639644]), array([0, 1, 4, 5, 7, 9]))
Strategy.calcDrawdown(wealth_seq)

给定净值或价格序列, 计算回撤序列

参数:wealth_seq (array) – 净值或价格序列
返回:(最大回撤(float), 最大回撤开始位置(int), 最大回撤结束位置(int), 回撤序列(array))
返回类型:tuple
>>>a = np.array([ 3.327461, 1.869487, 2.731358, 3.764781, 4.036605, 2.613911, 4.054651,  4.6229, 2.696089, 0.639644])
>>>QS.Tools.Strategy.calcDrawdown(a)
(-0.86163576975491574,
 7,
 9,
 array([ 0.        , -0.43816411, -0.1791465 ,  0.        ,  0.        ,
       -0.35244816,  0.        ,  0.        , -0.41679703, -0.86163577]))
Strategy.calcMaxDrawdownRate(wealth_seq)

给定净值或价格序列, 计算最大回撤

参数:wealth_seq (array) – 净值或价格序列
返回:(最大回撤(float), 最大回撤开始位置(int), 最大回撤结束位置(int))
返回类型:tuple
Strategy.calcMaxDrawdownRateEx(wealth_seq)

给定净值或价格序列, 计算最大回撤, 计算速度比 calcMaxDrawdownRate() 快.

参数:wealth_seq (array) – 净值或价格序列
返回:(最大回撤(float), 最大回撤开始位置(int), 最大回撤结束位置(int))
返回类型:tuple
Strategy.calcMaxDrawdownRateExEx(wealth_seq)

给定净值或价格序列, 计算最大回撤, 计算速度比 calcMaxDrawdownRateEx() 快.

参数:wealth_seq (array) – 净值或价格序列
返回:(最大回撤(float), 最大回撤开始位置(int), 最大回撤结束位置(int))
返回类型:tuple
Strategy.calcPeriodDrawdown(wealth_seq, tau)

给定净值或价格序列和期限, 计算给定期限的最大回撤

参数:
  • wealth_seq (array) – 净值或价格序列
  • tau (int) – 期限长度
返回:

最大回撤

返回类型:

float

Strategy.calcAverageDrawdown(wealth_seq, periods)

给定净值或价格序列和期限, 计算给定期限内的平均回撤

参数:
  • wealth_seq (array) – 净值或价格序列
  • periods (int) – 期限长度
返回:

平均回撤率

返回类型:

float

Strategy.calcAverageDrawdownSquared(wealth_seq, periods)

给定净值或价格序列和期限, 计算给定期限内的平均回撤平方

参数:
  • wealth_seq (array) – 净值或价格序列
  • periods (int) – 期限长度
返回:

平均回撤平方

返回类型:

float

Strategy.calcCalmarRatio(wealth_seq, risk_free_rate=0.0, expected_return=None)

给定净值或价格序列, 计算 Calmar 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • risk_free_rate (float) – 无风险利率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Calmar 比率

返回类型:

float

Strategy.calcSterlingRatio(wealth_seq, periods, risk_free_rate=0.0, expected_return=None)

给定净值或价格序列和期限, 计算 Sterling 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • periods (int) – 期限长度
  • risk_free_rate (float) – 无风险利率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Sterling 比率

返回类型:

float

Strategy.calcBurkeRatio(wealth_seq, periods, risk_free_rate=0.0, expected_return=None)

给定净值或价格序列和期限, 计算 Burke 比率

参数:
  • wealth_seq (array) – 净值或价格序列
  • periods (int) – 期限长度
  • risk_free_rate (float) – 无风险利率
  • expected_return (float) – 预期收益率, 如果为 None 则使用 wealth_seq 导出的收益率序列均值
返回:

Burke 比率

返回类型:

float

Strategy.calcTMModel(wealth_seq, market_wealth_seq, risk_free_rate=0.0)

给定净值或价格序列, 使用 T-M 二项式模型, 评价策略的择时能力和选股能力

参数:
  • wealth_seq (array) – 净值或价格序列
  • market_wealth_seq (array) – 市场净值或价格序列
  • risk_free_rate (float) – 无风险利率
返回:

回归系数, (\(\alpha\) , \(\beta\), \(\beta^2\))

返回类型:

tuple

Strategy.calcHMModel(wealth_seq, market_wealth_seq, risk_free_rate=0.0)

给定净值或价格序列, 使用 H-M 双贝塔模型, 评价策略的择时能力和选股能力

参数:
  • wealth_seq (array) – 净值或价格序列
  • market_wealth_seq (array) – 市场净值或价格序列
  • risk_free_rate (float) – 无风险利率
返回:

回归系数, (\(\alpha\) , \(\beta\), \(\beta^+\))

返回类型:

tuple

Strategy.calcCLModel(wealth_seq, market_wealth_seq, risk_free_rate=0.0)

给定净值或价格序列, 使用 C-L 模型, 评价策略的择时能力和选股能力

参数:
  • wealth_seq (array) – 净值或价格序列
  • market_wealth_seq (array) – 市场净值或价格序列
  • risk_free_rate (float) – 无风险利率
返回:

回归系数, (\(\alpha\) , \(\beta^-\), \(\beta^+\))

返回类型:

tuple

Strategy.genRandomPortfolio(ids, target_num=20, weight=None)

生成随机投资组合

参数:
  • ids (list(str)) – ID 列表
  • target_num (int) – 目标数量
  • weight (Series) – 权重数据, Series(权重, index=ids), 为 None 则等权
返回:

投资组合, Series(权重, index=[ID])

返回类型:

Series

Strategy.genPortfolioByFiltration(factor_data, ascending=False, target_num=20, target_quantile=0.1, weight=None)

以筛选的方式形成投资组合

参数:
  • factor_data (Series) – 因子数据, Series(因子值, index=[ID])
  • ascending (bool) – 是否升序排列
  • target_num (int) – 目标最大 ID 数量
  • target_quantile (float) – 目标选择的百分比
  • weight (Series) – 权重数据, Series(权重, index=ids), 为 None 则等权
返回:

投资组合, Series(权重, index=[ID])

返回类型:

Series

15.5. GUI

QtGUI.showOutput(output, plot_engine="matplotlib")

以 GUI 的方式查看数据集.

参数:output (dict) – 数据集, 嵌套的字典, 树状结构, 叶节点是 DataFrame, 回测模型或者回测模块方法 output 的返回值即是此种结构, 比如:
TestData = {"Bar1": {"a": {"a1": pd.DataFrame(np.random.rand(11,3), columns=['b','c','d']),
                           "a2": pd.DataFrame(np.random.rand(10,2))},
                     "b": pd.DataFrame(['a']*150, columns=['c'])},
            "Bar2": pd.DataFrame(np.random.randn(3,2), index=["b1", "b2", "b3"])}
参数:plot_engine (str) – 绘图所用的模块, 可选: “matplotlib”, “plotly”
返回:None
返回类型:None
QtGUI.showFactorDB(fdb)

以 GUI 的方式查看因子库.

参数:fdb (FactorDB) – 因子库对象
返回:None
返回类型:None
QtGUI.showFactor(factor)

以 GUI 的方式查看因子数据.

参数:factor (Factor) – 因子对象
返回:None
返回类型:None
QtGUI.setDateTime(dts=[], dates=[], times=[], ft=None)

以 GUI 的方式设置日期时间

参数:
  • dts (list(datetime.datetime)) – 初始的时间点序列
  • dates (list(datetime.date)) – 初始的日期序列
  • times (list(datetime.time)) – 初始的时间序列
  • ft (FactorTable) – 因子表对象
返回:

(新的时间点序列, 新的日期序列, 新的时间序列)

返回类型:

(list(datetime.datetime), list(datetime.date), list(datetime.time))

QtGUI.setID(ids=[], ft=None)

以 GUI 的方式设置 ID

参数:
  • ids (list(str)) – 初始的 ID 序列
  • ft (FactorTable) – 因子表对象
返回:

新的 ID 序列

返回类型:

list(str)