# 回测 / 市场状态轮盘 ## `TS_MarketStateAnalysis` 声明:class 基于市场状态的轮盘配置框架 ### `fBegT` 声明:field 开始日 incyear(today(),-1) 可见性:`public` 类型:date ### `fEndT` 声明:field 截止日 today() 可见性:`public` 类型:date ### `fCycle` 声明:field 调仓周期 cy_month() 可见性:`public` 类型:string ### `fIndexID` 声明:field 基准指数 SH000300 可见性:`public` 类型:string ### `fStateData` 声明:field 状态数据 Array() 可见性:`public` 类型:array ### `fuStateName` 声明:field 未定义状态名称 "未定义" 可见性:`public` 类型:string ### `fAllocationMethod` 声明:field 配置方法 0 可见性:`public` 类型:int ### `fAllocationData` 声明:field 配置数据 Array() 可见性:`public` 类型:array ### `getAssetWeight(v_beg_t, v_end_t, cy, typ)` 声明:function 获取指定区间与周期的资产权重序列 可见性:`public` | 参数 | 类型 | 说明 | | --------- | -------- | -------------------------------------------------------------------------------------------------- | | `v_beg_t` | datetime | DateTime,区间开始日 | | `v_end_t` | datetime | DateTime,区间截止日 | | `cy` | string | String,周期 | | `typ` | integer | Int,资产列名输出格式,具体如下表: 取值 含义 备注 1 代码 如:SH000300【默认】 2 名称 如:沪深 300 | 返回:array ### `getAssetReturn(v_beg_t, v_end_t, typ)` 声明:function 此方法用于获取各资产区间收益率与累计收益率序列,此收益为资产加入组合后的收益,未 可见性:`public` | 参数 | 类型 | 说明 | | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `v_beg_t` | datetime | DateTime,区间开始日 | | `v_end_t` | datetime | DateTime,区间截止日 | | `typ` | integer | Int,资产列名输出格式,具体如下表: 取值 含义 备注 1 代码 如:SH000300,SH000300->累计 【默认】 2 名称 如:沪深 300,沪深 300->累计 3 代码+名称 如:沪深 300(SH000300),沪深 300(SH000300)->累计 | 返回:array ### `getAssetAttriResult()` 声明:function 此方法用于获取资产归因数据,包含代码,名称,收益贡献(%)(累计、累计年化、贡献比例 可见性:`public` 返回:array ### `getAssetContriDetail(v_beg_t, v_end_t, typ)` 声明:function 此方法用于获取区间资产累计贡献数据 可见性:`public` | 参数 | 类型 | 说明 | | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `v_beg_t` | datetime | DateTime,区间开始日 | | `v_end_t` | datetime | DateTime,区间截止日 | | `typ` | integer | Int,资产列名输出格式,具体如下表: 取值 含义 备注 1 代码 如:SH000300【默认】 2 名称 如:沪深 300 3 代码+名称 如:沪深 300(SH000300) | 返回:array ### `getPerformance(v_beg_t, v_end_t, qk_type, cy)` 声明:function 获取不同区间的收益与风险评价指标 可见性:`public` | 参数 | 类型 | 说明 | | --------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `v_beg_t` | datetime | DateTime,区间开始日 | | `v_end_t` | datetime | DateTime,区间截止日 | | `qk_type` | integer | Int,区间类型 取值 含义 备注 0 固定周期 如:年线、季线、月线,与参数 cy 相关 1 滚动周期 包括:本月/季/半年/年、最近 1/3/6 月、最近 1/3/5 年、成立以来 | | `cy` | string | String,固定周期 | 返回:array ### `getPortBenchReturn(v_beg_t, v_end_t)` 声明:function 返回区间组合与基准的收益、累计收益、最大回撤序列 可见性:`public` | 参数 | 类型 | 说明 | | --------- | -------- | -------------------- | | `v_beg_t` | datetime | DateTime,区间开始日 | | `v_end_t` | datetime | DateTime,区间截止日 | 返回:array ### `getHoldData(v_beg_t, v_end_t, cy)` 声明:function 与父类回测框架相比,此接口新增 cy 参数,控制持仓明细返回的周期,支持返回最新、固定 可见性:`public` | 参数 | 类型 | 说明 | | --------- | -------- | ------------------------------------------------------------- | | `v_beg_t` | datetime | DateTime,区间开始日 | | `v_end_t` | datetime | DateTime,区间截止日 | | `cy` | string | String,周期,若 cy 为 nil 或空字符串,表示获取最新的持仓明细 | 返回:array ### `getStateByEndT(v_end_t)` 声明:function 此方法用于获取指定日状态数据,用户可重写,字段包含【截止日】、【状态】 可见性:`public` | 参数 | 类型 | 说明 | | --------- | -------- | ---------------- | | `v_end_t` | datetime | DateTime,截止日 | 返回:array ### `getAllocationByEndT(v_end_t)` 声明:function 此方法用于获取配置数据,用户可重写,默认为输入的成员变量 FAllocationData 可见性:`public` | 参数 | 类型 | 说明 | | --------- | -------- | ---------------- | | `v_end_t` | datetime | DateTime,截止日 | 返回:array ### `getStateDetail(beg_t, end_t, cycle)` 声明:function 此方法用于获取按周期划分的每个周期状态,字段包含【截止日】、【状态】 可见性:`public` | 参数 | 类型 | 说明 | | ------- | -------- | -------------------- | | `beg_t` | datetime | DateTime,区间开始日 | | `end_t` | datetime | DateTime,区间截止日 | | `cycle` | string | String,周期 | 返回:array ### `getStateStatistics(beg_t, end_t, if_annual)` 声明:function 统计各市场状态的次数、占比及对应组合和基准的收益风险指标 可见性:`public` | 参数 | 类型 | 说明 | | ----------- | -------- | -------------------------------------------- | | `beg_t` | datetime | DateTime,区间开始日 | | `end_t` | datetime | DateTime,区间截止日 | | `if_annual` | boolean | Bool,是否年化,默认为 0,表示输出指标不年化 | 返回:array ### `getStateNAV(beg_t, end_t)` 声明:function 此方法用于获取各状态区间每日收益数据,包含净值收益率(%)、基准收益率(%)、超额收益 可见性:`public` | 参数 | 类型 | 说明 | | ------- | -------- | -------------------- | | `beg_t` | datetime | DateTime,区间开始日 | | `end_t` | datetime | DateTime,区间截止日 | 返回:array ### `getTradeData(beg_t, end_t)` 声明:function 此方法用于获取回测交易明细数据 可见性:`public` | 参数 | 类型 | 说明 | | ------- | -------- | -------------------- | | `beg_t` | datetime | DateTime,区间开始日 | | `end_t` | datetime | DateTime,区间截止日 | 返回:array ### `getHoldData(beg_t, end_t)` 声明:function 此方法用于获取回测持仓明细 可见性:`public` | 参数 | 类型 | 说明 | | ------- | -------- | -------------------- | | `beg_t` | datetime | DateTime,区间开始日 | | `end_t` | datetime | DateTime,区间截止日 | 返回:array ### `getPortfolioReturn(beg_t, end_t)` 声明:function 此方法用于获取区间组合累计收益率 可见性:`public` | 参数 | 类型 | 说明 | | ------- | -------- | -------------------- | | `beg_t` | datetime | DateTime,区间开始日 | | `end_t` | datetime | DateTime,区间截止日 | 返回:real ### `getStateGroupNAV(beg_t, end_t, return_type)` 声明:function 获取不同状态下,组合与基准的收益情况 可见性:`public` | 参数 | 类型 | 说明 | | ------------- | -------- | -------------------------------------------------------------------------------- | | `beg_t` | datetime | DateTime,区间开始日 | | `end_t` | datetime | DateTime,区间截止日 | | `return_type` | integer | 返回收益类型 取值 含义 0 仅返回收益(默认) 1 仅返回累计收益 2 返回收益+累计收益 | 返回:array ### `getStateGroupAttri(if_annual, return_type)` 声明:function 获取不同状态下,各个资产对组合绝对收益、风险的贡献情况 可见性:`public` | 参数 | 类型 | 说明 | | ------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | `if_annual` | boolean | Bool,是否年化,默认为 0,表示输出指标不年化 | | `return_type` | integer | 返回类型 取值 含义 0 按照"状态"横排展示,仅输出收益贡献(%)与风险贡献(%) 1 按照"状态"竖排展示,输出收益和风险贡献(%)相关的多个指标(默认) | 返回:array