# 量化交易 / 冲击成本

## `ts_ImpactCost`

声明：class

冲击成本计算框架

<!-- tags: 交易成本 市场冲击 成交滑点 -->

### `FStockID`

声明：field

交易代码 "SZ000001"

可见性：`public`

类型：string

### `FTradeEndT`

声明：field

交易截止日 StockEndTAfterNDay(today(),1)

可见性：`public`

类型：date

### `FTradeTime`

声明：field

交易持续时间 1 天

可见性：`public`

类型：real

### `FTradeVol`

声明：field

交易数量 100000

可见性：`public`

类型：integer

### `FSigmaN`

声明：field

日波动率计算天数 10

可见性：`public`

类型：integer

### `FVolN`

声明：field

市场日成交量计算天数 10

可见性：`public`

类型：integer

### `FFitN`

声明：field

拟合天数 250

可见性：`public`

类型：real

### `FFitTradeType`

声明：field

拟合交易类型 3：成交量占比最大法

可见性：`public`

类型：integer

### `FFitObjType`

声明：field

拟合目标类型 0：对数

可见性：`public`

类型：integer

### `Main()`

声明：function

一次性接入类中所有方法

<!-- tags: 执行 冲击成本 模型计算 -->

可见性：`public`

### `GetParams_Power(stock_id, end_t)`

声明：function

获取幂指数参数，框架中默认将交易日作为截止日，用户通过重写函数给出参数值。用户进

<!-- tags: 查询 买卖 交易策略 基准指数 指数产品 -->

可见性：`public`

| 参数       | 类型     | 说明                 |
| ---------- | -------- | -------------------- |
| `stock_id` | string   | 股票代码，字符串类型 |
| `end_t`    | datetime | 截止日，日期类型     |

返回：array

### `GetPredictData(stock_id, end_t)`

声明：function

预测市场日成交量以及日波动率（%）。框架中默认将交易日作为截止日，市场日成交量为截

<!-- tags: 查询 预估 风险波动 买卖 交易策略 市场行情 市场状态 -->

可见性：`public`

| 参数       | 类型     | 说明                 |
| ---------- | -------- | -------------------- |
| `stock_id` | string   | 股票代码，字符串类型 |
| `end_t`    | datetime | 截止日，日期类型     |

返回：array

### `GetImpactCostEstimatedValue()`

声明：function

获取已实现冲击成本（BP），单位 BP

<!-- tags: 查询 已实现冲击 冲击成本 BP -->

可见性：`public`

返回：real

### `GetImpactCostEstimatedDetail()`

声明：function

获取冲击成本预测详情，包含"永久性冲击成本（BP）"、"暂时性冲击成本（BP）"、

<!-- tags: 查询 预估 交易成本 -->

可见性：`public`

返回：array

### `GetFitParams()`

声明：function

获取拟合参数结果𝛼, 𝛽, 𝛾, 𝜂

<!-- tags: 查询 冲击成本 幂指数参数 模型参数 参数估计 -->

可见性：`public`

返回：array

#### 示例

范例01：按成交量占比最大法获取单个交易日的下单交易明细

```tsl
obj := new ts_Stock_ImpactModel();
ret := obj.FitImpactCostByQK_Power("SH600000", 1, 20220101T, 3);
echo toStn(ret);
return ret;
// 输出：
// array(
// ("截止日":"2021-12-31 09:40:00","代码":"SH600000","名称":"浦发银行","开始买入价":8.54,"冲击消失价":8.57,"总买入量":1527043.0,"市场成交量":22929621.0,"标准化成交量":0.0665969577081104,"VWAP":8.55389402917927,"已实现冲击(BP)":16.2693550108561,"永久性冲击(BP)":35.1288056206101,"暂时性冲击(BP)":-1.29504779944889,"收益率波动(%)":0.67217756574394,"备注":NIL),
// ("截止日":"2021-12-31 10:20:00","代码":"SH600000","名称":"浦发银行","开始买入价":8.56,"冲击消失价":8.54,"总买入量":-1351000.0,"市场成交量":22929621.0,"标准化成交量":-0.0589194213022535,"VWAP":8.54792968171725,"已实现冲击(BP)":-14.1008391153674,"永久性冲击(BP)":-23.3644859813098,"暂时性冲击(BP)":-2.41859612471251,"收益率波动(%)":0.67217756574394,"备注":NIL),
// ("截止日":"2021-12-31 14:30:00","代码":"SH600000","名称":"浦发银行","开始买入价":8.54,"冲击消失价":8.54,"总买入量":-493733.0,"市场成交量":22929621.0,"标准化成交量":-0.0215325408126022,"VWAP":8.53410243998274,"已实现冲击(BP)":-6.90580798273444,"永久性冲击(BP)":0.0,"暂时性冲击(BP)":-6.90580798273444,"收益率波动(%)":0.67217756574394,"备注":NIL))
```
