因子模型

multi-factor-model的Python项目详细描述


这个项目是用机器把α因子合并成一个因子 学习技巧。

依赖关系

  • Python3.5
  • 熊猫0.22.0
  • 纽比1.14.3
  • 泡菜
  • sklearn 0.19.1
  • 数据库

示例

预处理数据

首先创建一个包含原始因素和市场信息的数据库对象。 更多信息请参见项目databox

from databox import databox
db=databox()\
    .load_indestry(ind)\
    .load_indexWeight(ind_weight)\
    .load_suspend(sus)\
    .load_adjPrice(price)\
    .set_lag(freq='d',day_lag=1)for fac_name,fac_df in factors_dictionary.items():
    db.add_factor(fac_name,fac_df)
db.align_data()\
  .factor_ind_neutral()\
  .factor_size_neutral()

然后将您的数据保存起来,用于模型培训

sp=sample_pipeline()\
    .set_fw_return_n(1)\
    .set_sample_n(1)\
    .factor_rank()\
    .factor_zscore()\
    .fw_return_ind_neutral()\
    .fw_return_rank()\
    .fw_return_I(thresh=2000)

请注意,为了更好地建模,所有返回都乘以100。

选项:
set_fw_return设置要向前计算的天数 return;
set_sample_n是设置在一个示例中使用的天数;
factor_rank是对每个样本中的所有因素进行排序;
factor_zscore用于规范化每个示例中的因子;
fw_return_ind_neutral将抵消行业的回报。如果 投资组合受到行业限制,这可能会改善 培训结果;
fw_return_rank将返回值转换为它们在每个示例中的排名;
fw_return_I将返回转换为0或1,指示 返回值大于或等于阈值;

现在将示例创建为

X_train,y_train=sp.train_set(db)
X_test,y_test=sp.test_set(db)X_test_all=sp.test_X(db)

建模

分类方法

from sklearn.ensemble import RandomForestClassifier
clf=RandomForestClassifier()
tn,tt,ml=clf_model(clf,X_train,y_train,X_test,y_test)

其中y可以是0/1或float,结果是tn(train)和tt (测试)会因此而有所不同。如果clf是基于树的 模型ml将是特性重要性。如果clf是线性模型, ml将是coffient。

我们还可以通过组合几个模型来创建一个模型。

from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
clf1=RandomForestClassifier()clf2=LogisticRegression()clf3=SVC()
from multi_factor_model import combine_clf_models
CLF=combine_clf_models()\
    .add_clf('rf',clf1)\
    .add_clf('lr',clf2)\
    .add_clf('svc',clf3,weight=2)#default weight is 1
tn,tt,ml=clf_model(CLF,X_train,y_train,X_test,y_test)

回归方法与分类方法相同,使用reg_modelas 将clf_modelcombine_reg_models替换为 combine_clf_models

综合系数

import pandas as pd
value=CLF.predict_proba(X_test_all)factor=pd.Series(value[:,1],index=X_test_all.index)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无法在Java Android中比较字符串   java Month二月在下面的程序中被解析为'33'。如何修复?   用于在方法调用中显式指定泛型参数的Javasyntax   java 安卓。操作系统。NetworkOnMainThread尝试与jsoup 安卓连接时出现异常   java Spring引导找不到jsp视图   java如何访问注释中的属性值?   反射我可以使用isAssignableFrom检查C1是Java中C2的子类型吗?   java如何在selenium中从HTTP服务器传递图像URL   java导入失败。hibernate中的sql   Java中的“断开”while循环   java如何向Spark数据集添加映射列?   java应该在中部署消息驱动bean。耳文件?   java为何如此悲观。在springboot JPA中写入不起作用?   web服务如何在Java中高效地管理文件系统上的文件?   Java验证日期条目   java错误:在AWS RDS上找不到适合数据库的驱动程序   java如何将OBJ文件面定义传递给openGL