Refactor InsiderTransactionParser, InsiderTransactionDA and UpdateManager

This commit is contained in:
2024-02-27 20:22:10 -05:00
parent 3ed52ad5fc
commit ad872e0058
18 changed files with 90 additions and 60 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -106,7 +106,7 @@ namespace MarketData.DataAccess
if (null != sqlConnection) sqlConnection.Close();
}
}
// Add NumberOrValueAcquiredDisposed to key
public static bool InsertInsiderTransactions(InsiderTransactions insiderTransactions)
{
MySqlConnection sqlConnection = null;
@@ -125,13 +125,23 @@ namespace MarketData.DataAccess
String insiderTransactionKey = insiderTransaction.Form + insiderTransaction.SECAccessionNumber + insiderTransaction.FormRowNumber;
if (insiderTransactionsUniqueKey.ContainsKey(insiderTransactionKey))
{
MDTrace.WriteLine(LogLevel.DEBUG,"*********************************************************************************************************");
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Collection already contains a value for Form:{0} SECAccessionNumber:{1} FormRowNumber:{2}",
insiderTransaction.Form,insiderTransaction.SECAccessionNumber,insiderTransaction.FormRowNumber));
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("InsiderName:{0} OwnershipType:{1} Securities:{2} NatureOfTransaction:{3} NumberOrValueAcquiredDisposed:{4} Price:{5} FilingDate:{6} TransactionDate:{7}",
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Item attempting to add: InsiderName:{0} OwnershipType:{1} Securities:{2} NatureOfTransaction:{3} NumberOrValueAcquiredDisposed:{4} Price:{5} FilingDate:{6} TransactionDate:{7}",
insiderTransaction.InsiderName,insiderTransaction.OwnershipType,insiderTransaction.Securities,insiderTransaction.NatureOfTransaction,insiderTransaction.NumberOrValueAcquiredDisposed,insiderTransaction.Price,
Utility.DateTimeToStringMMHDDHYYYY(insiderTransaction.FilingDate),Utility.DateTimeToStringMMSDDSYYYY(insiderTransaction.TransactionDate)));
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Item already in collection: InsiderName:{0} OwnershipType:{1} Securities:{2} NatureOfTransaction:{3} NumberOrValueAcquiredDisposed:{4} Price:{5} FilingDate:{6} TransactionDate:{7}",
insiderTransaction.InsiderName,insiderTransaction.OwnershipType,insiderTransaction.Securities,insiderTransaction.NatureOfTransaction,insiderTransaction.NumberOrValueAcquiredDisposed,insiderTransaction.Price,
Utility.DateTimeToStringMMHDDHYYYY(insiderTransaction.FilingDate),Utility.DateTimeToStringMMSDDSYYYY(insiderTransaction.TransactionDate)));
MDTrace.WriteLine(LogLevel.DEBUG,"*********************************************************************************************************");
continue;
}
}
StringBuilder sb = new StringBuilder();
sb.Append("insert into InsiderTransaction (symbol,filing_date,transaction_date,insider_name,ownership_type,securities,nature_of_transaction,number_or_value_acquired_disposed,price,form,sec_accession_number,form_row_number,modified) ");
sb.Append("values(");

View File

@@ -103,6 +103,7 @@ namespace MarketData.Helper
}
}
int sequenceNumber=0;
foreach(Dictionary<String,String> dictionary in dictionaryList)
{
String strItem=null;
@@ -120,7 +121,8 @@ namespace MarketData.Helper
insiderTransaction.TransactionDate=Utility.ParseDate(strItem);
insiderTransaction.NatureOfTransaction=transactionCodes.ContainsKey(GetFirstSection(Sections.GetSections(dictionary["Transaction Code"])))?transactionCodes[GetFirstSection(Sections.GetSections(dictionary["Transaction Code"]))]:Constants.CONST_QUESTION;
insiderTransaction.NumberOrValueAcquiredDisposed=FeedParser.ParseValue(GetFirstSection(Sections.GetSections(dictionary["Securities Acquired or Disposed"])));
insiderTransaction.FormRowNumber=((decimal)insiderTransaction.NumberOrValueAcquiredDisposed).ToString();
// insiderTransaction.FormRowNumber=((decimal)insiderTransaction.NumberOrValueAcquiredDisposed).ToString();
insiderTransaction.FormRowNumber=(++sequenceNumber).ToString();
insiderTransaction.Price=FeedParser.ParseValue(CombineSections(Sections.GetSections(dictionary["Price"])));
String acquiredOrDisposed=GetAcquiredOrDisposed(dictionary);
if(null==acquiredOrDisposed)

View File

@@ -60,10 +60,10 @@ namespace MarketData.Utils
DateGenerator dateGenerator=new DateGenerator();
DateTime creationTime=File.GetCreationTime(strPathFileName);
int daysElapsed=Math.Abs(dateGenerator.DaysBetweenActual(creationTime,DateTime.Now));
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("{0} is {1} days(s) old.",strPathFileName,daysElapsed));
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Ok. {0} is {1} days(s) old. MaxAge:{2} days",strPathFileName,daysElapsed,maxAgeDays));
if(daysElapsed>maxAgeDays)
{
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("{0} is expired. {1} days old.",strPathFileName,daysElapsed));
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("{0} is expired. {1} days old. MaxAge:{2} days",strPathFileName,daysElapsed,maxAgeDays));
return true;
}
return false;

