基于QuantConnect开源引擎Lean本地实现Fama-French五因子Python策略

概要

基于QuantConnect的开源Lean引擎,生成本地数据源,并实现运行Python语言的Fama-French五因子策略

开发环境

  • VS2022企业版,需要安装C#和Python组件;
  • Anaconda3-2020.11-Windows-x86_64,这个版本对应Python3.8,是根据Lean环境要求选择的;
  • git clone https://github.com/QuantConnect/Lean.git下载的Lean框架;

操作流程

  1. VS2022打开Lean工程,F5运行一遍进行Nuget包还原;
  2. Anaconda安装时需要选中注册环境变量,安装好后,pip install quantconnect-stubs安装包;
  3. Data\equity\usa下将daily、factor_files、fundamental、map_files文件夹清空自带Symbol;
  4. ToolBox\RandomDataGenerator下修改生成指定格式的Symbol;
        public IEnumerable<Symbol> GenerateRandomSymbols()
        {
   
            if (!Settings.Tickers.IsNullOrEmpty())
            {
   
                foreach (var symbol in Settings.Tickers.SelectMany(GenerateAsset))
                {
   
                    yield return symbol;
                }
            }
            else
            {
   
                for (var i = 0; i < Settings.SymbolCount; i++)
                {
   
                	//生成stk000000,stk000001,...stk000999格式的证券符号
                    var ticker = "stk" + i.ToString().PadLeft(6, '0');
                    var symbol = Symbol.Create(ticker, Settings.SecurityType, Settings.Market);
                    yield return symbol;
                    //foreach (var symbol in GenerateAsset())
                    //{
   
                    //    yield return symbol;
                    //}
                }
            }
        }
  1. QuantConnect.ToolBox项目设为启动项目,属性-调试-常规-打开调试启动配置文件UI-启动配置文件-命令行参数,进行配置后F5运行生成1000个证券数据;
--app=rdg
--start=19980101
--end=20240319
--symbol-count=1000
--resolution=Daily
--random-seed=123456
--rename-percentage=0.0
--ipo-percentage=0.0
--splits-percentage=0.0
--dividends-percentage=0.0
--dividend-every-quarter-percentage=0.0

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

5.目录\ToolBox\CoarseUniverseGenerator\CoarseUniverseGeneratorProgram.cs下语句修改成var hasFundamentalData = true; 目录\Common\Data\UniverseSelection\CoarseFundamentalDataProvider.cs下语句修改成return coarse.HasFundamentalData;项目属性–app=rdg修改为cug然后F5生成基本面Fundamental的股票池Universe数据;

        private static CoarseFundamental GenerateFactorFileRow(string ticker, SecurityIdentifierContext sidContext, CorporateFactorProvider factorFile, TradeBar tradeBar)
        {
   
            var date = tradeBar.Time;
            var factorFileRow = factorFile?.GetScalingFactors(date);
            var dollarVolume = Math.Truncate((double)
  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值