因子模型

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中的PDF文件   linux Java打开文件,形成实际用户主页~/   java如何在时间线内维护TableView选择?   java Hibernate注释@Where vs@WhereJoinTable   Java读/写访问异常FileNotFoundException(访问被拒绝)   继承在Java中是否可以扩展最后一个类?   Android HttpClient使用java使应用程序崩溃。lang.OutOfMemoryError:pthread_create   java为什么即使我在proguardproject中添加了jar文件,也会出现这种错误。txt?   如果添加JButton,swing Java FocusListener和KeyListener将无法工作   java使用solrj检索json格式的SolrDocument   使用Microsoft Visual Studio代码进行Java编程   java NoClassDefFoundError:org/apache/log4j/Logger   哈希集中包含相等对象的java   java中的参数化构造函数是否需要有一个主体?   java类似于NetBeans不必要的代码检测器   Java实践问题   java Blackberry“[projectname].调试文件丢失”和“I/O错误:找不到程序”jar