View File

@@ -594,37 +594,21 @@ namespace MarketData
// sessionParams.Candidates = new CMTCandidates(sessionParams.Candidates.Except(candidatesToRemove).ToList());
// CMTSessionManager.SaveSession(sessionParams,@"C:\boneyard\marketdata\bin\Debug\CMT20200817.txt");
//}
// ******************************************************************************************************************************************************************************************
// ******************************************************************************************************************************************************************************************
// **********************************************************************************************************************************************.ToString()********************************************
// **********************************************************************************************************
static int Main(string[] args)
private static void InsiderTransactionsTest()
{
try
{
MDTrace.LogLevel = LogLevel.DEBUG;
String strLogFile = "marketdata.log";
Utility.DeleteFile(strLogFile);
Trace.Listeners.Add(new TextWriterTraceListener(strLogFile));
DateTime currentDate=DateTime.Now;
// InsiderTransactionMarketDataHelper.LoadInsiderTransactionsYearGreaterEqualEx("COIN",2023);
// Run the Year loader
// InsiderTransactionMarketDataHelper.LoadInsiderTransactionsYearGreaterEqualEx("COIN",2023);
// Run Insider Transactions
//InsiderTransactions insiderTransactions =MarketDataHelper.GetInsiderTransactionsYear("COIN",2023);
//InsiderTransactionDA.InsertInsiderTransactions(insiderTransactions);
//Console.WriteLine("Done");
//Console.ReadLine();
// Trying to figure out in Form 4 and Form 5
// How to tell if acquiring or disposing
//String symbol = "COIN";
// Query Symbol and save files
//String symbol = "AAPL";
//String[] descFilter = new String[] { "Form 4", "Form 5" };
//SECFilings secFilings = MarketDataHelper.GetSECFilings(symbol, 7);
//SECFilings secFilings = MarketDataHelper.GetSECFilings(symbol,120);
//secFilings = new SECFilings(secFilings.Where(x => descFilter.Any(y => x.Description.StartsWith(y))).ToList());
//foreach (SECFiling secFiling in secFilings)
//{
@@ -644,20 +628,64 @@ namespace MarketData
//Console.Read();
//return 0;
// Load 1 file
//String symbol="AAPL";
//String fileName="c:\\2\\AAPL-0000320193-23-000111.html";
//String secAccessionNumber=Utility.BetweenString(fileName,"-",".html");
//FileStream inStream = new FileStream(fileName, FileMode.Open);
//StreamReader streamReader = new StreamReader(inStream);
//String html = streamReader.ReadToEnd();
//streamReader.Close();
//streamReader.Dispose();
//InsiderTransactions insiderTransactions = InsiderTransactionsParser.GetInstance().Parse(html, symbol, secAccessionNumber, "4", DateTime.Now);
//String[] fileNames=Directory.GetFiles("c:\\2","*.html");
//foreach(String fileName in fileNames)
// Load Files
//InsiderTransactions mainList=new InsiderTransactions();
//String symbol = "AAPL";
//String[] fileNames = Directory.GetFiles("c:\\2", "*.html");
//foreach (String fileName in fileNames)
//{
// FileStream inStream=new FileStream(fileName,FileMode.Open);
// StreamReader streamReader=new StreamReader(inStream);
// String html=streamReader.ReadToEnd();
// String secAccessionNumber=Utility.BetweenString(fileName,"-",".html");
// FileStream inStream = new FileStream(fileName, FileMode.Open);
// StreamReader streamReader = new StreamReader(inStream);
// String html = streamReader.ReadToEnd();
// streamReader.Close();
// streamReader.Dispose();
// InsiderTransactions insiderTransactions=InsiderTransactionsParser.GetInstance().Parse(html,"LEG","001","1","1",DateTime.Now);
// InsiderTransactions insiderTransactions = InsiderTransactionsParser.GetInstance().Parse(html, symbol, secAccessionNumber, "4", DateTime.Now);
// if(null!=insiderTransactions)mainList.AddRange(insiderTransactions);
//}
//Dictionary<String,InsiderTransaction> dictionary=new Dictionary<String,InsiderTransaction>();
//foreach(InsiderTransaction insiderTransaction in mainList)
//{
// String insiderTransactionKey = insiderTransaction.Form + insiderTransaction.SECAccessionNumber + insiderTransaction.FormRowNumber;
// if(dictionary.ContainsKey(insiderTransactionKey))
// {
// Console.WriteLine(String.Format("Key exists {0}",insiderTransactionKey));
// }
// dictionary.Add(insiderTransactionKey,insiderTransaction);
//}
//Console.WriteLine("Done");
//Console.Read();
//return 0;
}
// **********************************************************************************************************
static int Main(string[] args)
{
try
{
MDTrace.LogLevel = LogLevel.DEBUG;
String strLogFile = "marketdata.log";
Utility.DeleteFile(strLogFile);
Trace.Listeners.Add(new TextWriterTraceListener(strLogFile));
DateTime currentDate=DateTime.Now;
String insiderName=@"Deutsche Bank Ag\";
insiderName=SqlUtils.SqlString(insiderName);
DateTime maxHolidayDate=HolidayDA.GetMaxHolidayDate();
@@ -1879,7 +1907,7 @@ namespace MarketData
ThreadPool.QueueUserWorkItem(delegate
{
LoadInsiderTransactions(); // InsiderTracking stopped working so this source is now going directly to SEC.GOV. www.insidertracking.com
LoadInsiderTransactions();
resetEvents[STAGE_6].Set();
});

Binary file not shown.

View File

@@ -1,11 +0,0 @@
<?xml version="1.0"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.0.8.0" newVersion="2.0.8.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/></startup></configuration>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,19 +1,19 @@
CMTSESSIONv1.00
LastUpdated=2/23/2024 09:03:11 PM
TradeDate=2/23/2024
LastUpdated=2/27/2024 08:12:45 PM
TradeDate=2/27/2024
StartDate=1/1/0001
AnalysisDate=2/23/2024
AnalysisDate=2/27/2024
CashBalance=935.52
NonTradeableCash=6121.73
SuspendTrading=False|UsePriceSlopeIndicator=True|UsePriceSlopeIndicatorDays=252|AnalysisDate=2/23/2024|BetaMonths=6|TradeDate=2/23/2024|MarketCapLowerLimit=500000000|SidewaysDetection=False|SidewaysAfterDays=30|PriceTrendDays=20|CheckOutliersInReturnStream=True|DailyReturnLimit=0.25|MaxDailyPositions=3|MaxOpenPositions=6|NoTradeSymbols=CODYY,MARUY,CSTM,CS,NATI,QADA,CRTO,GTBIF,CLCT,PRSC,CMD,STAY,GBTC,YOKU,PNY,RFMD,ASAZY,USMO,VNR,STB,XIV,SYNT,DFP|OnlyTradeSymbols=|MinRSI=70|InitialCash=10000|TotalRiskPercentDecimal=0.05|PositionRiskPercentDecimal=0.12|EquityOnly=False|MinPercentReturnProximityTo52WeekHigh=30|MinPercentReturnOver52WeekLow=80|ProfitMarginCheck=True|EPSCheck=True|MinDaysBetweenReholding=30|LiquidityCheck=True|MinVolume=1000|DMA200Horizon=15|MinDaysBetweenStopAdjustments=30|MinDaysBetweenInitialStopAdjustment=5|MaxPricingExceptions=3|MACDSetup=(12,26,9)|MACDSignalDays=5|MACDRejectStrongSells=True|MACDRejectWeakSells=True|UseMarketIndicator=True|Benchmark=SPY|BenchmarkMovingAverageDays=200|BenchmarkMovingAverageHorizon=5|UseMarketIndicatorVolatility=True|UseMarketIndicatorVolatilityHorizon=60|UseMarketIndicatorVolatilityBenchmark=^VIX|UseStopLimitScaling=True|StopLimitScalingType=AverageTrueRange|StopLimitScalingVolatilityDays=30|SellOnDMABreak=True|DMABreakValues=200|DMABreakForceBreak=False|EntryType=OverExtended,MVP,PriceTrend,VolumeTrend|EntryHorizon=30|CandidateExpiryDays=180|VolumeTrendDays=10|ChannelBreakoutHorizon=40|UseOverExtendedIndicatorDays=45|UseOverExtendedIndicatorViolationThreshhold=1|UseOverExtendedIndicatorMarginPercent=1|MaxBeta=10|UseMaxBeta=False|UseProfitMaximization=True|UseProfitMaximizationExpression=R_THRESSHOLD=4;MAX_ATR=3;MULTIPLIER=MAX_ATR;IF(RMultiple>=R_THRESSHOLD){MULTIPLIER=1.2;}|UseTradeOnlySectors=True|UseTradeOnlySectorsSectors=Healthcare,Technology,Basic Materials,Consumer Defensive,Industrials
SuspendTrading=False|UsePriceSlopeIndicator=True|UsePriceSlopeIndicatorDays=252|AnalysisDate=2/27/2024|BetaMonths=6|TradeDate=2/27/2024|MarketCapLowerLimit=500000000|SidewaysDetection=False|SidewaysAfterDays=30|PriceTrendDays=20|CheckOutliersInReturnStream=True|DailyReturnLimit=0.25|MaxDailyPositions=3|MaxOpenPositions=6|NoTradeSymbols=CODYY,MARUY,CSTM,CS,NATI,QADA,CRTO,GTBIF,CLCT,PRSC,CMD,STAY,GBTC,YOKU,PNY,RFMD,ASAZY,USMO,VNR,STB,XIV,SYNT,DFP|OnlyTradeSymbols=|MinRSI=70|InitialCash=10000|TotalRiskPercentDecimal=0.05|PositionRiskPercentDecimal=0.12|EquityOnly=False|MinPercentReturnProximityTo52WeekHigh=30|MinPercentReturnOver52WeekLow=80|ProfitMarginCheck=True|EPSCheck=True|MinDaysBetweenReholding=30|LiquidityCheck=True|MinVolume=1000|DMA200Horizon=15|MinDaysBetweenStopAdjustments=30|MinDaysBetweenInitialStopAdjustment=5|MaxPricingExceptions=3|MACDSetup=(12,26,9)|MACDSignalDays=5|MACDRejectStrongSells=True|MACDRejectWeakSells=True|UseMarketIndicator=True|Benchmark=SPY|BenchmarkMovingAverageDays=200|BenchmarkMovingAverageHorizon=5|UseMarketIndicatorVolatility=True|UseMarketIndicatorVolatilityHorizon=60|UseMarketIndicatorVolatilityBenchmark=^VIX|UseStopLimitScaling=True|StopLimitScalingType=AverageTrueRange|StopLimitScalingVolatilityDays=30|SellOnDMABreak=True|DMABreakValues=200|DMABreakForceBreak=False|EntryType=OverExtended,MVP,PriceTrend,VolumeTrend|EntryHorizon=30|CandidateExpiryDays=180|VolumeTrendDays=10|ChannelBreakoutHorizon=40|UseOverExtendedIndicatorDays=45|UseOverExtendedIndicatorViolationThreshhold=1|UseOverExtendedIndicatorMarginPercent=1|MaxBeta=10|UseMaxBeta=False|UseProfitMaximization=True|UseProfitMaximizationExpression=R_THRESSHOLD=4;MAX_ATR=3;MULTIPLIER=MAX_ATR;IF(RMultiple>=R_THRESSHOLD){MULTIPLIER=1.2;}|UseTradeOnlySectors=True|UseTradeOnlySectorsSectors=Healthcare,Technology,Basic Materials,Consumer Defensive,Industrials
PricingExceptions=0
TotalActivePositions=6
Symbol=AVGO|PurchaseDate=10/13/2023 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=1|PurchasePrice=890.97|CurrentPrice=1296.37|Exposure=890.97|MarketValue=1296.37|GainLoss=405.4|GainLossPcnt=0.455009708519928|PositionRiskDecimal=0.12|R=105.9816|C=109.885485794067|P=1.0368355053525|InitialStopLimit=784.05|TrailingStopLimit=1182.1635710907|TotalRiskExposure=105.9816|RMultiple=3.83R|Volatility=19.4005393981934|Volume=0|LastStopAdjustment=2/22/2024 12:00:00 AM|Comment=Price changed on 10/16/2023 from $883.18 to $890.97
Symbol=APG|PurchaseDate=11/8/2023 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=77|PurchasePrice=27.08|CurrentPrice=35.27|Exposure=2085.16|MarketValue=2715.79|GainLoss=630.630000000001|GainLossPcnt=0.302437223042836|PositionRiskDecimal=0.12|R=3.2304|C=250.186|P=77.4473749380882|InitialStopLimit=23.83|TrailingStopLimit=29.8718571519852|TotalRiskExposure=248.7408|RMultiple=2.54R|Volatility=1.05591440200806|Volume=0|LastStopAdjustment=1/30/2024 12:00:00 AM|Comment=Price changed on 11/9/2023 from $26.92 to $27.08
Symbol=CLS|PurchaseDate=1/4/2024 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=32|PurchasePrice=27.92|CurrentPrice=40.43|Exposure=893.44|MarketValue=1293.76|GainLoss=400.32|GainLossPcnt=0.448065902578796|PositionRiskDecimal=0.12|R=3.3504|C=107.5275|P=32.0939290830946|InitialStopLimit=24.5696|TrailingStopLimit=32.95149995327|TotalRiskExposure=107.2128|RMultiple=3.73R|Volatility=0.907680511474609|Volume=0|LastStopAdjustment=2/8/2024 12:00:00 AM
Symbol=FTAI|PurchaseDate=1/23/2024 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=14|PurchasePrice=51|CurrentPrice=57.9|Exposure=714|MarketValue=810.6|GainLoss=96.6|GainLossPcnt=0.135294117647059|PositionRiskDecimal=0.12|R=6.036|C=85.6855|P=14.1957422133863|InitialStopLimit=44.88|TrailingStopLimit=48.3208568096161|TotalRiskExposure=84.504|RMultiple=1.14R|Volatility=1.01389157772064|Volume=0|LastStopAdjustment=1/29/2024 12:00:00 AM|Comment=Price changed on 1/24/2024 from $50.30 to $51.00
Symbol=NEU|PurchaseDate=2/20/2024 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=1|PurchasePrice=609.01|CurrentPrice=631.88|Exposure=609.01|MarketValue=631.88|GainLoss=22.87|GainLossPcnt=0.0375527495443425|PositionRiskDecimal=0.12|R=73.0956|C=73.588|P=1.00673638358533|InitialStopLimit=535.93|TrailingStopLimit=535.93|TotalRiskExposure=73.0956|RMultiple=0.31R|Volatility=10.5676956176758|Volume=0|LastStopAdjustment=1/1/0001 12:00:00 AM|Comment=Price changed on 2/21/2024 from $609.13 to $609.01
Symbol=KTOS|PurchaseDate=2/23/2024 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=30|PurchasePrice=17.94|CurrentPrice=18.05|Exposure=538.2|MarketValue=541.5|GainLoss=3.29999999999995|GainLossPcnt=0.00613154960981039|PositionRiskDecimal=0.12|R=2.4216|C=73.686|P=30.4286422200198|InitialStopLimit=15.79|TrailingStopLimit=15.79|TotalRiskExposure=72.648|RMultiple=0.05R|Volatility=0.288610696792603|Volume=0|LastStopAdjustment=1/1/0001 12:00:00 AM|Comment=Price changed on 2/23/2024 from $20.18 to $17.94
Symbol=AVGO|PurchaseDate=10/13/2023 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=1|PurchasePrice=890.97|CurrentPrice=1296.23|Exposure=890.97|MarketValue=1296.23|GainLoss=405.26|GainLossPcnt=0.454852576405491|PositionRiskDecimal=0.12|R=105.9816|C=109.885485794067|P=1.0368355053525|InitialStopLimit=784.05|TrailingStopLimit=1182.1635710907|TotalRiskExposure=105.9816|RMultiple=3.82R|Volatility=19.4005393981934|Volume=0|LastStopAdjustment=2/22/2024 12:00:00 AM|Comment=Price changed on 10/16/2023 from $883.18 to $890.97
Symbol=APG|PurchaseDate=11/8/2023 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=77|PurchasePrice=27.08|CurrentPrice=35.72|Exposure=2085.16|MarketValue=2750.44|GainLoss=665.28|GainLossPcnt=0.319054652880355|PositionRiskDecimal=0.12|R=3.2304|C=250.186|P=77.4473749380882|InitialStopLimit=23.83|TrailingStopLimit=29.8718571519852|TotalRiskExposure=248.7408|RMultiple=2.67R|Volatility=1.05591440200806|Volume=0|LastStopAdjustment=1/30/2024 12:00:00 AM|Comment=Price changed on 11/9/2023 from $26.92 to $27.08
Symbol=CLS|PurchaseDate=1/4/2024 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=32|PurchasePrice=27.92|CurrentPrice=41.76|Exposure=893.44|MarketValue=1336.32|GainLoss=442.88|GainLossPcnt=0.495702005730659|PositionRiskDecimal=0.12|R=3.3504|C=107.5275|P=32.0939290830946|InitialStopLimit=24.5696|TrailingStopLimit=32.95149995327|TotalRiskExposure=107.2128|RMultiple=4.13R|Volatility=0.907680511474609|Volume=0|LastStopAdjustment=2/8/2024 12:00:00 AM
Symbol=FTAI|PurchaseDate=1/23/2024 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=14|PurchasePrice=51|CurrentPrice=56.64|Exposure=714|MarketValue=792.96|GainLoss=78.96|GainLossPcnt=0.110588235294118|PositionRiskDecimal=0.12|R=6.036|C=85.6855|P=14.1957422133863|InitialStopLimit=44.88|TrailingStopLimit=48.3208568096161|TotalRiskExposure=84.504|RMultiple=0.93R|Volatility=1.01389157772064|Volume=0|LastStopAdjustment=1/29/2024 12:00:00 AM|Comment=Price changed on 1/24/2024 from $50.30 to $51.00
Symbol=NEU|PurchaseDate=2/20/2024 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=1|PurchasePrice=609.01|CurrentPrice=636.31|Exposure=609.01|MarketValue=636.31|GainLoss=27.3|GainLossPcnt=0.0448268501338237|PositionRiskDecimal=0.12|R=73.0956|C=73.588|P=1.00673638358533|InitialStopLimit=535.93|TrailingStopLimit=584.230923309326|TotalRiskExposure=73.0956|RMultiple=0.37R|Volatility=10.5676956176758|Volume=0|LastStopAdjustment=2/26/2024 12:00:00 AM|Comment=Price changed on 2/21/2024 from $609.13 to $609.01
Symbol=KTOS|PurchaseDate=2/23/2024 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=30|PurchasePrice=17.94|CurrentPrice=18.68|Exposure=538.2|MarketValue=560.4|GainLoss=22.1999999999999|GainLossPcnt=0.0412486064659976|PositionRiskDecimal=0.12|R=2.4216|C=73.686|P=30.4286422200198|InitialStopLimit=15.79|TrailingStopLimit=15.79|TotalRiskExposure=72.648|RMultiple=0.31R|Volatility=0.288610696792603|Volume=0|LastStopAdjustment=1/1/0001 12:00:00 AM|Comment=Price changed on 2/23/2024 from $20.18 to $17.94
TotalPositions=93
Symbol=CDNS|PurchaseDate=8/25/2020 12:00:00 AM|SellDate=9/3/2020 12:00:00 AM|Shares=16|PurchasePrice=111.82|CurrentPrice=109.57|Exposure=1789.12|MarketValue=1753.12|GainLoss=-36|GainLossPcnt=-0.0201216240386335|PositionRiskDecimal=0.12|R=13.3512|C=225.6365|P=16.9000913775541|InitialStopLimit=97.9088|TrailingStopLimit=109.599856939316|TotalRiskExposure=213.6192|RMultiple=-0.17R|Volatility=2.3209912776947|Volume=1767980|LastStopAdjustment=9/2/2020 12:00:00 AM|Comment=Manual close.
Symbol=LULU|PurchaseDate=8/28/2020 12:00:00 AM|SellDate=9/4/2020 12:00:00 AM|Shares=3|PurchasePrice=377.5|CurrentPrice=370.23|Exposure=1132.5|MarketValue=1110.69|GainLoss=-21.8099999999999|GainLossPcnt=-0.0192582781456953|PositionRiskDecimal=0.12|R=45.2976|C=136.6285|P=3.01624147857723|InitialStopLimit=332.1824|TrailingStopLimit=372.562428512573|TotalRiskExposure=135.8928|RMultiple=-0.16R|Volatility=25.858959197998|Volume=2871665|LastStopAdjustment=9/2/2020 12:00:00 AM|Comment=Manual close.
@@ -124,7 +124,6 @@ Symbol=PANW|AnalysisDate=11/30/2023 12:00:00 AM|EPSSlope=0.25|ProfitMarginSlope=
Symbol=ANET|AnalysisDate=12/8/2023 12:00:00 AM|EPSSlope=0.295000076293945|ProfitMarginSlope=1.45040702819824|PriceSlope=0.00225355321928034|Volatility=2.62224912643433|Volume=0|Violation=False|Slope=0.00225355321928034|Score=1.504074038628|AnnualizedReturn=1.76454948984694|SharpeRatio=-0.131296720296389|RSquared=0.852384162236483|BetaMonths=6|Beta=0.381395178878628
Symbol=SNPS|AnalysisDate=12/13/2023 12:00:00 AM|EPSSlope=0.0799999237060547|ProfitMarginSlope=0.106899261474609|PriceSlope=0.00193019467966363|Volatility=11.9729852676392|Volume=0|Violation=False|Slope=0.00193019467966363|Score=1.49372200992909|AnnualizedReturn=1.62646518082017|SharpeRatio=-0.153186503118447|RSquared=0.918385482544332|BetaMonths=6|Beta=0.0832684423681687
Symbol=SSD|AnalysisDate=11/21/2023 12:00:00 AM|EPSSlope=0.184999942779541|ProfitMarginSlope=2.95830535888672|PriceSlope=0.00227087825283497|Volatility=7.70265865325928|Volume=0|Violation=False|Slope=0.00227087825283497|Score=1.46707813655858|AnnualizedReturn=1.77227019306316|SharpeRatio=-0.12144364192519|RSquared=0.827795977329453|BetaMonths=6|Beta=2.2027356700604
Symbol=CRS|AnalysisDate=8/30/2023 12:00:00 AM|EPSSlope=0.365000009536743|ProfitMarginSlope=1.52712726593018|PriceSlope=0.0021979111222871|Volatility=1.54457581043243|Volume=0|Violation=False|Slope=0.0021979111222871|Score=1.45622984596095|AnnualizedReturn=1.73997997200175|SharpeRatio=0.037174817773601|RSquared=0.836923337850632|BetaMonths=6|Beta=2.67659975297287
Symbol=PGTI|AnalysisDate=12/13/2023 12:00:00 AM|EPSSlope=0.0699999928474426|ProfitMarginSlope=0.424097061157227|PriceSlope=0.00206934291782257|Volatility=0.689634144306183|Volume=0|Violation=False|Slope=0.00206934291782257|Score=1.43626962987798|AnnualizedReturn=1.68450948616521|SharpeRatio=-0.056807517146353|RSquared=0.852633743931982|BetaMonths=6|Beta=1.28415886682616
Symbol=GE|AnalysisDate=11/30/2023 12:00:00 AM|EPSSlope=0.189999580383301|ProfitMarginSlope=0.144966125488281|PriceSlope=0.00222670491780087|Volatility=2.35912609100342|Volume=0|Violation=False|Slope=0.00222670491780087|Score=1.43577997878423|AnnualizedReturn=1.75265124615312|SharpeRatio=-0.0645451634428008|RSquared=0.8192046089806|BetaMonths=6|Beta=0.872023000752983
Symbol=OMAB|AnalysisDate=9/12/2023 12:00:00 AM|EPSSlope=0.210000038146973|ProfitMarginSlope=4.17186164855957|PriceSlope=0.00210614802223795|Volatility=3.22932982444763|Volume=0|Violation=False|Slope=0.00210614802223795|Score=1.42174995510639|AnnualizedReturn=1.7002057983768|SharpeRatio=-0.036974325164875|RSquared=0.836222271717779|BetaMonths=6|Beta=0.243820685910976
@@ -135,7 +134,6 @@ Symbol=VNT|AnalysisDate=12/1/2023 12:00:00 AM|EPSSlope=0.130000054836273|ProfitM
Symbol=ESAB|AnalysisDate=12/14/2023 12:00:00 AM|EPSSlope=0.0349999666213989|ProfitMarginSlope=0.250476837158203|PriceSlope=0.00162973715895437|Volatility=2.4698178768158|Volume=0|Violation=False|Slope=0.00162973715895437|Score=1.25966101728851|AnnualizedReturn=1.50786352383785|SharpeRatio=-0.100133068197843|RSquared=0.835394581389165|BetaMonths=6|Beta=1.70094773557852
Symbol=ABCM|AnalysisDate=11/17/2023 12:00:00 AM|EPSSlope=0.00499999988824129|ProfitMarginSlope=1.44848251342773|PriceSlope=0.00232276095376242|Volatility=0.233694449067116|Volume=0|Violation=False|Slope=0.00232276095376242|Score=1.22131918367872|AnnualizedReturn=1.79559377362862|SharpeRatio=-0.0549351115359085|RSquared=0.68017566200991|BetaMonths=6|Beta=3.49938189140572
Symbol=APG|AnalysisDate=12/14/2023 12:00:00 AM|EPSSlope=0.0449999868869781|ProfitMarginSlope=1.15570163726807|PriceSlope=0.00170191488677901|Volatility=0.87805587053299|Volume=0|Violation=False|Slope=0.00170191488677901|Score=1.21852374395096|AnnualizedReturn=1.53554067680832|SharpeRatio=-0.0881450433955766|RSquared=0.79354703027712|BetaMonths=6|Beta=2.64943052027669
Symbol=ROCK|AnalysisDate=8/30/2023 12:00:00 AM|EPSSlope=0.0549999475479126|ProfitMarginSlope=2.25924968719482|PriceSlope=0.00180736292425266|Volatility=1.31475150585175|Volume=0|Violation=False|Slope=0.00180736292425266|Score=1.15956810364738|AnnualizedReturn=1.57689142560162|SharpeRatio=-0.170880152608771|RSquared=0.73535063024709|BetaMonths=6|Beta=1.54089145655045
Symbol=AMAT|AnalysisDate=2/16/2024 12:00:00 AM|EPSSlope=0.264999866485596|ProfitMarginSlope=0.235013961791992|PriceSlope=0.00151750491416847|Volatility=10.4882020950317|Volume=0|Violation=False|Slope=0.00151750491416847|Score=1.13374489144559|AnnualizedReturn=1.46581476047634|SharpeRatio=-0.276889339897599|RSquared=0.773457139343559|BetaMonths=6|Beta=1.4673190349198
Symbol=RDNT|AnalysisDate=12/14/2023 12:00:00 AM|EPSSlope=0.120000004768372|ProfitMarginSlope=0.18272876739502|PriceSlope=0.00205618872045596|Volatility=1.74087750911713|Volume=0|Violation=False|Slope=0.00205618872045596|Score=1.12887502203638|AnnualizedReturn=1.67893482157767|SharpeRatio=-0.00993619798026283|RSquared=0.672375727472011|BetaMonths=6|Beta=2.09207410217203
Symbol=AMD|AnalysisDate=12/7/2023 12:00:00 AM|EPSSlope=0.0749999955296516|ProfitMarginSlope=1.64666175842285|PriceSlope=0.00207910648359061|Volatility=2.73382687568665|Volume=0|Violation=False|Slope=0.00207910648359061|Score=1.09735936961719|AnnualizedReturn=1.68865918749998|SharpeRatio=-0.0275721429225287|RSquared=0.649840641462894|BetaMonths=6|Beta=0.944397430142836
@@ -165,7 +163,9 @@ Symbol=CLS|AnalysisDate=2/22/2024 12:00:00 AM|EPSSlope=0.180000007152557|ProfitM
Symbol=LLY|AnalysisDate=2/22/2024 12:00:00 AM|EPSSlope=0.190000057220459|ProfitMarginSlope=1.89461898803711|PriceSlope=0.00301157364528411|Volatility=34.7464294433594|Volume=0|Violation=False|Slope=0.00301157364528411|Score=1.96038312012648|AnnualizedReturn=2.13596077808923|SharpeRatio=0.0605736551264204|RSquared=0.917799212530567|BetaMonths=6|Beta=0.0119333172260655
Symbol=ETN|AnalysisDate=2/22/2024 12:00:00 AM|EPSSlope=0.275000333786011|ProfitMarginSlope=1.49309349060059|PriceSlope=0.00189315566217503|Volatility=4.61157941818237|Volume=0|Violation=False|Slope=0.00189315566217503|Score=1.38612519558705|AnnualizedReturn=1.61135465665921|SharpeRatio=-0.18392193629868|RSquared=0.860223532950143|BetaMonths=6|Beta=1.06183413594968
Symbol=EXP|AnalysisDate=2/22/2024 12:00:00 AM|EPSSlope=0.255000114440918|ProfitMarginSlope=1.53201389312744|PriceSlope=0.00162244868614764|Volatility=5.16628265380859|Volume=0|Violation=False|Slope=0.00162244868614764|Score=0.993788834520374|AnnualizedReturn=1.5050965800149|SharpeRatio=-0.121092992910934|RSquared=0.660282434839188|BetaMonths=6|Beta=2.09896610697018
TotalStopLimits=134
Symbol=SAIA|AnalysisDate=2/26/2024 12:00:00 AM|EPSSlope=0.335000038146973|ProfitMarginSlope=0.0959281921386719|PriceSlope=0.00260843242341365|Volatility=14.1582889556885|Volume=0|Violation=False|Slope=0.00260843242341365|Score=1.58033003145278|AnnualizedReturn=1.92962362452591|SharpeRatio=-0.105201071463255|RSquared=0.818983563098246|BetaMonths=6|Beta=1.5879090131986
Symbol=TEVA|AnalysisDate=2/26/2024 12:00:00 AM|EPSSlope=0.740000009536743|ProfitMarginSlope=3.93594932556152|PriceSlope=0.00134426338576597|Volatility=0.448272973299026|Volume=0|Violation=False|Slope=0.00134426338576597|Score=0.636468265347231|AnnualizedReturn=1.40319863970666|SharpeRatio=-0.286626985020246|RSquared=0.453583867128239|BetaMonths=6|Beta=0.799773787663302
TotalStopLimits=135
Symbol=CDNS|AnalysisDate=9/2/2020 12:00:00 AM|PreviousStop=97.9088|NewStop=109.599856939316|CurrentPriceLow=113.59|CurrentPriceClose=117.09|PriceTrendIndicatorSlope=0.310654103755951
Symbol=LULU|AnalysisDate=9/2/2020 12:00:00 AM|PreviousStop=332.1824|NewStop=372.562428512573|CurrentPriceLow=387.08|CurrentPriceClose=398.29|PriceTrendIndicatorSlope=2.77707505226135
Symbol=MASI|AnalysisDate=10/23/2020 12:00:00 AM|PreviousStop=213.34|NewStop=223.030285377502|CurrentPriceLow=240.68|CurrentPriceClose=244.77|PriceTrendIndicatorSlope=0.191601455211639
@@ -300,3 +300,4 @@ Symbol=APG|AnalysisDate=1/30/2024 12:00:00 AM|PreviousStop=29.3914284753799|NewS
Symbol=PLAB|AnalysisDate=2/8/2024 12:00:00 AM|PreviousStop=27.6232857298851|NewStop=29.0321999263763|CurrentPriceLow=30.47|CurrentPriceClose=31.62|PriceTrendIndicatorSlope=0.0766842067241669
Symbol=CLS|AnalysisDate=2/8/2024 12:00:00 AM|PreviousStop=24.7737137699127|NewStop=32.95149995327|CurrentPriceLow=36.39|CurrentPriceClose=37.54|PriceTrendIndicatorSlope=0.513090252876282
Symbol=AVGO|AnalysisDate=2/22/2024 12:00:00 AM|PreviousStop=1123.28627082825|NewStop=1182.1635710907|CurrentPriceLow=1276.47|CurrentPriceClose=1304.9|PriceTrendIndicatorSlope=2.54035210609436
Symbol=NEU|AnalysisDate=2/26/2024 12:00:00 AM|PreviousStop=535.93|NewStop=584.230923309326|CurrentPriceLow=619.39|CurrentPriceClose=631.48|PriceTrendIndicatorSlope=3.21256494522095

Binary file not shown.

Binary file not shown.