# 金融 / 财务分析 / 中间函数 ## `allCosts(r_date)` 声明:function 返回成本合计 | 参数 | 类型 | 说明 | | -------- | ------- | ------------ | | `r_date` | integer | 整数,报告期 | 返回:real ### 示例 范例01:2024年年报白云机场的成本合计 ```tsl // 2024年年报白云机场的成本合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250923T); v := AllCosts(20241231); return v; // 输出:6156229603.83 ``` 范例02:指定2024三季报,取白云机场成本合计的TTM ```tsl // 指定2024三季报,取白云机场成本合计的TTM setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250923T); SetSysParam(CT_TTMData(), True); // 计算TTM v := AllCosts(20240930); return v; // 输出:5963808190.57 ``` 范例03:指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的成本合计 ```tsl // 指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的成本合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250923T); setsysparam(CT_YearData(), true); // 计算最近会计年度 setsysparam(CT_RecentYear(), 1); // 最近1年 v := AllCosts(20240331); return v; // 输出:5795008385.86 ``` 范例04:指定2024三季报,取白云机场第三季度单季度的成本合计 ```tsl // 指定2024三季报,取白云机场第三季度单季度的成本合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250923T); SetSysParam(CT_QuarterData(), True); // 计算单季度 v := AllCosts(20240930); return v; // 输出:1555275089.96 ``` 范例05:取白云机场在2019年年报的成本合计调整前与调整后 ```tsl // 取白云机场在2019年年报的成本合计调整前与调整后 // 20210430公布2020年年报对2019年年报中的营业费用数据进行了调整 setsysparam(pn_stock(), 'SH600004'); RDate := 20191231; // 调整前:设置指定日早于调整后公布日 setsysparam(pn_date(), 20200630T); v1 := AllCosts(RDate); // 调整后:设置指定日晚于调整后公布日 setsysparam(pn_date(), 20210630T); v2 := AllCosts(RDate); return array(v1, v2); // 输出:array(6663821465.96,6931545590.87),由于调整前与调整后参与计算的数据有变动,因此结果有差异 ``` ## `ct_getNearestQuarter()` 声明:function 返回字符串常量'GetTheNearest',对应最近季度。 该常量需与CT_QuarterData常量配合使用,返回最近1个季度的数据。比如20120630,将返回20120630季报数据 返回:string ### 示例 范例01:对比设置最近1个季报的数据和手算最近一个季报的数据 ```tsl oV := BackupSystemParameters2(); // 对比设置最近1个季报的数据和手算最近一个季报的数据 setsysparam(pn_stock(), 'SZ000002'); v1 := EPS(20120630); // RP1:20120630净利润、RP2:20120331净利润,20120630季度净利润=RP1-RP2 // 20120630季度每股收益=(RP1-RP2)/TS RP1 := ReportNew(DataBaseRatioId(9), 20120630); RP2 := ReportNew(DataBaseRatioId(9), 20120331); TS := StockTotalShares(inttodate(20120630)); v2 := (RP1-RP2)/TS; SetSysParam(CT_QuarterData(), True); SetSysParam(CT_GetNearestQuarter(), True); v3 := EPS(20120630); return array("20120630报告期数据":v1, "20120331季报数据":v2, "20120630最近1个季报数据":v3); ``` ## `ct_quarterGrowRatio()` 声明:function 返回字符串常量'QuarterGrowRatio',对应季度环比(%)。 该常量需与CT_QuarterData常量配合使用,返回最近1个季度的数据。比如20120630,将返回20120630季报数据 返回:string ### 示例 范例01:调用 CT_QuarterGrowRatio ```tsl oV := BackupSystemParameters2(); { 手算季度环比:报告期RDate季度数据/上一报告期PRDate季度数据-1。 RDate=20120630; PRDate=20120331; PV:PRDate季度主营成本比例(%) PV=PRDate季度主营业务成本/PRDate季度主营业务收入*100 =(PRDate主营业务成本-PRdate1主营业务成本)/(PRDate季度主营业务收入-PRdate1季度主营业务收入)*100 RDate季度环比=PV; } setsysparam(pn_stock(), 'SZ000002'); v1 := MainCostRatio(20120630); PV := (ReportNew(DataBaseRatioId(2), 20120630)-ReportNew(DataBaseRatioId(2), 20120331)) /(ReportNew(DataBaseRatioId(1), 20120630)-ReportNew(DataBaseRatioId(1), 20120331))*100; v2 := PV; SetSysParam(CT_QuarterData(), True); SetSysParam(CT_QuarterGrowRatio(), True); v3 := MainCostRatio(20120630); return array("20120630报告期数据":v1, "20120630季度数据":v2, "20120630最近1个季报数据":v3); ``` ## `ct_recentYear()` 声明:function 返回字符串常量'RecentYear',对应最近N年。 该常量需与最近1个会计年度CT_YearData()配合使用。数据将返回Rdate之前的N个会计年度的数据。比如Rdate为20120331、20120630、20120930或者20121231时,设置CT_RecentYear为2时,将返回20101231的数据 返回:string ### 示例 范例01:对比设置最近2年度和没有设置最近2年度的值 ```tsl oV := BackupSystemParameters2(); // 对比设置最近2年度和没有设置最近2年度的值 setsysparam(pn_stock(), 'SZ000002'); v1 := EPS(20120630); v2 := EPS(20101231); SetSysParam(CT_YearData(), True); setsysparam(CT_RecentYear(), 2); v3 := Call("EPS", 20120630); return array("20120630报告期数据":v1, "20101231报告期数据":v2, "20120630最近2个年度数据":v3); ``` ## `endingBalanceofCashAndEquivalent(r_date)` 声明:function 返回现金及现金等价物的期末余额,与系统参数(证券代码)相关 | 参数 | 类型 | 说明 | | -------- | ------- | ------------ | | `r_date` | integer | 整数,报告期 | 返回:real ### 示例 范例01:2024年年报白云机场的现金及现金等价物的期末余额 ```tsl // 2024年年报白云机场的现金及现金等价物的期末余额 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); v := EndingBalanceofCashAndEquivalent(20241231); return v; // 输出:4718491377.13 ``` 范例02:指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的现金及现金等价物的期末余额 ```tsl // 指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的现金及现金等价物的期末余额 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); setsysparam(CT_YearData(), true); // 计算最近会计年度 setsysparam(CT_RecentYear(), 1); // 最近1年 v := EndingBalanceofCashAndEquivalent(20240331); return v; // 输出:2521546708.25 ``` 范例03:取白云机场在2019年年报的现金及现金等价物的期末余额调整前与调整后 ```tsl // 取白云机场在2019年年报的现金及现金等价物的期末余额调整前与调整后 // 20210430公布2020年年报对2019年年报中的期末现金及现金等价物余额数据进行了调整 setsysparam(pn_stock(), 'SH600004'); RDate := 20191231; // 调整前:设置指定日早于调整后公布日 setsysparam(pn_date(), 20200630T); v1 := EndingBalanceofCashAndEquivalent(RDate); // 调整后:设置指定日晚于调整后公布日 setsysparam(pn_date(), 20210630T); v2 := EndingBalanceofCashAndEquivalent(RDate); return array(v1, v2); // 输出:array(1217482250.72,1228464103.1),由于调整前与调整后参与计算的数据有变动,因此结果有差异 ``` ## `financialItem(r_date, info_id)` 声明:function 计算指定报告期RDate的基本面id为InfoId的财务指标 | 参数 | 类型 | 说明 | | --------- | ------- | -------------- | | `r_date` | integer | 整数,报告期; | | `info_id` | integer | 整数,基本面ID | 返回:real ### 示例 范例01:调用函数 ```tsl // 指定2011年报,取万科A净利润 o_v := BackUpSystemParameters2(); setSysParam(pn_stock(), 'SZ000002'); v := financialItem(20111231, 46033); return v; // 输出:11599606211.77 ``` ## `financialItemPs(r_date, info_id)` 声明:function 计算每股财务指标,公式为财务指标/总股本 | 参数 | 类型 | 说明 | | --------- | ------- | -------------- | | `r_date` | integer | 整数,报告期; | | `info_id` | integer | 整数,基本面ID | 返回:real ### 示例 范例01:调用函数 ```tsl // 指定2011年报,取万科A每股财务指标 o_v := BackUpSystemParameters2(); setSysParam(pn_stock(), 'SZ000002'); v := financialItemPs (20111231, 46033); return v; // 输出:1.05 ``` ## `financialItemRatio(r_date, info_id_1, info_id_2)` 声明:function 计算财务比率,公式为财务指标1/财务指标2 | 参数 | 类型 | 说明 | | ----------- | ------- | --------------- | | `r_date` | integer | 整数,报告期; | | `info_id_1` | integer | 整数,基本面ID; | | `info_id_2` | integer | 整数,基本面ID | 返回:real ### 示例 范例01:调用函数 ```tsl // 指定2011年报,取万科A净利润与股东权益合计的比率(净利润/股东权益合计) o_v := BackUpSystemParameters2(); setSysParam(pn_stock(), 'SZ000002'); v := financialItemRatio(20111231, 46033, 44111); return v; // 输出:0.17 ``` ## `growRatio2(r_date, info_id)` 声明:function 返回环比增长率(%)。根据设置最近12个月(setsysparam(CT_TTMData(),true))、最近一个季度(setsysparam(CT_QuarterData(),true))、最近一个会计年度(setsysparam(CT_YearData(),true))、指定报告期(不设置),取出最近12个月、最近一个季度、最近一个会计年度、指定报告期的当期数据v1和上一个报告期的数据v2,(v1-v2)/abs(v2)\*100即为环比增长率(%) | 参数 | 类型 | 说明 | | --------- | ------- | -------------- | | `r_date` | integer | 整数。报告期 | | `info_id` | integer | 整数。基本面ID | 返回:real ### 示例 范例01:调用函数 ```tsl // 指定2011年报,取万科A每股净资产环比增长率(%) setSysParam(pn_stock(), 'SZ000002'); v := growRatio2(20111231, 42006); return v; // 输出:12.88 ``` ## `growRatioOfHG(r_date, info_id)` 声明:function 计算同比增长率(宏观)(%),公式为(对应基本面id的财务指标数据-去年同期报告期对应基本面id的财务指标数据)/去年同期报告期对应基本面id的财务指标数据\*100 | 参数 | 类型 | 说明 | | --------- | ------- | -------------- | | `r_date` | integer | 整数,报告期; | | `info_id` | integer | 整数,基本面id | 返回:real ### 示例 范例01:调用函数 ```tsl // 指定2011年报,取万科A净利润同比增长率(宏观)(%) o_v := BackUpSystemParameters2(); setSysParam(pn_stock(), 'SZ000002'); v := growRatioOfHg(20111231, 46033); return v; // 输出:31.22 ``` ## `itemToFinancialItem(id, r_date)` 声明:function 返回对照的金融类ID | 参数 | 类型 | 说明 | | -------- | ------- | --------------- | | `id` | integer | 整数,基本面ID; | | `r_date` | integer | 整数,报告期 | 返回:integer ### 示例 范例01:调用函数 ```tsl o_v := BackupSystemParameters2(); setSysParam(pn_stock(), 'SH600000'); // 金融公司资产负债表中的'资产总计' id := itemToFinancialItem(dataBaseRatioId(46), 20111231); v := report(id, 20111231); return array("金融ID":id, "对应的值":v); 注意:结果中返回的金融ID,是使用天软数据对应的ID,如果使用的是别的数据源,对应的ID是不一样的。 ``` ## `nonOperatingDifference(r_date)` 声明:function 返回营业外收支净额 | 参数 | 类型 | 说明 | | -------- | ------- | ------------ | | `r_date` | integer | 整数,报告期 | 返回:real ### 示例 范例01:2024年年报白云机场的营业外收支净额 ```tsl // 2024年年报白云机场的营业外收支净额 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250923T); v := NonOperatingDifference(20241231); return v; // 输出:1402961.42 ``` 范例02:指定2024三季报,取白云机场营业外收支净额的TTM ```tsl // 指定2024三季报,取白云机场营业外收支净额的TTM setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250923T); SetSysParam(CT_TTMData(), True); // 计算TTM v := NonOperatingDifference(20240930); return v; // 输出:1398518.16 ``` 范例03:指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的营业外收支净额 ```tsl // 指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的营业外收支净额 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250923T); setsysparam(CT_YearData(), true); // 计算最近会计年度 setsysparam(CT_RecentYear(), 1); // 最近1年 v := NonOperatingDifference(20240331); return v; // 输出:6462705.93 ``` 范例04:指定2024三季报,取白云机场第三季度单季度的营业外收支净额 ```tsl // 指定2024三季报,取白云机场第三季度单季度的营业外收支净额 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250923T); SetSysParam(CT_QuarterData(), True); // 计算单季度 v := NonOperatingDifference(20240930); return v; // 输出:-1950069.12 ``` 范例05:取白云机场在2019年年报的营业外收支净额调整前与调整后 ```tsl // 取白云机场在2019年年报的营业外收支净额调整前与调整后 // 20210430公布2020年年报对2019年年报中的营业外支出数据进行了调整 setsysparam(pn_stock(), 'SH600004'); RDate := 20191231; // 调整前:设置指定日早于调整后公布日 setsysparam(pn_date(), 20200630T); v1 := NonOperatingDifference(RDate); // 调整后:设置指定日晚于调整后公布日 setsysparam(pn_date(), 20210630T); v2 := NonOperatingDifference(RDate); return array(v1, v2); // 输出:array(11650943.91,7768039.85),由于调整前与调整后参与计算的数据有变动,因此结果有差异 ``` ## `threeExpenses(r_date)` 声明:function 返回三项费用合计,与系统参数(证券代码)相关 | 参数 | 类型 | 说明 | | -------- | ------- | ------ | | `r_date` | integer | 报告期 | 返回:real ### 示例 范例01:2024年年报白云机场的三项费用合计 ```tsl // 2024年年报白云机场的三项费用合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250926T); v := ThreeExpenses(20241231); return v; // 输出:577286851.84 ``` 范例02:指定2024三季报,取白云机场三项费用合计的TTM ```tsl // 指定2024三季报,取白云机场三项费用合计的TTM setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250926T); SetSysParam(CT_TTMData(), True); // 计算TTM v := ThreeExpenses(20240930); return v; // 输出:539794407.65 ``` 范例03:指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的三项费用合计 ```tsl // 指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的三项费用合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250926T); setsysparam(CT_YearData(), true); // 计算最近会计年度 setsysparam(CT_RecentYear(), 1); // 最近1年 v := ThreeExpenses(20240331); return v; // 输出:568608993.59 ``` 范例04:指定2024三季报,取白云机场第三季度单季度的三项费用合计 ```tsl // 指定2024三季报,取白云机场第三季度单季度的三项费用合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250926T); SetSysParam(CT_QuarterData(), True); // 计算单季度 v := ThreeExpenses(20240930); return v; // 输出:154451315.03 ``` 范例05:取白云机场在2019年年报的三项费用合计调整前与调整后 ```tsl // 取白云机场在2019年年报的三项费用合计调整前与调整后 // 20210430公布2020年年报对2019年年报中的营业费用数据进行了调整 setsysparam(pn_stock(), 'SH600004'); RDate := 20191231; // 调整前:设置指定日早于调整后公布日 setsysparam(pn_date(), 20200630T); v1 := ThreeExpenses(RDate); // 调整后:设置指定日晚于调整后公布日 setsysparam(pn_date(), 20210630T); v2 := ThreeExpenses(RDate); return array(v1, v2); // 输出:array(528109417.41,681953437.06),由于调整前与调整后参与计算的数据有变动,因此结果有差异 ``` ## `totalCashIn(r_date)` 声明:function 返回现金流入合计,与系统参数(证券代码)相关 | 参数 | 类型 | 说明 | | -------- | ------- | ------------ | | `r_date` | integer | 整数,报告期 | 返回:real ### 示例 范例01:2024年年报白云机场的现金流入合计 ```tsl // 2024年年报白云机场的现金流入合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); v := TotalCashIn(20241231); return v; // 输出:8577895085.81 ``` 范例02:指定2024三季报,取白云机场现金流入合计的TTM ```tsl // 指定2024三季报,取白云机场现金流入合计的TTM setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); SetSysParam(CT_TTMData(), True); // 计算TTM v := TotalCashIn(20240930); return v; // 输出:7670703406.21 ``` 范例03:指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的现金流入合计 ```tsl // 指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的现金流入合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); setsysparam(CT_YearData(), true); // 计算最近会计年度 setsysparam(CT_RecentYear(), 1); // 最近1年 v := TotalCashIn(20240331); return v; // 输出:7218154136.08 ``` 范例04:指定2024三季报,取白云机场第三季度单季度的现金流入合计 ```tsl // 指定2024三季报,取白云机场第三季度单季度的现金流入合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); SetSysParam(CT_QuarterData(), True); // 计算单季度 v := TotalCashIn(20240930); return v; // 输出:2445692755.73 ``` 范例05:取白云机场在2015年年报的现金流入合计调整前与调整后 ```tsl // 取白云机场在2015年年报的现金流入合计调整前与调整后 // 20170429公布2016年年报对2015年年报中的筹资活动现金流入小计数据进行了调整 setsysparam(pn_stock(), 'SH600004'); RDate := 20151231; // 调整前:设置指定日早于调整后公布日 setsysparam(pn_date(), 20160630T); v1 := TotalCashIn(RDate); // 调整后:设置指定日晚于调整后公布日 setsysparam(pn_date(), 20170630T); v2 := TotalCashIn(RDate); return array(v1, v2); // 输出:array(6042426276.49,6108072646.23),由于调整前与调整后参与计算的数据有变动,因此结果有差异 ``` ## `totalCashOut(r_date)` 声明:function 返回现金流出合计,与系统参数(证券代码)相关 | 参数 | 类型 | 说明 | | -------- | ------- | ------------ | | `r_date` | integer | 整数,报告期 | 返回:real ### 示例 范例01:2024年年报白云机场的现金流出合计 ```tsl // 2024年年报白云机场的现金流出合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); v := TotalCashout(20241231); return v; // 输出:6380980977.95 ``` 范例02:指定2024三季报,取白云机场现金流出合计的TTM ```tsl // 指定2024三季报,取白云机场现金流出合计的TTM setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); SetSysParam(CT_TTMData(), True); // 计算TTM v := TotalCashout(20240930); return v; // 输出:5697553475.4 ``` 范例03:指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的现金流出合计 ```tsl // 指定2024年一季报,取白云机场在报告期时的最近1年的会计年度报告期的现金流出合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); setsysparam(CT_YearData(), true); // 计算最近会计年度 setsysparam(CT_RecentYear(), 1); // 最近1年 v := TotalCashout(20240331); return v; // 输出:6915790881.25 ``` 范例04:指定2024三季报,取白云机场第三季度单季度的现金流出合计 ```tsl // 指定2024三季报,取白云机场第三季度单季度的现金流出合计 setsysparam(pn_stock(), 'SH600004'); setsysparam(pn_date(), 20250930T); SetSysParam(CT_QuarterData(), True); // 计算单季度 v := TotalCashout(20240930); return v; // 输出:1990833026.77 ``` 范例05:取白云机场在2019年三季报的现金流出合计调整前与调整后 ```tsl // 取白云机场在2019年三季报的现金流出合计调整前与调整后 // 20201031公布2020年三季报对2019年三季报中的筹资活动现金流出小计数据进行了调整 setsysparam(pn_stock(), 'SH600004'); RDate := 20190930; // 调整前:设置指定日早于调整后公布日 setsysparam(pn_date(), 20191231T); v1 := TotalCashout(RDate); // 调整后:设置指定日晚于调整后公布日 setsysparam(pn_date(), 20201231T); v2 := TotalCashout(RDate); return array(v1, v2); // 输出:array(7610243745.77,8315668704.67),由于调整前与调整后参与计算的数据有变动,因此结果有差异 ``` ## `workingCapital(r_date)` 声明:function 返回营运资金 | 参数 | 类型 | 说明 | | -------- | ------- | ------------ | | `r_date` | integer | 整数,报告期 | 返回:real ### 示例 范例01:2024年年报格力电器的营运资金 ```tsl // 2024年年报格力电器的营运资金 oV := BackUpSystemParameters2(); setsysparam(pn_stock(), 'SZ000651'); v := WorkingCapital(20241231); return v; // 输出:23677467270.02 ``` 范例02:指定2024年一季报,取格力电器在报告期时的最近1年的会计年度报告期的营运资金 ```tsl // 指定2024年一季报,取格力电器在报告期时的最近1年的会计年度报告期的营运资金 oV := BackUpSystemParameters2(); setsysparam(pn_stock(), 'SZ000651'); setsysparam(CT_YearData(), true); // 计算最近会计年度 setsysparam(CT_RecentYear(), 1); // 最近1年 v := WorkingCapital(20240331); return v; // 输出:27158009714.82 ``` 范例03:取白云机场在2019年年报的营运资金调整前与调整后 ```tsl // 取白云机场在2019年年报的营运资金调整前与调整后 // 20210430公布的2020年年报对2019年年报中的流动资产合计数据进行了调整 setsysparam(pn_stock(), 'SH600004'); RDate := 20191231; // 调整前:设置指定日早于调整后公布日 setsysparam(pn_date(), 20200630T); v1 := WorkingCapital(RDate); // 调整后:设置指定日晚于调整后公布日 setsysparam(pn_date(), 20211024T); v2 := WorkingCapital(RDate); return array(v1, v2); // array(-4506286340.07,-4794148128.5),由于调整前与调整后参与计算的数据有变动,因此结果有差异 ```