From fc2ddc697fdab72abcb8ccb21d81d23bb6e57ca2 Mon Sep 17 00:00:00 2001 From: Martin Molinero Date: Wed, 13 Mar 2024 12:17:27 -0300 Subject: [PATCH] Standarize universe data type implementation --- DemonstrationUniverse.cs | 20 +- DemonstrationUniverse.py | 14 +- ...UniverseType.cs => MyCustomDataUniverse.cs | 8 +- .../mycustomdatatype/universe/20220214.csv | 576 ++++++++++++++++++ 4 files changed, 609 insertions(+), 9 deletions(-) rename MyCustomDataUniverseType.cs => MyCustomDataUniverse.cs (95%) create mode 100644 output/alternative/mycustomdatatype/universe/20220214.csv diff --git a/DemonstrationUniverse.cs b/DemonstrationUniverse.cs index 15c89ed..44f5d31 100644 --- a/DemonstrationUniverse.cs +++ b/DemonstrationUniverse.cs @@ -38,18 +38,32 @@ public override void Initialize() SetCash(100000); // add a custom universe data source (defaults to usa-equity) - AddUniverse("MyCustomDataUniverseType", Resolution.Daily, data => + var universe = AddUniverse(data => { - foreach (var datum in data) + foreach (MyCustomDataUniverseType datum in data) { Log($"{datum.Symbol},{datum.SomeCustomProperty},{datum.SomeNumericProperty}"); } // define our selection criteria - return from d in data + return from MyCustomDataUniverseType d in data where d.SomeCustomProperty == "buy" select d.Symbol; }); + + var history = History(universe, 1).ToList(); + if (history.Count != 1) + { + throw new System.Exception($"Unexpected historical data count!"); + } + foreach (var dataForDate in history) + { + var coarseData = dataForDate.ToList(); + if (coarseData.Count < 300) + { + throw new System.Exception($"Unexpected historical universe data!"); + } + } } /// diff --git a/DemonstrationUniverse.py b/DemonstrationUniverse.py index 80b3657..c7fa358 100644 --- a/DemonstrationUniverse.py +++ b/DemonstrationUniverse.py @@ -16,7 +16,7 @@ ### ### Example algorithm using the custom data type as a source of alpha ### -class CustomDataUniverse(QCAlgorithm): +class CustomDataUniverse(QCAlgorithm): def Initialize(self): ''' Initialise the data and resolution required, as well as the cash and start-end dates for your algorithm. All algorithms must initialized. ''' @@ -28,7 +28,15 @@ def Initialize(self): self.SetCash(100000) # add a custom universe data source (defaults to usa-equity) - self.AddUniverse(MyCustomDataUniverseType, "MyCustomDataUniverseType", Resolution.Daily, self.UniverseSelection) + universe = self.AddUniverse(MyCustomDataUniverse, self.UniverseSelection) + + history = self.History(universe, TimeSpan(1, 0, 0, 0)) + if len(history) != 1: + raise ValueError(f"Unexpected history count {len(history)}! Expected 1") + + for dataForDate in history: + if len(dataForDate) < 300: + raise ValueError(f"Unexpected historical universe data!") def UniverseSelection(self, data): ''' Selected the securities @@ -37,7 +45,7 @@ def UniverseSelection(self, data): :return: List of Symbol objects ''' for datum in data: - self.Log(f"{datum.Symbol},{datum.Followers},{datum.DayPercentChange},{datum.WeekPercentChange}") + self.Log(f"{datum.Symbol},{datum.SomeNumericProperty},{datum.SomeCustomProperty}") # define our selection criteria return [d.Symbol for d in data if d.SomeCustomProperty == 'buy'] diff --git a/MyCustomDataUniverseType.cs b/MyCustomDataUniverse.cs similarity index 95% rename from MyCustomDataUniverseType.cs rename to MyCustomDataUniverse.cs index 5db2f4b..0118fc2 100644 --- a/MyCustomDataUniverseType.cs +++ b/MyCustomDataUniverse.cs @@ -21,6 +21,7 @@ using QuantConnect.Data; using System.Collections.Generic; using System.Globalization; +using QuantConnect.Data.UniverseSelection; namespace QuantConnect.DataSource { @@ -28,7 +29,7 @@ namespace QuantConnect.DataSource /// Example custom data type /// [ProtoContract(SkipConstructor = true)] - public class MyCustomDataUniverseType : BaseData + public class MyCustomDataUniverse : BaseDataCollection { /// /// Some custom data property @@ -67,7 +68,8 @@ public override SubscriptionDataSource GetSource(SubscriptionDataConfig config, "universe", $"{date.ToStringInvariant(DateFormat.EightCharacter)}.csv" ), - SubscriptionTransportMedium.LocalFile + SubscriptionTransportMedium.LocalFile, + FileFormat.FoldingCollection ); } @@ -85,7 +87,7 @@ public override BaseData Reader(SubscriptionDataConfig config, string line, Date var someNumericProperty = decimal.Parse(csv[2], NumberStyles.Any, CultureInfo.InvariantCulture); - return new MyCustomDataUniverseType + return new MyCustomDataUniverse { Symbol = new Symbol(SecurityIdentifier.Parse(csv[0]), csv[1]), SomeNumericProperty = someNumericProperty, diff --git a/output/alternative/mycustomdatatype/universe/20220214.csv b/output/alternative/mycustomdatatype/universe/20220214.csv new file mode 100644 index 0000000..a8cf3db --- /dev/null +++ b/output/alternative/mycustomdatatype/universe/20220214.csv @@ -0,0 +1,576 @@ +A RPTMYV3VC57P,A,55.26,buy +AA R735QTJ8XC9X,AA,12.01,buy +AAC RVY73T1OH55X,SCOK,1.2,buy +AADR UOFRJAZTL0TH,AADR,37.4,buy +AAIT V3Z1GERP1JZ9,AAIT,31.17,buy +AAL VM9RIYHM8ACL,AAL,36.8,buy +AALCP VM9RIYHM8ACL,AALCP,27.96,buy +AAMC VJV46QARHW85,AAMC,1078.8,buy +AAME R735QTJ8XC9X,AAME,3.74,buy +AAOI VK8WG1F4KGH1,AAOI,25.81,buy +AAON R735QTJ8XC9X,AAON,28.75,buy +AAP SA48O8J43YAT,AAP,124.7,buy +AAPL R735QTJ8XC9X,AAPL,539.1,buy +AAS R735QTJ8XC9X,ABC,64.33,buy +AAT UT927RDJ1T2D,AAT,33.45,buy +AATK RJU02DZWKX2D,AETI,6.75,buy +AAU TEMHQPA3FAZP,AAU,1.36,buy +AAV TECN9RMENRDX,AAV,4.39,buy +AAWW TJ2ZLXWLWA5H,AAWW,33.79,buy +AAXJ U55LDE3TN4O5,AAXJ,57.35,buy +ABAX R735QTJ8XC9X,ABAX,37.84,buy +ABB S3MVQ2U3Z59H,ABB,24.91,buy +ABBV VCY032R250MD,ABBV,51.36,buy +ABCB R735QTJ8XC9X,ABCB,23.77,buy +ABCD UIB7ED20G0V9,ABCD,2.18,buy +ABCO S9OHIQOEVVQD,ABCO,66.16,buy +ABD TB8EB3X5XR39,ACCO,6.29,buy +ABERF R735QTJ8XC9X,DDC,13.58,buy +ABEV VLI70C8W35UT,ABEV,7.16,buy +ABFS R735QTJ8XC9X,ABFS,36,307924,buy +ABG SCZMM1XU565H,ABG,55.42,buy +ABGB VKTKU03O6AUD,ABGB,22.62,buy +ABH USLFHILH7P7P,RFP,18.55,buy +ABM R735QTJ8XC9X,ABM,28.61,buy +ABMD R735QTJ8XC9X,ABMD,27.4,buy +ABP RXBFGHC4AV6T,AXAS,3.99,buy +ABPCA R735QTJ8XC9X,PNRA,186.69,buy +ABR SXN14N49WSBP,ABR,6.75,buy +ABT R735QTJ8XC9X,ABT,38.43,buy +ABTL RJCA0PEV7C6D,ABTL,11.96,buy +ABX R735QTJ8XC9X,ABX,18.53,buy +ABXA T8HXLRCAAB1H,ATSG,7.85,buy +AC R735QTJ8XC9X,AB,25.33,buy +ACAD SZ09HBEPQICL,ACAD,24.24,buy +ACAS R735QTJ8XC9X,ACAS,14.59,buy +ACAT R735QTJ8XC9X,ACAT,48.31,buy +ACB R735QTJ8XC9X,VBF,18.21,buy +ACC T142WIKPMLPH,ACC,36.88,buy +ACCOB R735QTJ8XC9X,TAP,57.55,buy +ACCU V3L973NBYZQD,ACCU,26.17,buy +ACET R735QTJ8XC9X,ACET,19.66,buy +ACFC T2L91KBTRCDH,ACFC,3.97,buy +ACG R735QTJ8XC9X,ACG,7.36,buy +ACH SAG21CX51085,ACH,8.43,buy +ACHC V18KR26TE3XH,ACHC,46.24,buy +ACHN TN4PRS1L7XWL,ACHN,3.6,buy +ACI R735QTJ8XC9X,ACI,4.69,buy +ACIM V4HQY6PWHW11,ACIM,61.93,buy +ACL R735QTJ8XC9X,ACE,99.07,buy +ACLS RWA0GXFPE739,ACLS,2.29,buy +ACLY R735QTJ8XC9X,AXDX,17.12,buy +ACM TSHPE3QO7TD1,ACM,31.88,buy +ACN S6HA7SVNXLYD,ACN,82,2961043,buy +ACNB USLFHILH7P7P,ACNB,18.16,buy +ACOL R735QTJ8XC9X,ACO,45.82,buy +ACOR TG2OFNO1HAHX,ACOR,37.8,buy +ACP R735QTJ8XC9X,IEP,99.94,buy +ACP UTMUH2HW4DB9,ACP,17.59,buy +ACPW RX1KZJOFJBL1,ACPW,3.26,buy +ACRE V62UVLXOXNC5,ACRE,13.31,buy +ACRX UU1M6GZF9OPX,ACRX,12.14,buy +ACSF VNA72F0V27AD,ACSF,13.92,buy +ACST VD3WRMY2LJL1,ACST,1.23,buy +ACTG SKKDFY9LC5LX,ACTG,15.12,buy +ACTS TE3S8XBVYYXX,ACTS,2.49,buy +ACTU RCG5D58BX7QD,BIRT,6.02,buy +ACU R735QTJ8XC9X,ACU,17.64,buy +ACW T854SJL3AHYD,ACW,4.46,buy +ACWI U1BQSAW6XI79,ACWI,56.91,buy +ACWV V0WRDXSSH205,ACWV,63.09,buy +ACWX U1BQSAW6XI79,ACWX,45.14,buy +ACXM R735QTJ8XC9X,ACXM,35.66,buy +ACY R7GY04NLZWIT,ACY,17.45,buy +ADBE R735QTJ8XC9X,ADBE,65.24,buy +ADC R735QTJ8XC9X,ADC,31.31,buy +ADCC R735QTJ8XC9X,EVK,7.45,buy +ADDM R735QTJ8XC9X,AEY,3.17,buy +ADES T2U42EMCG4TH,ADES,24.27,buy +ADGE R735QTJ8XC9X,RWC,3.15,buy +ADGE UGWZLLEEJJOL,ADGE,2.15,buy +ADHD VGRUO5YOUN39,ADHD,19.66,buy +ADI R735QTJ8XC9X,ADI,53.61,buy +ADK TONUT0J1I6W5,ADK,4.3,buy +ADM R735QTJ8XC9X,ADM,42.3,buy +ADMP VMCPV8L4GJTX,ADMP,6.31,buy +ADNC V6GN4X2207L1,ADNC,12.61,buy +ADRA SJNVOV70T9B9,ADRA,27.22,buy +ADRD SJNVOV70T9B9,ADRD,24.03,buy +ADRE SJNVOV70T9B9,ADRE,35.02,buy +ADRU SJNVOV70T9B9,ADRU,24.15,buy +ADS S5CWVYVQSODH,ADS,280.65,buy +ADSK R735QTJ8XC9X,ADSK,49.74,buy +ADT VAEFIDQD0UP1,ADT,29.74,buy +ADTK R735QTJ8XC9X,ADEP,19.23,buy +ADTN R735QTJ8XC9X,ADTN,25.29,buy +ADUS UH5UMFOX8C4L,ADUS,22.1,buy +ADVS R735QTJ8XC9X,ADVS,29.95,buy +ADX R735QTJ8XC9X,ADX,12.91,buy +ADXS VKTKU03O6AUD,ADXS,4.69,buy +ADXSW VKTKU03O6AUD,ADXSW,1.82,buy +AE R735QTJ8XC9X,AE,63.79,buy +AEB TDWW49RPFOTH,AEB,21.29,buy +AEC R735QTJ8XC9X,AEC,16.76,buy +AED TDWW49RPFOTH,AED,25.23,buy +AEE R735QTJ8XC9X,AEE,40.55,buy +AEF TW3OEG0YBEJP,AEF,25.65,buy +AEG R735QTJ8XC9X,AEG,8.89,buy +AEGR UQZC400IP6QT,AEGR,45,1197500,buy +AEH T9ID57VJ47Z9,AEH,25.38,buy +AEHR R735QTJ8XC9X,AEHR,2.9,buy +AEIS R735QTJ8XC9X,AEIS,26.38,buy +AEK V3X2K81CW1NP,AEK,29.02,buy +AEL SU7Y8YE6CH9H,AEL,25.08,buy +AELA RUKYR4R8NF51,AEZS,1.22,buy +AEM R735QTJ8XC9X,AEM,30.83,buy +AEOS R735QTJ8XC9X,AEO,12.8,buy +AEP R735QTJ8XC9X,AEP,48.76,buy +AEPI R735QTJ8XC9X,AEPI,40.21,buy +AER TNUBE7JZ7K2T,AER,40.43,buy +AERI VL4ER14J0LLX,AERI,20.68,buy +AERL UNX21J1M4ORP,IKGH,3.11,buy +AES R735QTJ8XC9X,AES,13.87,buy +AET S0JM7II1BW4L,AET,74.34,buy +AFA V9GYB7AMF78L,AFA,24.22,buy +AFB SBSAXXUERZ39,AFB,13.32,buy +AFC R735QTJ8XC9X,THG,60.7,buy +AFC TRV23YBSGGO5,AFC,25.16,buy +AFCB UJ3RD2NWNWIT,AFCB,20.5,buy +AFCE S2OF2T17AQN9,PLKI,41.19,buy +AFFX R735QTJ8XC9X,AFFX,6.99,buy +AFG R735QTJ8XC9X,AFG,56.89,buy +AFH VE2DEWQZ9Y79,AFH,13.22,buy +AFK U4A32EEF6ZJ9,AFK,31.2,buy +AFL R735QTJ8XC9X,AFL,62.69,buy +AFM VAT77S7W663P,AFM,25.8,buy +AFOP RZWYXD35KJFP,AFOP,14.25,buy +AFQ UQDO9XYT0L7P,AFQ,26,8973,buy +AFSD VAAHQ09OPU1X,AFSD,23.43,buy +AFSI TNMFTGMMLISL,AFSI,38.52,buy +AFT UUEEZOQM9HT1,AFT,18.27,buy +AFW V7QX5B8ZLO4L,AFW,25.5,buy +AG R735QTJ8XC9X,AGCO,52.99,buy +AG USGI91RMTXET,AG,10.2,buy +AGC TSWH3I87D4RP,AGC,7.61,buy +AGD TKM4N6E26J51,AGD,9.81,buy +AGEN RRYFU5N1AZQD,AGEN,3.41,buy +AGG SSC0EI5J2F6T,AGG,107.75,buy +AGI UA4SQEOJKFVP,AGI,9.82,buy +AGIIL VA8ITTJCKBQD,AGIIL,22.53,buy +AGIO VIHVU20BO679,AGIO,37.47,buy +AGN R735QTJ8XC9X,AGN,124.38,buy +AGNC U2N08SGALPWL,AGNC,22.22,buy +AGNCP V5F85D5N3JHH,AGNCP,26.8,buy +AGO SY2SA4YZ4UW5,AGO,25.89,buy +AGOL UTA1NUQP4K85,AGOL,128.1,buy +AGQ U85WJOCE24BP,AGQ,65.35,buy +AGRO UTNTX5V274H1,AGRO,7.77,buy +AGU R735QTJ8XC9X,AGU,93.59,buy +AGX TVC3VTS86A1X,AGX,29.3,buy +AGZ U7GAX8U02I5H,AGZ,111.52,buy +AHA R735QTJ8XC9X,SWKS,37.38,buy +AHC R735QTJ8XC9X,HES,81.58,buy +AHC U02G802FESTH,AHC,12.36,buy +AHD TKH7EPK7SRC5,ATLS,43.95,buy +AHGP TIIB7Z82AFS5,AHGP,60.06,buy +AHH VGE2EUUBS2UD,AHH,10.01,buy +AHL SU7Y8YE6CH9H,AHL,39.28,buy +AHP VLR216JERYAT,AHP,15.55,buy +AHPI R735QTJ8XC9X,AHPI,2.14,buy +AHS S9OHIQOEVVQD,AHS,13.9,buy +AHT SRHHJLTAP17P,AHT,11.09,buy +AIA TXOSBV8QR5UT,AIA,44.23,buy +AIB VBFUHXMRXISL,AIB,24.25,buy +AIF VEG5O7VCCIG5,AIF,17.85,buy +AIG R735QTJ8XC9X,AIG,49.71,buy +AIMC TOHY4GC11NXH,AIMC,34.95,buy +AIN R735QTJ8XC9X,AIN,35.88,buy +AINV SXM1OJR3U15X,AINV,8.28,buy +AIQ S6P5SJT0JN8L,AIQ,30.06,buy +AIR R735QTJ8XC9X,AIR,28.72,buy +AIRB RG9ZY8FYMU79,SCSS,17.45,buy +AIRI VHCJ24N8GHGL,AIRI,9.41,buy +AIRM R735QTJ8XC9X,AIRM,52.52,buy +AIRR VOSCNK559P45,AIRR,19.68,buy +AIRT R735QTJ8XC9X,AIRT,12.12,buy +AIV R735QTJ8XC9X,AIV,29.98,buy +AIW VGC3IO3ZMKIT,AIW,22.9,buy +AIX STKBIPM4IDET,CIDM,2.8,buy +AIXG T6ZS0M802T7P,AIXG,16.45,buy +AIY VHQBBFRLJ1PH,AIY,24.24,buy +AIZ SVXZEUFT60DH,AIZ,65.77,buy +AJG R735QTJ8XC9X,AJG,47.1,buy +AKAM RP9Y0ZSHT205,AKAM,59.58,buy +AKAO VOTC3NIBCG9X,AKAO,18.95,buy +AKBA VP17OEFNYHK5,AKBA,20.2,buy +AKER VNI2N5Y7O8KL,AKER,4.7,buy +AKOA R735QTJ8XC9X,AKO.A,16,buy +AKOB R735QTJ8XC9X,AKO.B,20,buy +AKP SBSAXXUERZ39,AKP,12.66,buy +AKRN R735QTJ8XC9X,AKRX,22.2,buy +AKS R735QTJ8XC9X,AKS,6.9,buy +AL UVVL4QHQE8H1,AL,37.01,buy +ALA R735QTJ8XC9X,ALU,3.75,buy +ALB R735QTJ8XC9X,ALB,64.42,buy +ALC R735QTJ8XC9X,JAH,59.5,buy +ALCO R735QTJ8XC9X,ALCO,38.97,buy +ALD R735QTJ8XC9X,HON,91.97,buy +ALD UUZ3DNF5VC6D,ALD,47.94,buy +ALDW VBRNV20SUKPX,ALDW,16.32,buy +ALEX R735QTJ8XC9X,MATX,23.7,buy +ALEX V7WTTVG02739,ALEX,44.56,buy +ALFA V71BIVQLM1YD,ALFA,38.2,buy +ALG R735QTJ8XC9X,ALG,54.8,buy +ALGN S1PYFJ8AMC11,ALGN,52.75,buy +ALGT TOB1ZSRUIDT1,ALGT,108.8,buy +ALHY R735QTJ8XC9X,NYNY,7.24,buy +ALIM ULZ5AW2MP4DH,ALIM,6.75,buy +ALJ TAOPD8LSENVP,ALJ,15.34,buy +ALK R735QTJ8XC9X,ALK,91.32,buy +ALKS R735QTJ8XC9X,ALKS,43.9,buy +ALL R735QTJ8XC9X,ALL,56.18,buy +ALLBD TPS84UIYN4H1,ALLB,15.3,buy +ALLE VM2VEAXFP085,ALLE,53.47,buy +ALLT TNPE5QQ4TS9X,ALLT,14.63,buy +ALLY R735QTJ8XC9X,BYI,65.37,buy +ALN UFSM9REHEM3P,ALN,1.15,buy +ALNY SZ18XERVT9ID,ALNY,66.2,buy +ALOG R735QTJ8XC9X,ALOG,79.86,buy +ALOT R735QTJ8XC9X,ALOT,12.23,buy +ALQA VNMZVMS220DH,ALQA,8.52,buy +ALSK RPTMYV3VC57P,ALSK,1.91,buy +ALSN V4XI3OKLPYLH,ALSN,29.24,buy +ALT R735QTJ8XC9X,ATI,37.28,buy +ALTIF R735QTJ8XC9X,ALTI,4.88,buy +ALTR R735QTJ8XC9X,ALTR,35.76,buy +ALV R735QTJ8XC9X,ALV,98.12,buy +ALX R735QTJ8XC9X,ALX,359.81,buy +ALXA TGSA236FGWO5,ALXA,4.65,buy +ALXN R735QTJ8XC9X,ALXN,149.76,buy +AMAP UNW2LFOG1XLX,AMAP,20.43,buy +AMAT R735QTJ8XC9X,AMAT,20.09,buy +AMB R735QTJ8XC9X,PLD,40.11,buy +AMBA VANAJ80VPN51,AMBA,27.77,buy +AMBC VG85QANBBJVP,AMBC,32.86,buy +AMBCW VG76A7A58SPX,AMBCW,21.99,buy +AMBI VGJZ3F1C8LT1,AMBI,9.98,buy +AMBR VP274HSU18PX,AMBR,16.75,buy +AMBT UYRYIN9MI7HH,AMBT,1.43,buy +AMC VMGNNM1SRKH1,AMC,23.18,buy +AMCC R735QTJ8XC9X,AMCC,9.77,buy +AMCF UJMGUUM448KL,AMCF,2.16,buy +AMCN TXFXB0Y82DET,AMCN,2.55,buy +AMCX UXVGRK71ZB6T,AMCX,73.79,buy +AMD R735QTJ8XC9X,AMD,4.05,buy +AMDA VO0S4XWF4KMD,AMDA,8.15,buy +AME R735QTJ8XC9X,AME,52.49,buy +AMED R735QTJ8XC9X,AMED,14.82,buy +AMG R735QTJ8XC9X,AMG,187.63,buy +AMGD R735QTJ8XC9X,AVD,21.65,buy +AMGN R735QTJ8XC9X,AMGN,121.28,buy +AMH VIPRESXOA7HH,AMH,16.79,buy +AMHC R735QTJ8XC9X,HWAY,15.9,buy +AMID UYL2DZPFYXD1,AMID,25.24,buy +AMJ UD44GLJXWODH,AMJ,45.74,buy +AMKR RACBXY2C14DH,AMKR,6.42,buy +AMLP UPE86KSQ9FFP,AMLP,17.42,buy +AMNB RK3UJBNLCGO5,AMNB,24.08,buy +AMOV S22R8QZHM545,AMOV,20.7,buy +AMP TCIOBI43J7MT,AMP,110.72,buy +AMPE UWP4JJGSOVAD,AMPE,6.3,buy +AMPI R735QTJ8XC9X,CFNB,15.21,buy +AMPS V45XL2BVKU3P,AMPS,49.35,buy +AMRB RZ7DAXKRKX9H,AMRB,9.49,buy +AMRC UOGQZECZNRZ9,AMRC,7.84,buy +AMRE V8LG07L7Z23P,AMRE,16.21,buy +AMRI RHZ1O14FDM5H,AMRI,18.91,buy +AMRK VOZ8S7PBSZ8L,AMRK,12.42,buy +AMRS UQBPDR8GV2W5,AMRS,3.79,buy +AMS R735QTJ8XC9X,AMS,3.25,buy +AMSC R735QTJ8XC9X,AMSC,1.83,buy +AMSF TDRYVSXV1X0L,AMSF,43.88,buy +AMSGA R735QTJ8XC9X,AMSG,46.5,buy +AMSWA R735QTJ8XC9X,AMSWA,9.96,buy +AMT RBASL7V8PIZP,AMT,80.9,buy +AMTC R735QTJ8XC9X,ZIXI,4.11,buy +AMTD R735QTJ8XC9X,AMTD,35.05,buy +AMTG UYG55IVLL5K5,AMTG,16.91,buy +AMU V8PDSL1WA2QT,AMU,28.8,buy +AMWD R735QTJ8XC9X,AMWD,32.58,buy +AMX S22R8QZHM545,AMX,20.68,buy +AMZG VLR216JERYAT,AMZG,7.06,buy +AMZN R735QTJ8XC9X,AMZN,351.85,buy +ANAC URVTV333831H,ANAC,19.98,buy +ANAD R735QTJ8XC9X,ANAD,1.81,buy +ANAT R735QTJ8XC9X,ANAT,113.85,buy +ANCB UTLV0Z4Q1M5H,ANCB,18.66,buy +ANCX T0GG69SNSHUT,ANCX,16.87,buy +AND UTTQLQ22NNFP,AND,10.31,buy +ANDA V6GN4X2207L1,TGLS,10.55,buy +ANDE R735QTJ8XC9X,ANDE,57.08,buy +ANF R735QTJ8XC9X,ANF,39.35,buy +ANFI VANAJ80VPN51,ANFI,16.02,buy +ANGI V1OBWK1IM6HX,ANGI,12.62,buy +ANGL V5O367G5SBXH,ANGL,27.47,buy +ANGN SKDHBAPESVHH,MGCD,11.05,buy +ANGO SZ09HBEPQICL,ANGO,15.93,buy +ANH R8Z3L9RW7ECL,ANH,5.17,buy +ANIK R735QTJ8XC9X,ANIK,40.86,buy +ANK R735QTJ8XC9X,ATNI,66.22,buy +ANN R735QTJ8XC9X,ANN,42.04,buy +ANO SX0DUHPE5FMT,ATL,0.47,buy +ANR T687HZZ9XOPX,ANR,4.52,buy +ANSR RB2X0GXW3HPH,HCKT,6.03,buy +ANSS R735QTJ8XC9X,ANSS,73.92,buy +ANTC R735QTJ8XC9X,ARRS,28.08,buy +ANTH UKJY211UPW11,ANTH,3.37,buy +ANTR S21RSNMBJDYD,ATRS,3.78,buy +ANV TSHPE3QO7TD1,ANV,5.11,buy +ANW TOB1ZSRUIDT1,ANW,10.21,buy +ANX SY8OYP5ZLDUT,MSTX,0.74,buy +AOA U7GAX8U02I5H,AOA,44.72,buy +AOC R735QTJ8XC9X,AON,84.24,buy +AOD TPNAWDP49CO5,AOD,8.23,buy +AOK U7GAX8U02I5H,AOK,32.15,buy +AOL R735QTJ8XC9X,TWX,65.33,buy +AOL UIC6UGF6IS11,AOL,42.49,buy +AOM U7GAX8U02I5H,AOM,34.54,buy +AOR U7K8PMAODISL,AOR,38.76,buy +AOS R735QTJ8XC9X,AOS,45.57,buy +AOSL UM61FJMT8EHX,AOSL,7.63,buy +AP R735QTJ8XC9X,AP,19.13,buy +APA R735QTJ8XC9X,APA,80.77,buy +APAGF R735QTJ8XC9X,APAGF,15.02,buy +APAM VEP0P25V1AW5,APAM,62.93,buy +APAT R735QTJ8XC9X,CLFD,23.89,buy +APB R735QTJ8XC9X,APB,10.05,buy +APC R735QTJ8XC9X,APC,82.78,buy +APD R735QTJ8XC9X,APD,120.19,buy +APEI TXHW77OK7VQD,APEI,35.95,buy +APF R735QTJ8XC9X,APF,16.33,buy +APH R735QTJ8XC9X,APH,92.5,buy +API R735QTJ8XC9X,API,0.63,buy +APL RRRJPI2URPLX,APL,30.81,buy +APO UVBW6V6CV59H,APO,31.08,buy +APOG R735QTJ8XC9X,APOG,32.38,buy +APOL R735QTJ8XC9X,APOL,33.19,buy +APPY TVI0KDZ8MT0L,APPY,2.72,buy +APSA RZR28SW540H1,APSA,16.68,buy +APT R735QTJ8XC9X,STAR,14.41,buy +APT RTLINRL5W9D1,APT,2.2,buy +APTS UVDV31WP0NL1,APTS,8.03,buy +APU R735QTJ8XC9X,APU,42.01,buy +APW R735QTJ8XC9X,ATU,33.41,buy +APZ R735QTJ8XC9X,AIT,48.75,buy +AQQ S9VDNE8LF5UT,AQQ,1.72,buy +AQUUW VDIOH1FLQUZP,AQUUW,0.29,buy +AQXP VONFF3BAVXB9,AQXP,12.05,buy +AR VKLP996BK9K5,AR,65.7,buy +ARAY TQ03PLGB95R9,ARAY,9.14,buy +ARB R735QTJ8XC9X,ARL,9.86,buy +ARC SW4VJHZZPAHX,HTH,23.42,buy +ARCC T2L91KBTRCDH,ARCC,17.5,buy +ARCI R735QTJ8XC9X,ARCI,3.2,buy +ARCO UVQNW9NW0GO5,ARCO,9.7,buy +ARCP UZQF5X2J6M3P,ARCP,14,4376307,buy +ARCPP VN1C1KQCDEUD,ARCPP,22.76,buy +ARCW TRO5ZARLX6JP,ARCW,34.62,buy +ARCX VLD9RVF1PE1X,ARCX,21.75,buy +ARDC VBZJFSY5GM05,ARDC,18.3,buy +ARE R735QTJ8XC9X,ARE,72.5,buy +AREX TXGWR4BE54KL,AREX,20.9,buy +ARG R735QTJ8XC9X,ARG,106.79,buy +ARGNA R735QTJ8XC9X,THRM,33.24,buy +ARGS VNWUCKFQTJZ9,ARGS,10.79,buy +ARGT UULB4CASSRXH,ARGT,19,2645,buy +ARI UG8DF996MOO5,ARI,17.01,buy +ARIA R735QTJ8XC9X,ARIA,7.6,buy +ARII TFI01OZHVG4L,ARII,73.42,buy +ARIS VM9RIYHM8ACL,ARIS,3.34,buy +ARKR R735QTJ8XC9X,ARKR,22.7,buy +ARLP RNA2E6367ZAD,ARLP,82.3,buy +ARMF VL5E74HP3CRP,ARMF,21.8,buy +ARMHY RA2HH0EN9KRP,ARMH,48.48,buy +ARMK VMCPV8L4GJTX,ARMK,29.11,buy +ARN V4BU9MIW1D2D,ARN,26.34,buy +ARNA RWQR2INKP0TH,ARNA,6.02,buy +ARO SEPNRXZGYP9H,ARO,5.55,buy +AROW R735QTJ8XC9X,AROW,27.06,buy +ARP T5XDKYYF3DYD,ARC,7.17,buy +ARP V4WINL7FN7FP,ARP,21.81,buy +ARPI VGF1UY7HUU05,ARPI,17.9,buy +ARQL R735QTJ8XC9X,ARQL,2.07,buy +ARRY RZT14ZMH9ISL,ARRY,4.94,buy +ARSD R735QTJ8XC9X,ARSD,11.04,buy +ARTC R735QTJ8XC9X,ARTC,48.29,buy +ARTNA R735QTJ8XC9X,ARTNA,22.29,buy +ARTW R735QTJ8XC9X,ARTW,6.09,buy +ARU VALBN1AJK4TH,ARU,25.24,buy +ARUN TRADPZN8UMAT,ARUN,19.47,buy +ARW R735QTJ8XC9X,ARW,57.34,buy +ARWR T1PQQKMFB78L,ARWR,17.37,buy +ARX URQWMM98UB8L,ARX,8.75,buy +ARY URMYU8SKJALH,ARY,26.52,buy +ASA R735QTJ8XC9X,ASA,13.69,buy +ASBB V0OVT6VFV0PX,ASBB,17.57,buy +ASBC R735QTJ8XC9X,ASBC,18.21,buy +ASBI R735QTJ8XC9X,ASBI,13.53,buy +ASC VIPRESXOA7HH,ASC,13.29,buy +ASCMA U6AY5BGWUTET,ASCMA,75.63,buy +ASE R735QTJ8XC9X,ASEI,67.37,buy +ASEA UU7IV16FQ7OL,ASEA,15.5,buy +ASF R735QTJ8XC9X,NSP,29.65,buy +ASFC R735QTJ8XC9X,AF,14.35,buy +ASFI R735QTJ8XC9X,ASFI,8.31,buy +ASG R735QTJ8XC9X,ASG,5.46,buy +ASGN R735QTJ8XC9X,ASGN,37.28,buy +ASH R735QTJ8XC9X,ASH,98.28,buy +ASHR VLD9RVF1PE1X,ASHR,22.12,buy +ASII R735QTJ8XC9X,ESYS,14.13,buy +ASM UYQZ2JWGFGBP,ASM,1.8,buy +ASMIF R735QTJ8XC9X,ASMI,39.44,buy +ASMLF R735QTJ8XC9X,ASML,91.11,buy +ASP R735QTJ8XC9X,ASP,9.85,buy +ASPS UF02B1SL6QG5,ASPS,115.41,buy +ASPX VNUVGDPEO1NP,ASPX,29.2,buy +ASR RYFSSBC1FSRP,ASR,118.49,buy +ASRVP RB8TP14WK0O5,ASRVP,26.7,buy +ASTE R735QTJ8XC9X,ASTE,45.16,buy +ASTI TL0WCKVLBUJP,ASTI,0.67,buy +ASTM R735QTJ8XC9X,ASTM,5.08,buy +ASX RYJQKOSPQTET,ASX,5.11,buy +ASYS R735QTJ8XC9X,ASYS,12.89,buy +AT UOHQFHQ5QJ51,AT,2.71,buy +ATAI TZPNESB8EZQD,ATAI,4.09,buy +ATAX U3XA96N876G5,ATAX,6.08,buy +ATCO RM5P2C3931PH,LRAD,2.03,buy +ATE S84D1ETSIVL1,ATE,10.27,buy +ATEA R735QTJ8XC9X,ATEA,2.97,buy +ATEC TJ4YI4MY1SH1,ATEC,1.65,buy +ATEN VP274HSU18PX,ATEN,15.25,buy +ATG R735QTJ8XC9X,GAS,47.67,buy +ATH S9AP9FK1TBHH,WLP,100.97,buy +ATHL VIQQUWAUCYN9,ATHL,34.87,buy +ATHM VMBQF57YDSO5,ATHM,39.99,buy +ATHN TW4NUJE4E5PH,ATHN,165.23,buy +ATHX TYEDYAR4QS11,ATHX,3.33,buy +ATK R735QTJ8XC9X,ATK,136.61,buy +ATLO T47CF2WS9UUD,ATLO,22.82,buy +ATMI R735QTJ8XC9X,ATMI,33.98,buy +ATML R735QTJ8XC9X,ATML,8.49,buy +ATMP VEUXDMCVHTUT,ATMP,27.19,buy +ATNY UXRIZ6QDOAJP,ATNY,2.92,buy +ATO R735QTJ8XC9X,ATO,46.11,buy +ATOS VBFUHXMRXISL,ATOS,1.79,buy +ATR R735QTJ8XC9X,ATR,64.19,buy +ATRC TAWKXZJ50P5X,ATRC,19.39,buy +ATRI R735QTJ8XC9X,ATRI,313.05,buy +ATRM R735QTJ8XC9X,ATRM,5.97,buy +ATRO R735QTJ8XC9X,ATRO,64.99,buy +ATV TSAT9G6HOJ8L,ATV,1.67,buy +ATVI R735QTJ8XC9X,ATVI,20.5,buy +ATW R735QTJ8XC9X,ATW,49.01,buy +AU RCYUUX6JDJS5,AU,17.06,buy +AUBN R735QTJ8XC9X,AUBN,25.62,buy +AUD R735QTJ8XC9X,ADP,76.43,buy +AUD V18KR26TE3XH,AUD,92.5,buy +AUDC RL2B6LGI0VAD,AUDC,7.5,buy +AUMN UL1O3PMW3GX1,AUMN,0.95,buy +AUO SEWJWLJNHZDX,AUO,3.38,buy +AUXL T0KDYN9C3IHX,AUXL,28.32,buy +AUY SU8XP1RCF8F9,AUY,9.08,buy +AV UGXZ1ORKMAUD,AV,15.8,buy +AVAV TPKCK3LM136T,AVAV,40.22,buy +AVC R735QTJ8XC9X,DVCR,5.86,buy +AVEO UKURZ22PK6SL,AVEO,1.68,buy +AVG V3S5BR7II9UT,AVG,20.18,buy +AVGO UEW4IOBWVPT1,AVGO,63.16,buy +AVH VLD9RVF1PE1X,AVH,16.12,buy +AVII R735QTJ8XC9X,SRPT,24.54,buy +AVIV VF2SYDA83V51,AVIV,24.13,buy +AVK SO9ASKNDO09X,AVK,18.41,buy +AVL USNEDPBTD7J9,AVL,0.6,buy +AVM R735QTJ8XC9X,AMAG,20,510197,buy +AVND R735QTJ8XC9X,MBFI,31.55,buy +AVP R735QTJ8XC9X,AVP,14.62,buy +AVT R735QTJ8XC9X,AVT,45.13,buy +AVTR R735QTJ8XC9X,AVHI,18.19,buy +AVV V1W7HAYV87S5,AVV,27.73,buy +AVX R735QTJ8XC9X,AVX,13.15,buy +AVY R735QTJ8XC9X,AVY,50.57,buy +AVZ R735QTJ8XC9X,IVZ,36.19,buy +AWAY UXTHVDGPTSV9,AWAY,39.54,buy +AWC R735QTJ8XC9X,APWC,2.73,buy +AWF R735QTJ8XC9X,AWF,14.51,buy +AWI TMWU7148LWMD,AWI,54,733068,buy +AWK U21CEQEKX4DH,AWK,45.17,buy +AWLD RUE2MH72450L,KGJI,1.64,buy +AWP TS3X4SMB5945,AWP,6.91,buy +AWRE R735QTJ8XC9X,AWRE,5.75,buy +AWX RBSIMWGA33VP,AWX,5.8,buy +AXE R735QTJ8XC9X,AXE,101.34,buy +AXGN VIXMZJV0W8RP,AXGN,3.16,buy +AXHE UOAUAU5Z790L,AXHE,83.33,buy +AXL RHT4ZGXEX36T,AXL,18.21,buy +AXN ULR9Q55A3339,AXN,0.41,buy +AXP R735QTJ8XC9X,AXP,91.01,buy +AXR R735QTJ8XC9X,AXR,6.83,buy +AXS SPYCIDBUES85,AXS,46.05,buy +AXTE UOAUAU5Z790L,AXTE,60.61,buy +AXTI RAW0VTDPK7L1,AXTI,2.28,buy +AXU TW4NUJE4E5PH,AXU,1.81,buy +AXUT UOAUAU5Z790L,AXUT,46.77,buy +AXX V4RLF4DL9FMT,AXX,1.4,buy +AXYX RTKJ7O7ZTI79,RPTP,10.17,buy +AYI S9PGYU1KYMW5,AYI,139.37,buy +AYN SBSAXXUERZ39,AYN,12.54,buy +AYR TKYXGE596C85,AYR,19.33,buy +AYT U5T83MVVH8IT,AYT,44.99,buy +AZC TO36F1UHWCIT,AZC,2.97,buy +AZIA VFFLRL1F3O85,AZIA,12.87,buy +AZO R735QTJ8XC9X,AZO,531.03,buy +AZPN R735QTJ8XC9X,AZPN,43.79,buy +AZZ R735QTJ8XC9X,AZZ,43.3,buy +B R735QTJ8XC9X,B,38.94,buy +BA R735QTJ8XC9X,BA,123.42,buy +BAA T7CKTTZ72MAT,BAA,0.52,buy +BAB UHPJKB0ARFC5,BAB,28.64,buy +BABS UMJTOUR6AYQT,BABS,57.64,buy +BABY S6I9NW8U0D45,BABY,24.86,buy +BABZ UQ4T93OABSRP,BABZ,49.44,buy +BAF SJ93ZGPHNXWL,BAF,13.73,buy +BAGR VFUDGZIY8ZMT,BAGR,5.41,buy +BAH UROXQFIWOSX1,BAH,21.7,buy +BAK SHPYY881DOX1,BAK,14.88,buy +BAL U3RDKMG7QNHH,BAL,56.83,buy +BALT UKST2VCDEOH1,BALT,6.36,buy +BAMM R735QTJ8XC9X,BAMM,2.39,buy +BANCL V70C2SDFJASL,BANCL,25.55,buy +BANCP VHDII80EJ8MD,BANCP,25.9,buy +BANF R735QTJ8XC9X,BANF,57.28,buy +BANX VLE97YS7S57P,BANX,25,30974,buy +BAP R735QTJ8XC9X,BAP,125.86,buy +BAS TECN9RMENRDX,BAS,25.14,buy +BASI R735QTJ8XC9X,BASI,2.65,buy +BAX R735QTJ8XC9X,BAX,66.86,buy +BBBY R735QTJ8XC9X,BBBY,67.26,buy +BBD SGXEZIM55T9H,BBD,12.52,buy +BBDO V4VJ7HU9KG9X,BBDO,13.2,buy +BBEP TMJ1XPZVJCDH,BBEP,19.77,buy +BBF S6P5SJT0JN8L,BBF,13.31,buy +BBG T4E8JQGYT4YT,BBG,25.89,buy +BBGI RS5BYT77U9UT,BBGI,9.2,buy +BBH V2LT3QH97TYD,BBH,92.16,buy +BBK R735QTJ8XC9X,BBT,40.18,buy +BBK SE5YU2O3FM1X,BBK,14.49,buy +BBL SPSFTT4TY99H,BBL,59.62,buy +BBN UPG72RJ2EXR9,BBN,19.76,buy +BBNK SLPQ7VMOJUCL,BBNK,24.16,buy +BBOX R735QTJ8XC9X,BBOX,24.37,buy +BBRC V945HZJFFE5H,BBRC,20.49,buy +BBRG UQYCNWNCMFL1,BBRG,15.01,buy +BBSI R735QTJ8XC9X,BBSI,61.61,buy +BBV R735QTJ8XC9X,BBVA,11.99,buy +BBW T37WBPQPIP2D,BBW,9.16,buy +BBX R735QTJ8XC9X,BBX,18.15,buy +BBY R735QTJ8XC9X,BBY,26.35,buy \ No newline at end of file