R和统计 2:多因子模型的实践

大致思路:

从06年开始提取股票数据,到11年结束,为历史数据期,然后从12年到13年10月为回测期间。开始每月调整权重。

本文分为三部分

1. 因子设计

2. 数据整理

思考了一下,还是放弃大矩阵的思想。在R里面要多利用神奇的Vector和data frame啊。做成单因子data frame。

3. 回归分析

因子的处理本来就很奇葩了,还要价格回归价格,略蛋疼。

 

=======神奇的分割线==============

 

确定一个数据整理的框架。我认为数据整理就是一个不断降维的过程。

首先,拿到所有的数据,row <- trading time, col <- raw data

考虑到,不同数据,trading time不能对齐,有的多有的少。稀疏矩阵处理也不是很方便。而且很明显这是matlab里面的做法。

dataframe拼接也颇有不便。自动循环,额,要是有字典就好了。算了,直接分开存了所有的变量。 

(回过头来看如果刚开始做,这样sql拼成表的方法确实是最直观的方式,但是有了这个基础进行改进,这种循环嵌套拿滞后项的操作应该不及内存操作,尤其像利润表那个四个季度利润处理)

PB:  ClosePrice, TotalShares, SEWithoutMI

C: QT_DailyQuote  日行情库表

I:LC_ShareStru 公司股本结构变动

H: LC_BalanceSheetAll 资产负债表

U: 一年前最近的资产负债表

C.ClosePrice*I.TotalShares/NULLIF(H.SEWithoutMI,0) AS PB_ratio,

 

PS: ClosePrice,TotalShares, OperatingRevenue

J: // 滞后一年的股本结构表

K: 同下  // 最近一期

L:  同下  //滞后一季

M: LC_QIncomeStatementNew 单季利润表_新会计准则  //滞后两季,二四季度可能不准确

N: //同上,滞后三季

C.ClosePrice*(I.TotalShares + J.TotalShares)/2/nullif((K.OperatingRevenue + L.OperatingRevenue + M.OperatingRevenue + N.OperatingRevenue),0) AS PS_ratio

 

PC: 3个表

P/Cash Earnings:现金盈利使用净营运现金流

O,P,Q: LC_QCashFlowStatementNew 单季现金流量表_新会计准则

C.ClosePrice*(I.TotalShares + J.TotalShares)/2/nullif((O.NetOperateCashFlow + P.NetOperateCashFlow + Q.NetOperateCashFlow + R.NetOperateCashFlow),0) AS PC_ratio,

 

EV/EBITA: 3个表

EV计算

企业价值=股票市值+净债务,净债务=负债总额-应付工资-应付福利费-应付股利-应交税金-其他应交款-预提费用-住房周转金-递延税款贷项;

(C.ClosePrice*I.TotalShares + H.TotalLiability - (isnull(H.AccountsPayable,0)+isnull(H.AdvanceReceipts,0)+isnull(H.SalariesPayable,0)+isnull(H.TaxsPayable,0)+isnull(H.OtherPayable,0)+isnull(H.AccruedExpense,0)+isnull(H.DeferredProceeds,0)+isnull(H.OtherCurrentLiability,0))-(isnull(H.TotalNonCurrentLiability,0)-isnull(H.LongtermLoan,0)-isnull(H.BondsPayable,0))-isnull(H.CashEquivalents,0))

 

EBITDA计算 一个表

 (K.TotalProfit+L.TotalProfit+M.TotalProfit+N.TotalProfit+K.FinancialExpense+L.FinancialExpense+M.FinancialExpense+N.FinancialExpense+isnull(S.FixedAssetDepreciation,0)+isnull(S.IntangibleAssetAmortization,0)+isnull(S.DeferredExpenseAmort,0))  AS EV_EBITDA,

 

RV:

Replacement Value 重置成本: (Market value of equity + book value of debt) / Book value of assets

(I.TotalShares*C.ClosePrice + H.TotalLiability)/nullif(H.TotalAssets,0) AS RV_ratio,

 

PE: P/E Ratio 两个表

Earnings 采用归属于母公司所有者的净利润

C.ClosePrice*(I.TotalShares + J.TotalShares)/2/nullif((K.NPFromParentCompanyOwners + L.NPFromParentCompanyOwners + M.NPFromParentCompanyOwners + N.NPFromParentCompanyOwners),0) AS PE_ratio,

 

这是直接取的平安银行的,虽然不让这么干,但是可以比较下。

 

Trend in Analyst Revision Index

Cash Flow from Operations:

Cash Flow to Invested Capital: (计算公式最长)

 

Asset turnover: Net Sales Revenue/Average Total Assets

Operating margin = operating income/revenue

Sales Per Employee

 

 ======1217 END===========

=======1218 BEGIN=========

开始了一致预期的工作,

取出了数据,确定了代码结构

写在自己的文档里面了...

 

======1218 END ===========

 

 

posted on 2013-12-17 17:49  surghost  阅读(729)  评论(0编辑  收藏  举报

导航