Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d85a46ba19 | |||
| fcadf5438a | |||
| 0181e56f84 | |||
| 10e1c87ec1 | |||
| aa13085fd3 | |||
| d4c97aaf0a | |||
| 05b9ac3897 | |||
| 22b387a2e3 | |||
| 922f99f061 | |||
| 5c1dd6b2c5 | |||
| 9062965aa0 | |||
| 8a8a02e928 | |||
| 21252bf3b3 | |||
| da2d87ee7f | |||
| 804504da84 | |||
| 2d4dcd5855 | |||
| 9bfedcf215 | |||
| 4783cd3cd1 | |||
| 4396a46c9f | |||
| 9db057e873 | |||
| 5c2d512280 | |||
| 596b183d7e | |||
| 0b2350812c | |||
| 67aa1bd0cf |
@@ -7,7 +7,7 @@ namespace MarketData.CNNProcessing
|
||||
{
|
||||
public class CNNClient
|
||||
{
|
||||
public enum Model{resnet50,resnet50B,resnet50_20241024_270,inception,vgg16,lenet5,ping};
|
||||
public enum Model{resnet50,resnet50B,resnet50_20241024_270,inception,vgg16,lenet5,convnext,ping};
|
||||
private static readonly string Alive="Alive";
|
||||
private readonly HttpClient client = new HttpClient();
|
||||
private string baseUrl;
|
||||
|
||||
@@ -3,27 +3,75 @@ using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using MarketData.Utils;
|
||||
using System.Text;
|
||||
using System.Globalization;
|
||||
|
||||
namespace MarketData.CNNProcessing
|
||||
{
|
||||
public class CNNProcessor
|
||||
{
|
||||
private static int dayCount=270;
|
||||
private static int width=128;
|
||||
private static int height=128;
|
||||
private static int dayCount=270; // This is the default days
|
||||
private static int width=128; // This is the default width
|
||||
private static int height=128; // THis is the defaukt height
|
||||
|
||||
private CNNProcessor()
|
||||
{
|
||||
}
|
||||
|
||||
public static void GenerateTraining()
|
||||
/// <summary>
|
||||
/// GenerateTraining - This is the new one. Please refer to the CNNImageProcessor project for information on how to call this method.
|
||||
/// </summary>
|
||||
/// <param name="avoid">This is the collection of avoid holdings</param>
|
||||
/// <param name="good">This is the collection of good holdings</param>
|
||||
/// <param name="dimension">The image dimensions. for example 224 for 224x224 or 128 for 128x128</param>
|
||||
/// <param name="histDays">This is the number of histDays. For example I used 90 for convnext</param>
|
||||
/// <param name="generateType">The type. For example I used BollingerBandWithVIX which is a bollinger band with ^VIX overay for convnext</param>
|
||||
/// <param name="rootFolder"></param>
|
||||
public static void GenerateTraining(List<Holding> avoid, List<Holding> good, int dimension, int histDays,TestCase.GenerateType generateType=TestCase.GenerateType.BollingerBandWithVIX,String rootFolder=@"C:\boneyard\DeepLearning\ModelInputData\")
|
||||
{
|
||||
TestCases testCases=new TestCases();
|
||||
DataProcessor dataProcessor=new DataProcessor();
|
||||
dataProcessor.Width=dimension;
|
||||
dataProcessor.Height=dimension;
|
||||
dataProcessor.PenWidthArray=new float[]{.25f,.50f,.75f,1.00f,1.50f,2.00f};
|
||||
|
||||
if(!rootFolder.EndsWith(@"\"))rootFolder+=@"\";
|
||||
// [0] Data - The avoid data
|
||||
foreach(Holding holding in avoid)
|
||||
{
|
||||
testCases.Add(new TestCase(holding.Symbol,holding.PurchaseDate,histDays,TestCase.CaseType.Training,generateType));
|
||||
}
|
||||
dataProcessor.SetOutputFolderPath(rootFolder+"0");
|
||||
dataProcessor.ClearFolderPath();
|
||||
dataProcessor.ProcessData(testCases);
|
||||
testCases.Clear();
|
||||
|
||||
// [1] Data - The good data
|
||||
foreach(Holding holding in good)
|
||||
{
|
||||
testCases.Add(new TestCase(holding.Symbol,holding.PurchaseDate,histDays,TestCase.CaseType.Training,generateType));
|
||||
}
|
||||
dataProcessor.SetOutputFolderPath(rootFolder+"1");
|
||||
dataProcessor.ClearFolderPath();
|
||||
dataProcessor.ProcessData(testCases);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GenerateTraining - This is the old methof training the resnet model. Please see above
|
||||
/// </summary>
|
||||
/// <param name="rootFolder"></param>
|
||||
public static void GenerateTraining(String rootFolder=@"C:\boneyard\DeepLearning\ModelInputData\")
|
||||
{
|
||||
TestCases testCases=new TestCases();
|
||||
DataProcessor dataProcessor=new DataProcessor();
|
||||
dataProcessor.Width=width;
|
||||
dataProcessor.Height=height;
|
||||
dataProcessor.PenWidthArray=new float[]{.50f,.75f,1.00f,1.12f,1.25f,1.31f,1.37f,1.50f,1.56f,1.62f,1.75f,1.87f,2.00f};
|
||||
// dataProcessor.PenWidthArray=new float[]{.50f,.75f,1.00f,1.12f,1.25f,1.31f,1.37f,1.50f,1.56f,1.62f,1.75f,1.87f,2.00f};
|
||||
|
||||
// Testing with 20,000 images in each set so reducing this use of pens to just one. It was producing 260,000 images for each classification,
|
||||
// takings many hours to build the datasets
|
||||
dataProcessor.PenWidthArray=new float[]{.75f,1.00f,1.12f};
|
||||
|
||||
if(!rootFolder.EndsWith(@"\"))rootFolder+=@"\";
|
||||
// [0] Data - The avoid data
|
||||
testCases.Add(new TestCase("CENX",DateTime.Parse("03/31/2022"),270,TestCase.CaseType.Training,TestCase.GenerateType.BollingerBand));
|
||||
testCases.Add(new TestCase("ICPT",DateTime.Parse("12/31/2019"),270,TestCase.CaseType.Training,TestCase.GenerateType.BollingerBand));
|
||||
@@ -56,8 +104,8 @@ namespace MarketData.CNNProcessing
|
||||
testCases.Add(new TestCase("INBX",DateTime.Parse("01/31/2024"),270,TestCase.CaseType.Training,TestCase.GenerateType.BollingerBand));
|
||||
testCases.Add(new TestCase("WYNN",DateTime.Parse("02/28/2023"),270,TestCase.CaseType.Training,TestCase.GenerateType.BollingerBand));
|
||||
|
||||
|
||||
dataProcessor.SetOutputFolderPath(@"C:\boneyard\DeepLearning\ModelInputData\0");
|
||||
// ****
|
||||
dataProcessor.SetOutputFolderPath(rootFolder+"0");
|
||||
dataProcessor.ProcessData(testCases);
|
||||
testCases.Clear();
|
||||
|
||||
@@ -102,7 +150,8 @@ namespace MarketData.CNNProcessing
|
||||
testCases.Add(new TestCase("DOCU",DateTime.Parse("05/30/2020"),270,TestCase.CaseType.Training,TestCase.GenerateType.BollingerBand));
|
||||
testCases.Add(new TestCase("SIG",DateTime.Parse("10/30/2020"),270,TestCase.CaseType.Training,TestCase.GenerateType.BollingerBand));
|
||||
|
||||
dataProcessor.SetOutputFolderPath(@"C:\boneyard\DeepLearning\ModelInputData\1");
|
||||
// ***
|
||||
dataProcessor.SetOutputFolderPath(rootFolder+"1");
|
||||
dataProcessor.ProcessData(testCases);
|
||||
}
|
||||
|
||||
@@ -204,4 +253,76 @@ namespace MarketData.CNNProcessing
|
||||
Console.WriteLine("");
|
||||
}
|
||||
}
|
||||
|
||||
public class Holding
|
||||
{
|
||||
public String Symbol {get;set;}
|
||||
public DateTime PurchaseDate {get; set; }
|
||||
public double PurchasePrice {get;set;}
|
||||
public DateTime SellDate {get; set; }
|
||||
public double SellPrice {get;set;}
|
||||
public double GainLoss{ get; set;}
|
||||
public double GainLossPercent {get;set;}
|
||||
private static readonly string[] DateFormats = { "MM/dd/yyyy", "M/dd/yyyy", "M/d/yyyy" };
|
||||
private static readonly CultureInfo UsCulture = CultureInfo.GetCultureInfo("en-US");
|
||||
|
||||
public static String Heading
|
||||
{
|
||||
get
|
||||
{
|
||||
return "Symbol,Shares,Purchase Date,Purchase Price,Sell Date,Sell Price,Exposure,Beta,BetaMonths,SharpeRatio,RiskAdjustedWeight,RiskAdjustedAllocation,TargetBetaOverBeta,Score,CNN Prediction,Market Value,Gain Loss,Gain Loss (%)";
|
||||
}
|
||||
}
|
||||
|
||||
public String ToTestCase()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("testCases.Add(new TestCase(").Append("\"").Append(Symbol).Append("\"").Append(",");
|
||||
sb.Append("DateTime.Parse(").Append("\"").Append(Utility.DateTimeToStringMMSDDSYYYY(PurchaseDate)).Append("\")").Append(",");
|
||||
sb.Append("270,TestCase.CaseType.Training,TestCase.GenerateType.BollingerBand));");
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
public override String ToString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append(Symbol).Append(",");
|
||||
sb.Append(","); // shares
|
||||
sb.Append(PurchaseDate.ToShortDateString()).Append(",");
|
||||
sb.Append(Utility.FormatNumber(PurchasePrice,3)).Append(",");
|
||||
sb.Append(SellDate.ToShortDateString()).Append(",");
|
||||
sb.Append(Utility.FormatNumber(SellPrice,3)).Append(",");
|
||||
sb.Append(","); //exposure
|
||||
sb.Append(","); //beta
|
||||
sb.Append(","); //bta months
|
||||
sb.Append(","); //sharpe ratio
|
||||
sb.Append(","); //risk adjusted weight
|
||||
sb.Append(","); //RiskAdjustedAllocation
|
||||
sb.Append(","); //TargetBetaOverBeta
|
||||
sb.Append(","); //Score
|
||||
sb.Append(","); //CNNPrediction
|
||||
sb.Append(","); //Market Value
|
||||
sb.Append(Utility.FormatNumber(GainLoss,3)).Append(",");
|
||||
sb.Append(Utility.FormatNumber(GainLossPercent,3));
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
|
||||
public static Holding FromString(string strLine)
|
||||
{
|
||||
string[] items = strLine.Split(',');
|
||||
|
||||
Holding holding = new Holding();
|
||||
holding.Symbol = items[0];
|
||||
if(string.IsNullOrEmpty(holding.Symbol))return null;
|
||||
holding.PurchaseDate = DateTime.ParseExact(items[2], DateFormats, UsCulture, DateTimeStyles.AssumeLocal);
|
||||
holding.PurchasePrice = double.Parse(items[3], UsCulture);
|
||||
holding.SellDate = DateTime.ParseExact(items[4], DateFormats, UsCulture, DateTimeStyles.AssumeLocal);
|
||||
holding.SellPrice = double.Parse(items[5], UsCulture);
|
||||
holding.GainLoss = double.Parse(items[16], UsCulture);
|
||||
holding.GainLossPercent = double.Parse(items[17].TrimEnd('%'), UsCulture) / 100.0;
|
||||
|
||||
return holding;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ namespace MarketData.CNNProcessing
|
||||
Height=height;
|
||||
PenWidth=2f;
|
||||
DrawingBrush=new SolidBrush(Color.Black);
|
||||
DrawingBrushRed=new SolidBrush(Color.Red);
|
||||
DrawingBrushGreen=new SolidBrush(Color.Green);
|
||||
FillBrush=new SolidBrush(Color.White);
|
||||
DrawPrice=true;
|
||||
UseGrayScale=false;
|
||||
@@ -60,6 +62,18 @@ namespace MarketData.CNNProcessing
|
||||
///<param name="value">Gets/Sets the drawing brush brush</param>
|
||||
public Brush DrawingBrush{get;set;}
|
||||
|
||||
/// <summary>
|
||||
/// DrawingBrushRed
|
||||
/// </summary>
|
||||
///<param name="value">Gets/Sets the drawing brush brush</param>
|
||||
public Brush DrawingBrushRed{get;set;}
|
||||
|
||||
/// <summary>
|
||||
/// DrawingBrushGreen
|
||||
/// </summary>
|
||||
///<param name="value">Gets/Sets the drawing brush brush</param>
|
||||
public Brush DrawingBrushGreen{get;set;}
|
||||
|
||||
/// <summary>
|
||||
/// DrawBlack
|
||||
/// </summary>
|
||||
@@ -143,6 +157,29 @@ namespace MarketData.CNNProcessing
|
||||
this.strFolderPath=strFolderPath;
|
||||
if(!this.strFolderPath.EndsWith(@"\"))this.strFolderPath=this.strFolderPath+@"\";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ClearFolderPath
|
||||
/// </summary>
|
||||
///<param name="testCases">The test cases</param>
|
||||
public void ClearFolderPath()
|
||||
{
|
||||
if(String.IsNullOrEmpty(strFolderPath))throw new InvalidDataException($"{nameof(strFolderPath)} cannot be null");
|
||||
if(!Directory.Exists(strFolderPath))
|
||||
{
|
||||
Directory.CreateDirectory(strFolderPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
String[] pathFileNames = Directory.GetFiles(strFolderPath);
|
||||
Console.WriteLine($"Deleting {pathFileNames.Length} files from {strFolderPath}");
|
||||
foreach(String file in pathFileNames)
|
||||
{
|
||||
File.Delete(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void ProcessData(TestCases testCases)
|
||||
{
|
||||
for(int index=0;index<testCases.Count;index++)
|
||||
@@ -173,7 +210,7 @@ namespace MarketData.CNNProcessing
|
||||
}
|
||||
}
|
||||
}
|
||||
else // Bollinger bands
|
||||
else if(testCase.TypeGenerate.Equals(TestCase.GenerateType.BollingerBand))// Bollinger bands
|
||||
{
|
||||
if(null==MovingAverageArray)
|
||||
{
|
||||
@@ -194,7 +231,6 @@ namespace MarketData.CNNProcessing
|
||||
for(int avgIndex=0;avgIndex<MovingAverageArray.Length;avgIndex++)
|
||||
{
|
||||
int movingAverage=MovingAverageArray[avgIndex];
|
||||
|
||||
for(int penIndex=0;penIndex<PenWidthArray.Length;penIndex++)
|
||||
{
|
||||
float penWidth=PenWidthArray[penIndex];
|
||||
@@ -208,7 +244,22 @@ namespace MarketData.CNNProcessing
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} // Bollinger Bands
|
||||
else if(testCase.TypeGenerate.Equals(TestCase.GenerateType.BollingerBandWithVIX))
|
||||
{
|
||||
for (int penIndex = 0; penIndex < PenWidthArray.Length; penIndex++)
|
||||
{
|
||||
float penWidth = PenWidthArray[penIndex];
|
||||
for (int noiseIndex = 0; noiseIndex < NoiseArray.Length; noiseIndex++)
|
||||
{
|
||||
double noise = NoiseArray[noiseIndex];
|
||||
String strPathFileName = CreateFileName(strFolderPath, testCase.Symbol, testCase.DayCount, index, penIndex, noiseIndex, testCase.TypeCase, testCase.TypeGenerate, testCase.PurchaseDate);
|
||||
testCase.PathFileNames.Add(strPathFileName);
|
||||
ProcessBollingerBandDataWithVolatility(testCase, penWidth, noise);
|
||||
}
|
||||
}
|
||||
} // Bollinger Bands with ~VIX
|
||||
else throw new InvalidDataException("Unknown option");
|
||||
}
|
||||
|
||||
private String CreateFileName(String strFolderPath,String symbol,int dayCount,int index,int penIndex,int noiseIndex,TestCase.CaseType caseType,TestCase.GenerateType generateType,DateTime purchaseDate)
|
||||
@@ -216,6 +267,130 @@ namespace MarketData.CNNProcessing
|
||||
return String.Format("{0}{1}_{2}_{3}_{4}_{5}_{6}_{7}_{8}d.jpg",strFolderPath,symbol,index,penIndex,noiseIndex,caseType.ToString(),generateType.ToString(),Utility.DateToLong(purchaseDate),dayCount);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ProcessBollingerBandData item - Draws Price, K, L and Volatility
|
||||
/// </summary>
|
||||
///<param name="testCase">Symbol</param>
|
||||
private void ProcessBollingerBandDataWithVolatility(TestCase testCase,float penWidth,double noise)
|
||||
{
|
||||
String symbolVolatility="^VIX";
|
||||
DateGenerator dateGenerator=new DateGenerator();
|
||||
|
||||
int daysInPeriod=dateGenerator.DaysBetweenActual(testCase.PurchaseDate,testCase.HistDate);
|
||||
daysInPeriod+=60;
|
||||
Prices prices=PricingDA.GetPrices(testCase.Symbol,testCase.PurchaseDate,daysInPeriod);
|
||||
Prices volatilityPrices=PricingDA.GetPrices(symbolVolatility,testCase.PurchaseDate,daysInPeriod);
|
||||
BollingerBands bollingerBands=BollingerBandGenerator.GenerateBollingerBands(prices); // we want to grab K, L, and Close
|
||||
bollingerBands=new BollingerBands(bollingerBands.Where(x=>x.Date>=testCase.HistDate).ToList());
|
||||
float[] k=new float[bollingerBands.Count];
|
||||
float[] l=new float[bollingerBands.Count];
|
||||
float[] close=new float[bollingerBands.Count];
|
||||
|
||||
// Line up volatility dates with bollinger bands
|
||||
DateTime minDate = bollingerBands.Min(x=>x.Date);
|
||||
DateTime maxDate = bollingerBands.Max(x=>x.Date);
|
||||
volatilityPrices = new Prices(volatilityPrices.Where(x=>x.Date<=maxDate && x.Date>=minDate).OrderBy(x=>x.Date).ToList()); // most historical date in lowest index
|
||||
float[] v=volatilityPrices.GetPrices();
|
||||
float minV=Numerics.Min(ref v); // get the minimum volatility value
|
||||
double minP=bollingerBands.Min(x=>x.Close); // get minimum price
|
||||
double factor=minP/minV; // determine scaling factor
|
||||
for(int index=0;index<v.Length;index++)
|
||||
{
|
||||
double item = v[index];
|
||||
item*=factor;
|
||||
v[index]=(float)Math.Log(item)*1000.00f;
|
||||
}
|
||||
|
||||
// populate the arrays in reverse order so that we have the most historical date in the lowest index
|
||||
for(int index=bollingerBands.Count-1;index>=0;index--)
|
||||
{
|
||||
BollingerBandElement bollingerBandElement=bollingerBands[index];
|
||||
k[bollingerBands.Count-index-1]=(float)Math.Log(bollingerBandElement.K)*1000.00f; // put the data in log form
|
||||
l[bollingerBands.Count-index-1]=(float)Math.Log(bollingerBandElement.L)*1000.00f; // put the data in log form
|
||||
close[bollingerBands.Count-index-1]=(float)Math.Log(bollingerBandElement.Close)*1000.00f; // put the data in log form
|
||||
}
|
||||
Numerics.ZeroForNaNOrInfinity(ref k);
|
||||
Numerics.ZeroForNaNOrInfinity(ref l);
|
||||
Numerics.ZeroForNaNOrInfinity(ref close);
|
||||
Numerics.ZeroForNaNOrInfinity(ref v);
|
||||
float maxY=Math.Max(Math.Max(Numerics.Max(ref l),Math.Max(Numerics.Max(ref close),Numerics.Max(ref k))),Numerics.Max(ref v));
|
||||
float minY=Math.Min(Math.Min(Numerics.Min(ref l),Math.Min(Numerics.Min(ref close),Numerics.Min(ref k))),Numerics.Min(ref v))-5f;
|
||||
float maxX=close.Length;
|
||||
float minX=0.00f;
|
||||
|
||||
Pen pen=new Pen(DrawingBrush,penWidth);
|
||||
Pen redPen=new Pen(DrawingBrushRed,penWidth);
|
||||
Pen greenPen= new Pen(DrawingBrushGreen,penWidth);
|
||||
ImageHelper imageHelper=new ImageHelper();
|
||||
|
||||
PointMapping pointMapping=new PointMapping(Width,Height,maxX,minX,maxY,minY);
|
||||
imageHelper.CreateImage(Width,Height,pointMapping);
|
||||
imageHelper.Fill(FillBrush);
|
||||
|
||||
LineSegments lineSegments=new LineSegments();
|
||||
// draw volatility - red pen
|
||||
for(int index=0;index<v.Length;index++)
|
||||
{
|
||||
if(0==index)continue;
|
||||
Point p1=new Point(index-1,(int)v[index-1]);
|
||||
Point p2=new Point(index,(int)v[index]);
|
||||
lineSegments.Add(p1,p2);
|
||||
}
|
||||
imageHelper.DrawPath(redPen,lineSegments);
|
||||
|
||||
// draw prices - black pen
|
||||
lineSegments.Clear();
|
||||
for(int index=0;index<close.Length && DrawPrice;index++)
|
||||
{
|
||||
if(0==index)continue;
|
||||
Point p1=new Point(index-1,(int)close[index-1]);
|
||||
Point p2=new Point(index,(int)close[index]);
|
||||
lineSegments.Add(p1,p2);
|
||||
}
|
||||
imageHelper.DrawPath(pen,lineSegments);
|
||||
// draw k - green pen
|
||||
lineSegments.Clear();
|
||||
for(int index=0;index<k.Length;index++)
|
||||
{
|
||||
if(0==index)continue;
|
||||
Point p1=new Point(index-1,(int)k[index-1]);
|
||||
Point p2=new Point(index,(int)k[index]);
|
||||
lineSegments.Add(p1,p2);
|
||||
}
|
||||
imageHelper.DrawPath(greenPen,lineSegments);
|
||||
|
||||
// draw l - green pen
|
||||
lineSegments.Clear();
|
||||
for(int index=0;index<l.Length;index++)
|
||||
{
|
||||
if(0==index)continue;
|
||||
Point p1=new Point(index-1,(int)l[index-1]);
|
||||
Point p2=new Point(index,(int)l[index]);
|
||||
lineSegments.Add(p1,p2);
|
||||
}
|
||||
imageHelper.DrawPath(greenPen,lineSegments);
|
||||
|
||||
if(0.00!=noise)imageHelper.AddNoise(NoiseColor,noise);
|
||||
if(testCase.TypeOutput.Equals(TestCase.OutputType.OutputFile))
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Writing {testCase.LastPathFileName}");
|
||||
if(File.Exists(testCase.LastPathFileName))File.Delete(testCase.LastPathFileName);
|
||||
if(UseGrayScale)imageHelper.SaveGrayScaleJPG(testCase.LastPathFileName);
|
||||
else imageHelper.Save(testCase.LastPathFileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
testCase.Streams.Add(imageHelper.ToStream());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generate Bollinger Band Data
|
||||
/// </summary>
|
||||
/// <param name="testCase"></param>
|
||||
/// <param name="movingAverageDays"></param>
|
||||
/// <param name="penWidth"></param>
|
||||
/// <param name="noise"></param>
|
||||
private void ProcessBollingerBandData(TestCase testCase,int movingAverageDays,float penWidth,double noise)
|
||||
{
|
||||
int bufferDays=60;
|
||||
@@ -377,6 +552,7 @@ namespace MarketData.CNNProcessing
|
||||
|
||||
if(testCase.TypeOutput.Equals(TestCase.OutputType.OutputFile))
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Writing {testCase.LastPathFileName}");
|
||||
if(File.Exists(testCase.LastPathFileName))File.Delete(testCase.LastPathFileName);
|
||||
if(UseGrayScale)imageHelper.SaveGrayScaleJPG(testCase.LastPathFileName);
|
||||
else imageHelper.SaveBlackAndWhiteJPG(testCase.LastPathFileName);
|
||||
@@ -426,6 +602,7 @@ namespace MarketData.CNNProcessing
|
||||
|
||||
if(testCase.TypeOutput.Equals(TestCase.OutputType.OutputFile))
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,$"Writing {testCase.LastPathFileName}");
|
||||
if(File.Exists(testCase.LastPathFileName))File.Delete(testCase.LastPathFileName);
|
||||
if(UseGrayScale)imageHelper.SaveGrayScaleJPG(testCase.LastPathFileName);
|
||||
else imageHelper.SaveBlackAndWhiteJPG(testCase.LastPathFileName);
|
||||
|
||||
@@ -25,11 +25,17 @@ namespace MarketData.CNNProcessing
|
||||
// MapPoint will both scale the given point and translate the given point from an upper left origin system to a bottom left origin system
|
||||
public Point MapPoint(Point sourcePoint)
|
||||
{
|
||||
Point mappedPoint=new Point((int)((sourcePoint.X-XDataExtentMin)*XScalingFactor),(int)(Height-((sourcePoint.Y-YDataExtentMin)*YScalingFactor)));
|
||||
mappedPoint.X+=(int)XMargin; // offset by the xMargin
|
||||
mappedPoint.Y-=(int)YMargin; // offset by the yMargin
|
||||
return mappedPoint;
|
||||
int x = (int)((sourcePoint.X - XDataExtentMin) * XScalingFactor + XMargin);
|
||||
int y = (int)(Height - 1 - ((sourcePoint.Y - YDataExtentMin) * YScalingFactor) - YMargin);
|
||||
|
||||
// clamp to bounds
|
||||
x = Math.Max(0, Math.Min(x, (int)Width - 1));
|
||||
y = Math.Max(0, Math.Min(y, (int)Height - 1));
|
||||
|
||||
return new Point(x, y);
|
||||
}
|
||||
|
||||
|
||||
// TranslatePoint will only translate the given point from an upper left origin system to a bottom left origin system
|
||||
public Point TranslatePoint(Point sourcePoint)
|
||||
{
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace MarketData.CNNProcessing
|
||||
public class TestCase
|
||||
{
|
||||
public enum CaseType{Training,Test,Validation};
|
||||
public enum GenerateType{Price,BollingerBand};
|
||||
public enum GenerateType{Price,BollingerBand,BollingerBandWithVIX};
|
||||
public enum OutputType{OutputFile,OutputStream}
|
||||
private readonly List<Stream> streams=new List<Stream>();
|
||||
private readonly List<String> pathFileNames=new List<String>();
|
||||
|
||||
@@ -5,7 +5,6 @@ using System.Threading;
|
||||
using MarketData.MarketDataModel;
|
||||
using MarketData.Utils;
|
||||
using MarketData.Helper;
|
||||
using MarketData.Numerical;
|
||||
using MarketData.DataAccess;
|
||||
|
||||
namespace MarketData.Cache
|
||||
@@ -43,6 +42,7 @@ namespace MarketData.Cache
|
||||
|
||||
public class GBPriceCache : IDisposable
|
||||
{
|
||||
private static readonly int EVICTION_DAYCOUNT=252; // upon eviction trigger remove all data older than maxdate - evictionPolicyThreshholdDays
|
||||
private Thread cacheMonitorThread = null;
|
||||
private volatile bool threadRun = true;
|
||||
private Object thisLock = new Object();
|
||||
@@ -61,6 +61,11 @@ namespace MarketData.Cache
|
||||
cacheMonitorThread.Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// GetInstance
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="ObjectDisposedException"></exception>
|
||||
public static GBPriceCache GetInstance()
|
||||
{
|
||||
lock (typeof(GBPriceCache))
|
||||
@@ -81,6 +86,11 @@ namespace MarketData.Cache
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Shuts down the cache and stops the monitor thread. This is a full application-level
|
||||
/// shutdown. Callers should always access the cache via GetInstance() and not hold
|
||||
/// long-lived references to the instance.
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
lock (thisLock)
|
||||
@@ -97,40 +107,15 @@ namespace MarketData.Cache
|
||||
}
|
||||
}
|
||||
|
||||
public void ClearCacheOnOrBefore(DateTime onOrBeforeDate, bool collect = false)
|
||||
{
|
||||
lock (thisLock)
|
||||
{
|
||||
Dictionary<String, PricesByDate> newPriceCache = new Dictionary<String, PricesByDate>();
|
||||
foreach (KeyValuePair<String, PricesByDate> entry in snapshot.PriceCache)
|
||||
{
|
||||
String symbol = entry.Key;
|
||||
PricesByDate filteredPrices = new PricesByDate();
|
||||
PricesByDate existingPrices = entry.Value;
|
||||
foreach (KeyValuePair<DateTime, Price> kvp in existingPrices)
|
||||
{
|
||||
if (kvp.Key >= onOrBeforeDate)
|
||||
{
|
||||
filteredPrices.Add(kvp.Key, kvp.Value);
|
||||
}
|
||||
}
|
||||
if (filteredPrices.Count > 0)
|
||||
{
|
||||
newPriceCache.Add(symbol, filteredPrices);
|
||||
}
|
||||
}
|
||||
UpdateSnapshot(newPriceCache, snapshot.RealTimePriceCache, snapshot.NullCache);
|
||||
if (collect) GC.Collect();
|
||||
}
|
||||
}
|
||||
|
||||
public Price GetPriceOrLatestAvailable(String symbol, DateTime date)
|
||||
{
|
||||
Price price = GetPrice(symbol, date);
|
||||
if (null != price) return price;
|
||||
|
||||
DateTime latestPricingDate = PricingDataAccess.GetLatestDateOnOrBefore(symbol, date);
|
||||
price = GetPrice(symbol, latestPricingDate);
|
||||
if (null != price) return price;
|
||||
|
||||
fetchSemaphore.Wait();
|
||||
try
|
||||
{
|
||||
@@ -140,7 +125,8 @@ namespace MarketData.Cache
|
||||
{
|
||||
fetchSemaphore.Release();
|
||||
}
|
||||
if (null !=price) AddPrice(price);
|
||||
|
||||
if (null != price) AddPrice(price);
|
||||
return price;
|
||||
}
|
||||
|
||||
@@ -152,27 +138,33 @@ namespace MarketData.Cache
|
||||
}
|
||||
|
||||
Price price = MarketDataHelper.GetLatestPrice(symbol);
|
||||
|
||||
if (null != price)
|
||||
{
|
||||
Dictionary<String, Price> newRealtime = new Dictionary<String, Price>(snapshot.RealTimePriceCache);
|
||||
newRealtime.Add(symbol, price);
|
||||
UpdateSnapshot(snapshot.PriceCache, newRealtime, snapshot.NullCache);
|
||||
}
|
||||
|
||||
return price;
|
||||
}
|
||||
|
||||
public Price GetPrice(String symbol, DateTime date)
|
||||
{
|
||||
date = date.Date;
|
||||
|
||||
if (!ContainsPrice(symbol, date))
|
||||
{
|
||||
String key = symbol + Utility.DateTimeToStringMMHDDHYYYY(date);
|
||||
|
||||
if (snapshot.NullCache.ContainsKey(key))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
fetchSemaphore.Wait();
|
||||
Price price;
|
||||
|
||||
try
|
||||
{
|
||||
price = PricingDataAccess.GetPrice(symbol, date);
|
||||
@@ -181,7 +173,8 @@ namespace MarketData.Cache
|
||||
{
|
||||
fetchSemaphore.Release();
|
||||
}
|
||||
if (null ==price)
|
||||
|
||||
if (null == price)
|
||||
{
|
||||
Dictionary<String, bool> newNullCache = new Dictionary<String, bool>(snapshot.NullCache);
|
||||
newNullCache.Add(key, true);
|
||||
@@ -191,23 +184,29 @@ namespace MarketData.Cache
|
||||
|
||||
AddPrice(price);
|
||||
}
|
||||
|
||||
if (!snapshot.PriceCache.ContainsKey(symbol)) return null;
|
||||
|
||||
PricesByDate pricesByDate = snapshot.PriceCache[symbol];
|
||||
if (!pricesByDate.ContainsKey(date)) return null;
|
||||
|
||||
return pricesByDate[date];
|
||||
}
|
||||
|
||||
public Prices GetPrices(String symbol, DateTime earlierDate, DateTime laterDate)
|
||||
{
|
||||
DateGenerator localDateGenerator = new DateGenerator();
|
||||
|
||||
if (laterDate < earlierDate)
|
||||
{
|
||||
DateTime tempDate = earlierDate;
|
||||
earlierDate = laterDate;
|
||||
laterDate = tempDate;
|
||||
}
|
||||
|
||||
List<DateTime> datesList = localDateGenerator.GenerateHistoricalDates(earlierDate, laterDate);
|
||||
datesList = datesList.Where(x => x >= earlierDate).ToList();
|
||||
|
||||
return GetPrices(symbol, laterDate, datesList.Count);
|
||||
}
|
||||
|
||||
@@ -215,17 +214,20 @@ namespace MarketData.Cache
|
||||
{
|
||||
List<DateTime> historicalDates = dateGenerator.GenerateHistoricalDates(startDate, dayCount + 60);
|
||||
List<DateTime> missingDates = new List<DateTime>();
|
||||
|
||||
foreach (DateTime historicalDate in historicalDates)
|
||||
{
|
||||
if (!ContainsPrice(symbol, historicalDate))
|
||||
{
|
||||
String key = symbol + Utility.DateTimeToStringMMHDDHYYYY(historicalDate);
|
||||
|
||||
if (!snapshot.NullCache.ContainsKey(key))
|
||||
{
|
||||
missingDates.Add(historicalDate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (missingDates.Count > 0)
|
||||
{
|
||||
DateTime minDate = missingDates.Min();
|
||||
@@ -233,6 +235,7 @@ namespace MarketData.Cache
|
||||
|
||||
fetchSemaphore.Wait();
|
||||
Prices loadedPrices;
|
||||
|
||||
try
|
||||
{
|
||||
loadedPrices = PricingDataAccess.GetPrices(symbol, maxDate, minDate);
|
||||
@@ -249,11 +252,14 @@ namespace MarketData.Cache
|
||||
}
|
||||
|
||||
Prices prices = new Prices();
|
||||
|
||||
foreach (DateTime historicalDate in historicalDates)
|
||||
{
|
||||
if (!snapshot.PriceCache.ContainsKey(symbol)) continue;
|
||||
|
||||
PricesByDate pricesByDate = snapshot.PriceCache[symbol];
|
||||
if (!pricesByDate.ContainsKey(historicalDate)) continue;
|
||||
|
||||
prices.Add(pricesByDate[historicalDate]);
|
||||
}
|
||||
|
||||
@@ -268,17 +274,21 @@ namespace MarketData.Cache
|
||||
lock (thisLock)
|
||||
{
|
||||
PricesByDate pricesByDate;
|
||||
|
||||
if (!snapshot.PriceCache.ContainsKey(price.Symbol))
|
||||
{
|
||||
pricesByDate = new PricesByDate();
|
||||
pricesByDate.Add(price.Date, price);
|
||||
|
||||
Dictionary<String, PricesByDate> newCache = new Dictionary<String, PricesByDate>(snapshot.PriceCache);
|
||||
newCache.Add(price.Symbol, pricesByDate);
|
||||
|
||||
UpdateSnapshot(newCache, snapshot.RealTimePriceCache, snapshot.NullCache);
|
||||
}
|
||||
else
|
||||
{
|
||||
pricesByDate = snapshot.PriceCache[price.Symbol];
|
||||
|
||||
if (!pricesByDate.ContainsKey(price.Date))
|
||||
{
|
||||
pricesByDate.Add(price.Date, price);
|
||||
@@ -290,10 +300,47 @@ namespace MarketData.Cache
|
||||
public bool ContainsPrice(String symbol, DateTime date)
|
||||
{
|
||||
if (!snapshot.PriceCache.ContainsKey(symbol)) return false;
|
||||
|
||||
PricesByDate pricesByDate = snapshot.PriceCache[symbol];
|
||||
return pricesByDate.ContainsKey(date);
|
||||
}
|
||||
|
||||
public void ClearCacheOnOrBefore(DateTime onOrBeforeDate, bool collect = false)
|
||||
{
|
||||
lock (thisLock)
|
||||
{
|
||||
UpdateSnapshot(BuildEvictedPriceCache(onOrBeforeDate), snapshot.RealTimePriceCache, new Dictionary<String, bool>());
|
||||
if (collect) GC.Collect();
|
||||
}
|
||||
}
|
||||
|
||||
private Dictionary<String, PricesByDate> BuildEvictedPriceCache(DateTime onOrBeforeDate)
|
||||
{
|
||||
Dictionary<String, PricesByDate> newPriceCache = new Dictionary<String, PricesByDate>();
|
||||
|
||||
foreach (KeyValuePair<String, PricesByDate> entry in snapshot.PriceCache)
|
||||
{
|
||||
String symbol = entry.Key;
|
||||
PricesByDate filteredPrices = new PricesByDate();
|
||||
PricesByDate existingPrices = entry.Value;
|
||||
|
||||
foreach (KeyValuePair<DateTime, Price> kvp in existingPrices)
|
||||
{
|
||||
if (kvp.Key >= onOrBeforeDate)
|
||||
{
|
||||
filteredPrices.Add(kvp.Key, kvp.Value);
|
||||
}
|
||||
}
|
||||
|
||||
if (filteredPrices.Count > 0)
|
||||
{
|
||||
newPriceCache.Add(symbol, filteredPrices);
|
||||
}
|
||||
}
|
||||
|
||||
return newPriceCache;
|
||||
}
|
||||
|
||||
private void ThreadProc()
|
||||
{
|
||||
int quantums = 0;
|
||||
@@ -302,22 +349,37 @@ namespace MarketData.Cache
|
||||
while (threadRun)
|
||||
{
|
||||
Thread.Sleep(quantumInterval);
|
||||
if(!threadRun)break;
|
||||
if (!threadRun) break;
|
||||
|
||||
quantums += quantumInterval;
|
||||
|
||||
if (quantums > cacheRefreshAfter)
|
||||
{
|
||||
quantums = 0;
|
||||
|
||||
lock (thisLock)
|
||||
{
|
||||
UpdateSnapshot(snapshot.PriceCache, new Dictionary<String, Price>(), snapshot.NullCache);
|
||||
DateTime maxDate = snapshot.PriceCache.Values.SelectMany(p => p.Keys).DefaultIfEmpty(DateTime.MinValue).Max();
|
||||
|
||||
if (maxDate != DateTime.MinValue)
|
||||
{
|
||||
DateTime evictBefore = dateGenerator.GenerateHistoricalDates(maxDate, EVICTION_DAYCOUNT).Min();
|
||||
int beforeCount = snapshot.PriceCache.Values.Sum(p => p.Count);
|
||||
Dictionary<String, PricesByDate> newCache = BuildEvictedPriceCache(evictBefore);
|
||||
int afterCount = newCache.Values.Sum(p => p.Count);
|
||||
int removed = beforeCount - afterCount;
|
||||
MDTrace.WriteLine(LogLevel.DEBUG, $"GBPriceCache eviction: removed {removed} prices (before={beforeCount}, after={afterCount}) on or before {evictBefore.ToShortDateString()}");
|
||||
UpdateSnapshot(newCache, new Dictionary<String, Price>(), new Dictionary<String, bool>());
|
||||
GC.Collect();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateSnapshot(Dictionary<String, PricesByDate> newPriceCache,Dictionary<String, Price> newRealtimePriceCache, Dictionary<String, bool> newNullCache)
|
||||
private void UpdateSnapshot(Dictionary<String, PricesByDate> newPriceCache, Dictionary<String, Price> newRealtimePriceCache, Dictionary<String, bool> newNullCache)
|
||||
{
|
||||
snapshot = new CacheSnapshot(newPriceCache, newRealtimePriceCache, newNullCache);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -146,8 +146,9 @@ namespace MarketData.Generator.CMMomentum
|
||||
price=PricingDA.GetPrice(openPosition.Symbol,currentDate);
|
||||
if(null==price)
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("No price for {0} on {1}",openPosition.Symbol,currentDate.ToShortDateString()));
|
||||
return null;
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("CMBacktest::GetModelPerformance No price for {0} on {1}",openPosition.Symbol,currentDate.ToShortDateString()));
|
||||
continue;
|
||||
// return null;
|
||||
}
|
||||
LocalPriceCache.GetInstance().Add(price);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ using MarketData.MarketDataModel;
|
||||
using MarketData.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace MarketData.Generator.CMMomentum
|
||||
@@ -132,6 +133,35 @@ namespace MarketData.Generator.CMMomentum
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// This method is made public in order that it can be tested
|
||||
//public static bool PredictCandidate(CMCandidate cmCandidate,CMParams cmParams)
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// CNNClient cnnClient=new CNNClient(cmParams.UseCNNHost);
|
||||
// DataProcessor dataProcessor=new DataProcessor();
|
||||
// dataProcessor.Width=128;
|
||||
// dataProcessor.Height=128;
|
||||
// dataProcessor.PenWidth=1;
|
||||
// TestCase testCase=new TestCase(cmCandidate.Symbol,cmCandidate.TradeDate,cmParams.UseCNNDayCount,TestCase.CaseType.Test,TestCase.GenerateType.BollingerBand,TestCase.OutputType.OutputStream);
|
||||
// dataProcessor.ProcessData(testCase);
|
||||
// String prediction = cnnClient.Predict(CNNClient.Model.resnet50_20241024_270,testCase.LastStream);
|
||||
// prediction=prediction.Substring(prediction.IndexOf("-->"));
|
||||
// int result=int.Parse(Utility.BetweenString(prediction,"[[","]"));
|
||||
// if(1==result)
|
||||
// {
|
||||
// cmCandidate.Score*=(1.00+cmParams.UseCNNRewardPercentDecimal); // increase the score by the percentage indicated in the params settings
|
||||
// cmCandidate.CNNPrediction=true;
|
||||
// }
|
||||
// return true;
|
||||
// }
|
||||
// catch(Exception exception)
|
||||
// {
|
||||
// MDTrace.WriteLine(LogLevel.DEBUG,String.Format("Error encountered calling convolutional model at {0}. Exception was {1}",cmParams.UseCNNHost,exception.ToString()));
|
||||
// return false;
|
||||
// }
|
||||
//}
|
||||
|
||||
// This method is made public in order that it can be tested
|
||||
public static bool PredictCandidate(CMCandidate cmCandidate,CMParams cmParams)
|
||||
{
|
||||
@@ -139,12 +169,14 @@ namespace MarketData.Generator.CMMomentum
|
||||
{
|
||||
CNNClient cnnClient=new CNNClient(cmParams.UseCNNHost);
|
||||
DataProcessor dataProcessor=new DataProcessor();
|
||||
dataProcessor.Width=128;
|
||||
dataProcessor.Height=128;
|
||||
int imageDimensions=224;
|
||||
dataProcessor.Width=imageDimensions;
|
||||
dataProcessor.Height=imageDimensions;
|
||||
dataProcessor.PenWidth=1;
|
||||
TestCase testCase=new TestCase(cmCandidate.Symbol,cmCandidate.TradeDate,cmParams.UseCNNDayCount,TestCase.CaseType.Test,TestCase.GenerateType.BollingerBand,TestCase.OutputType.OutputStream);
|
||||
TestCase testCase=new TestCase(cmCandidate.Symbol,cmCandidate.TradeDate,cmParams.UseCNNDayCount,TestCase.CaseType.Test,TestCase.GenerateType.BollingerBandWithVIX,TestCase.OutputType.OutputStream);
|
||||
dataProcessor.ProcessData(testCase);
|
||||
String prediction = cnnClient.Predict(CNNClient.Model.resnet50_20241024_270,testCase.LastStream);
|
||||
Stream streamResult = cnnClient.ProcessImage(testCase.LastStream); // process the image through PIL
|
||||
String prediction = cnnClient.Predict(CNNClient.Model.convnext,streamResult);
|
||||
prediction=prediction.Substring(prediction.IndexOf("-->"));
|
||||
int result=int.Parse(Utility.BetweenString(prediction,"[[","]"));
|
||||
if(1==result)
|
||||
@@ -160,5 +192,7 @@ namespace MarketData.Generator.CMMomentum
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,8 @@ namespace MarketData.Generator.CMTrend
|
||||
if(null==price)
|
||||
{
|
||||
MDTrace.WriteLine(LogLevel.DEBUG,String.Format("******************* No price for {0} on {1} *****************",openPosition.Symbol,currentDate.ToShortDateString()));
|
||||
return performanceSeries;
|
||||
continue;
|
||||
// return performanceSeries;
|
||||
}
|
||||
gainLoss+=((price.Close*openPosition.Shares)-(openPosition.PurchasePrice*openPosition.Shares));
|
||||
marketValue+=(price.Close*openPosition.Shares);
|
||||
|
||||
@@ -1029,11 +1029,6 @@ namespace MarketData
|
||||
Trace.Listeners.Add(new TextWriterTraceListener(strLogFile));
|
||||
DateTime currentDate=DateTime.Now;
|
||||
|
||||
// CheckPricesForHoldings();
|
||||
|
||||
// Price price = MarketDataHelper.GetLatestPriceBigCharts("NVDA");
|
||||
//List<CashflowStatement> cashflowStatements = MarketDataHelper.GetCashflowStatement("AAPL",CashflowStatement.PeriodType.Annual);
|
||||
|
||||
DateTime maxHolidayDate =HolidayDA.GetMaxHolidayDate();
|
||||
if(currentDate>maxHolidayDate)
|
||||
{
|
||||
@@ -1857,6 +1852,7 @@ namespace MarketData
|
||||
{
|
||||
LocalPriceCache.GetInstance().Dispose();
|
||||
GBPriceCache.GetInstance().Dispose();
|
||||
GLPriceCache.GetInstance().Dispose();
|
||||
}
|
||||
} // main
|
||||
// *****************************************************************************************************************************************************************************
|
||||
|
||||
@@ -1,23 +1,22 @@
|
||||
CMSESSIONv1.00
|
||||
LastUpdated=2/2/2026 10:48:05 AM
|
||||
TradeDate=2/27/2026
|
||||
LastUpdated=3/2/2026 11:30:34 AM
|
||||
TradeDate=3/31/2026
|
||||
StartDate=10/31/2019
|
||||
AnalysisDate=2/2/2026
|
||||
Cycle=76
|
||||
CashBalance=1871.45
|
||||
AnalysisDate=3/2/2026
|
||||
Cycle=77
|
||||
CashBalance=7632.48
|
||||
NonTradeableCash=13400.66
|
||||
DayCount=90|AnalysisDate=2/2/2026|TradeDate=2/27/2026|DailyReturnLimit=0.15|MovingAverageConstraintDays=100|FallbackCandidateBestOf=SHV,NEAR,BIL,GSY,AGG,ACWX,GSY,SCHF,IXUS,DBEF,IEFA,TLT|Benchmark=SPY|BenchmarkMovingAverageDays=200|HoldingPeriod=3|MaxPositions=3|NoTradeSymbols=SFTBY,IPCC,YPF,ALGT,CXO,EE,APLP,SE,GBTC,YOKU,PNY,RFMD,ASAZY|InitialCash=5000|TargetBeta=1|BetaMonths=6|MarketCapLowerLimit=1000000000|MaxBeta=10|UseMaxBeta=False|FallbackMaxAlloc=1000|UseOverExtendedIndicator=True|UseOverExtendedIndicatorDays=10|UseOverExtendedIndicatorViolationThreshhold=1|UseOverExtendedIndicatorMarginPercent=1|UseMaxPositionBucketWeight=True|UseMaxPositionBucketWeightMaxWeight=0.65|UseCNN=True|UseCNNHost=http://Euporie:5000|UseCNNDayCount=270|UseCNNRewardPercentDecimal=0.25
|
||||
TotalActivePositions=9
|
||||
DayCount=90|AnalysisDate=3/2/2026|TradeDate=3/31/2026|DailyReturnLimit=0.15|MovingAverageConstraintDays=100|FallbackCandidateBestOf=SHV,NEAR,BIL,GSY,AGG,ACWX,GSY,SCHF,IXUS,DBEF,IEFA,TLT|Benchmark=SPY|BenchmarkMovingAverageDays=200|HoldingPeriod=3|MaxPositions=3|NoTradeSymbols=SFTBY,IPCC,YPF,ALGT,CXO,EE,APLP,SE,GBTC,YOKU,PNY,RFMD,ASAZY|InitialCash=5000|TargetBeta=1|BetaMonths=6|MarketCapLowerLimit=1000000000|MaxBeta=10|UseMaxBeta=False|FallbackMaxAlloc=1000|UseOverExtendedIndicator=True|UseOverExtendedIndicatorDays=10|UseOverExtendedIndicatorViolationThreshhold=1|UseOverExtendedIndicatorMarginPercent=1|UseMaxPositionBucketWeight=True|UseMaxPositionBucketWeightMaxWeight=0.65|UseCNN=True|UseCNNHost=http://Euporie:5000|UseCNNDayCount=270|UseCNNRewardPercentDecimal=0.25
|
||||
TotalActivePositions=8
|
||||
Slot=0|Symbol=AA|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=106|PurchasePrice=56.81|Beta=1.38742001868201|BetaMonths=6|SharpeRatio=0.042662472208833|RiskAdjustedWeight=0.487240585470048|RiskAdjustedAllocation=6029.38948346953|TargetBetaOverBeta=0.720762268480138|Score=0|CNNPrediction=True
|
||||
Slot=0|Symbol=TGB|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=221|PurchasePrice=7.34|Beta=4.95425362268808|BetaMonths=6|SharpeRatio=0.463380326422422|RiskAdjustedWeight=0.136449886033226|RiskAdjustedAllocation=1688.50775654428|TargetBetaOverBeta=0.201846751530944|Score=0|CNNPrediction=True
|
||||
Slot=0|Symbol=BORR|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=995|PurchasePrice=4.54|Beta=1.79641303502463|BetaMonths=6|SharpeRatio=-0.0951973473446902|RiskAdjustedWeight=0.376309528496725|RiskAdjustedAllocation=4656.66609331953|TargetBetaOverBeta=0.556664854074771|Score=0|CNNPrediction=True
|
||||
Slot=1|Symbol=MU|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=7|PurchasePrice=232.72|Beta=8.49114666107215|BetaMonths=6|SharpeRatio=0.247081001353389|RiskAdjustedWeight=0.14264664163143|RiskAdjustedAllocation=1664.32208341382|TargetBetaOverBeta=0.117769724150982|Score=0|CNNPrediction=True
|
||||
Slot=1|Symbol=TTI|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=490|PurchasePrice=7.72|Beta=3.71100734182263|BetaMonths=6|SharpeRatio=0.248087502251472|RiskAdjustedWeight=0.326389425628832|RiskAdjustedAllocation=3808.13121608837|TargetBetaOverBeta=0.26946861266754|Score=0|CNNPrediction=True
|
||||
Slot=1|Symbol=NESR|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=444|PurchasePrice=14|Beta=2.28119742249155|BetaMonths=6|SharpeRatio=-0.00800623634647377|RiskAdjustedWeight=0.530963932739738|RiskAdjustedAllocation=6194.99336716448|TargetBetaOverBeta=0.438366267706802|Score=0|CNNPrediction=True
|
||||
Slot=2|Symbol=RAPT|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=38|PurchasePrice=33.93|Beta=28.6944470511615|BetaMonths=6|SharpeRatio=0.353702556914886|RiskAdjustedWeight=0.0470862209044434|RiskAdjustedAllocation=532.873977205238|TargetBetaOverBeta=0.034849948431382|Score=0|CNNPrediction=True
|
||||
Slot=1|Symbol=MU|PurchaseDate=2/27/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=4|PurchasePrice=401.9|Beta=8.75628950815446|BetaMonths=6|SharpeRatio=0.576855333922295|RiskAdjustedWeight=0.112389472785322|RiskAdjustedAllocation=1666.58190782861|TargetBetaOverBeta=0.114203624613911|Score=0|CNNPrediction=False
|
||||
Slot=1|Symbol=CENX|PurchaseDate=2/27/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=92|PurchasePrice=52.07|Beta=3.07146309580131|BetaMonths=6|SharpeRatio=0.367390034814581|RiskAdjustedWeight=0.320405855672632|RiskAdjustedAllocation=4751.17988360287|TargetBetaOverBeta=0.325577735694432|Score=0|CNNPrediction=True
|
||||
Slot=1|Symbol=BVN|PurchaseDate=2/27/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=192|PurchasePrice=43.5|Beta=1.73502583944106|BetaMonths=6|SharpeRatio=0.439689953082546|RiskAdjustedWeight=0.567204671542045|RiskAdjustedAllocation=8410.86820856852|TargetBetaOverBeta=0.576360292318268|Score=0|CNNPrediction=True
|
||||
Slot=2|Symbol=HL|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=379|PurchasePrice=19.65|Beta=1.71757923481307|BetaMonths=6|SharpeRatio=0.383963559078681|RiskAdjustedWeight=0.786637987463148|RiskAdjustedAllocation=8902.36899348732|TargetBetaOverBeta=0.582214770492865|Score=0|CNNPrediction=True
|
||||
Slot=2|Symbol=SPHR|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=27|PurchasePrice=94.69|Beta=8.12573531791566|BetaMonths=6|SharpeRatio=0.196920851690333|RiskAdjustedWeight=0.166275791632408|RiskAdjustedAllocation=1881.74036264077|TargetBetaOverBeta=0.123065785541303|Score=0|CNNPrediction=True
|
||||
TotalPositions=187
|
||||
TotalPositions=191
|
||||
Symbol=CLDR|PurchaseDate=10/31/2019 12:00:00 AM|SellDate=1/31/2020 12:00:00 AM|Shares=124|PurchasePrice=8.56|Beta=0.482592987013072|BetaMonths=36|SharpeRatio=-0.248675615247893|RiskAdjustedWeight=0.632894313054559|RiskAdjustedAllocation=1054.82385509093|TargetBetaOverBeta=2.07213951903721|CurrentPrice=10.36|Score=0|CNNPrediction=False
|
||||
Symbol=RH|PurchaseDate=10/31/2019 12:00:00 AM|SellDate=1/31/2020 12:00:00 AM|Shares=2|PurchasePrice=181.92|Beta=1.3764249979282|BetaMonths=36|SharpeRatio=0.124651578968104|RiskAdjustedWeight=0.221901198728824|RiskAdjustedAllocation=369.835331214706|TargetBetaOverBeta=0.726519789676302|CurrentPrice=210.25|Score=0|CNNPrediction=False
|
||||
Symbol=VC|PurchaseDate=10/31/2019 12:00:00 AM|SellDate=1/31/2020 12:00:00 AM|Shares=2|PurchasePrice=93.22|Beta=2.10344983651568|BetaMonths=36|SharpeRatio=-0.0621291508319681|RiskAdjustedWeight=0.145204488216617|RiskAdjustedAllocation=242.007480361029|TargetBetaOverBeta=0.475409483335472|CurrentPrice=80.34|Score=0|CNNPrediction=False
|
||||
@@ -205,3 +204,7 @@ Symbol=BIL|PurchaseDate=9/30/2025 12:00:00 AM|SellDate=12/31/2025 12:00:00 AM|Sh
|
||||
Symbol=UEC|PurchaseDate=10/31/2025 12:00:00 AM|SellDate=1/30/2026 12:00:00 AM|Shares=143|PurchasePrice=15|Beta=1.29663058800792|BetaMonths=6|SharpeRatio=0.188824194390374|RiskAdjustedWeight=0.104687628773719|RiskAdjustedAllocation=1106.03003237578|TargetBetaOverBeta=0.771229685038012|CurrentPrice=17.41|Score=0|CNNPrediction=True
|
||||
Symbol=BTU|PurchaseDate=10/31/2025 12:00:00 AM|SellDate=1/30/2026 12:00:00 AM|Shares=249|PurchasePrice=28.22|Beta=0.159849444660176|BetaMonths=6|SharpeRatio=-0.0527083016848311|RiskAdjustedWeight=0.849181440339659|RiskAdjustedAllocation=8971.64437626051|TargetBetaOverBeta=6.2558866070877|CurrentPrice=34.75|Score=0|CNNPrediction=True
|
||||
Symbol=WDC|PurchaseDate=10/31/2025 12:00:00 AM|SellDate=1/30/2026 12:00:00 AM|Shares=10|PurchasePrice=152.3|Beta=2.94251988947805|BetaMonths=6|SharpeRatio=0.169350251432453|RiskAdjustedWeight=0.046130930886622|RiskAdjustedAllocation=487.375591363706|TargetBetaOverBeta=0.339844771678801|CurrentPrice=243.52|Score=0|CNNPrediction=True
|
||||
Symbol=RAPT|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=2/18/2026 12:00:00 AM|Shares=38|PurchasePrice=33.93|Beta=28.6944470511615|BetaMonths=6|SharpeRatio=0.353702556914886|RiskAdjustedWeight=0.0470862209044434|RiskAdjustedAllocation=532.873977205238|TargetBetaOverBeta=0.034849948431382|CurrentPrice=57.815|Score=0|CNNPrediction=True
|
||||
Symbol=MU|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=2/27/2026 12:00:00 AM|Shares=7|PurchasePrice=232.72|Beta=8.49114666107215|BetaMonths=6|SharpeRatio=0.247081001353389|RiskAdjustedWeight=0.14264664163143|RiskAdjustedAllocation=1664.32208341382|TargetBetaOverBeta=0.117769724150982|CurrentPrice=401.9|Score=0|CNNPrediction=True
|
||||
Symbol=TTI|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=2/27/2026 12:00:00 AM|Shares=490|PurchasePrice=7.72|Beta=3.71100734182263|BetaMonths=6|SharpeRatio=0.248087502251472|RiskAdjustedWeight=0.326389425628832|RiskAdjustedAllocation=3808.13121608837|TargetBetaOverBeta=0.26946861266754|CurrentPrice=8.8|Score=0|CNNPrediction=True
|
||||
Symbol=NESR|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=2/27/2026 12:00:00 AM|Shares=444|PurchasePrice=14|Beta=2.28119742249155|BetaMonths=6|SharpeRatio=-0.00800623634647377|RiskAdjustedWeight=0.530963932739738|RiskAdjustedAllocation=6194.99336716448|TargetBetaOverBeta=0.438366267706802|CurrentPrice=25.2|Score=0|CNNPrediction=True
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
CMTSESSIONv1.00
|
||||
LastUpdated=2/25/2026 9:12:01 PM
|
||||
TradeDate=2/25/2026
|
||||
LastUpdated=3/12/2026 8:58:25 PM
|
||||
TradeDate=3/12/2026
|
||||
StartDate=1/1/0001
|
||||
AnalysisDate=2/25/2026
|
||||
CashBalance=4287.32
|
||||
AnalysisDate=3/12/2026
|
||||
CashBalance=6863.35
|
||||
NonTradeableCash=6456.42
|
||||
SuspendTrading=False|UsePriceSlopeIndicator=True|UsePriceSlopeIndicatorDays=252|AnalysisDate=2/25/2026|BetaMonths=6|TradeDate=2/25/2026|MarketCapLowerLimit=500000000|SidewaysDetection=False|SidewaysAfterDays=30|PriceTrendDays=20|CheckOutliersInReturnStream=True|DailyReturnLimit=0.25|MaxDailyPositions=3|MaxOpenPositions=3|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=False|UseTradeOnlySectorsSectors=Healthcare,Technology,Basic Materials,Consumer Defensive,Industrials|EvaluateStopOnUpTrend=False
|
||||
SuspendTrading=False|UsePriceSlopeIndicator=True|UsePriceSlopeIndicatorDays=252|AnalysisDate=3/12/2026|BetaMonths=6|TradeDate=3/12/2026|MarketCapLowerLimit=500000000|SidewaysDetection=False|SidewaysAfterDays=30|PriceTrendDays=20|CheckOutliersInReturnStream=True|DailyReturnLimit=0.25|MaxDailyPositions=3|MaxOpenPositions=3|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=False|UseTradeOnlySectorsSectors=Healthcare,Technology,Basic Materials,Consumer Defensive,Industrials|EvaluateStopOnUpTrend=False
|
||||
PricingExceptions=0
|
||||
TotalActivePositions=2
|
||||
Symbol=HWM|PurchaseDate=11/17/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=11|PurchasePrice=200.81|CurrentPrice=259.64|Exposure=2208.91|MarketValue=2856.04|GainLoss=647.13|GainLossPcnt=0.292963497833773|PositionRiskDecimal=0.12|R=24.0336|C=276.15|P=11.490163770721|InitialStopLimit=176.71|TrailingStopLimit=235.233001537323|TotalRiskExposure=264.3696|RMultiple=2.45R|Volatility=3.68232583999634|Volume=0|LastStopAdjustment=2/25/2026 12:00:00 AM|Comment=Price changed on 11/18/2025 from $200.28 to $200.81
|
||||
Symbol=FTI|PurchaseDate=11/20/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=41|PurchasePrice=43.23|CurrentPrice=66.13|Exposure=1772.43|MarketValue=2711.33|GainLoss=938.9|GainLossPcnt=0.529724728198011|PositionRiskDecimal=0.12|R=5.2188|C=218.4595|P=41.8601019391431|InitialStopLimit=38.04|TrailingStopLimit=62.8357140827179|TotalRiskExposure=213.9708|RMultiple=4.39R|Volatility=0.825829267501831|Volume=0|LastStopAdjustment=2/25/2026 12:00:00 AM|Comment=Price changed on 11/21/2025 from $43.49 to $43.23
|
||||
TotalPositions=133
|
||||
TotalActivePositions=1
|
||||
Symbol=HWM|PurchaseDate=11/17/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=11|PurchasePrice=200.81|CurrentPrice=243.82|Exposure=2208.91|MarketValue=2682.02|GainLoss=473.11|GainLossPcnt=0.214182560629451|PositionRiskDecimal=0.12|R=24.0336|C=276.15|P=11.490163770721|InitialStopLimit=176.71|TrailingStopLimit=235.233001537323|TotalRiskExposure=264.3696|RMultiple=1.79R|Volatility=3.68232583999634|Volume=0|LastStopAdjustment=2/25/2026 12:00:00 AM|Comment=Price changed on 11/18/2025 from $200.28 to $200.81
|
||||
TotalPositions=134
|
||||
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.
|
||||
Symbol=POOL|PurchaseDate=9/1/2020 12:00:00 AM|SellDate=9/8/2020 12:00:00 AM|Shares=2|PurchasePrice=332.21|CurrentPrice=288.44|Exposure=664.42|MarketValue=576.88|GainLoss=-87.54|GainLossPcnt=-0.131754011017128|PositionRiskDecimal=0.12|R=39.5904|C=80.0065|P=2.02085606611704|InitialStopLimit=290.3296|TrailingStopLimit=290.3296|TotalRiskExposure=79.1808|RMultiple=-1.11R|Volatility=4.28818368911743|Volume=259404|LastStopAdjustment=1/1/0001 12:00:00 AM|Comment=Manual close.
|
||||
@@ -144,14 +143,14 @@ Symbol=DASH|PurchaseDate=10/20/2025 12:00:00 AM|SellDate=11/6/2025 12:00:00 AM|S
|
||||
Symbol=HCI|PurchaseDate=11/6/2025 12:00:00 AM|SellDate=11/17/2025 12:00:00 AM|Shares=12|PurchasePrice=199.2|CurrentPrice=175.62|Exposure=2390.4|MarketValue=2107.44|GainLoss=-282.96|GainLossPcnt=-0.118373493975903|PositionRiskDecimal=0.12|R=23.4012|C=290.298|P=12.4052612686529|InitialStopLimit=175.3|TrailingStopLimit=175.3|TotalRiskExposure=280.8144|RMultiple=-1.01R|Volatility=8.70686626434326|Volume=0|LastStopAdjustment=1/1/0001 12:00:00 AM|Comment=Manual close.
|
||||
Symbol=NFLX|PurchaseDate=10/21/2025 12:00:00 AM|SellDate=11/20/2025 12:00:00 AM|Shares=10|PurchasePrice=114.35|CurrentPrice=105.51|Exposure=1143.5|MarketValue=1055.1|GainLoss=-88.3999999999999|GainLossPcnt=-0.0773065150852644|PositionRiskDecimal=0.12|R=148.962|C=201.1665|P=1.35045514963548|InitialStopLimit=100.62|TrailingStopLimit=105.51|TotalRiskExposure=1489.62|RMultiple=-0.06R|Volatility=19.877721786499|Volume=0|LastStopAdjustment=11/13/2025 12:00:00 AM|Comment=Manual close.
|
||||
Symbol=CX|PurchaseDate=10/20/2025 12:00:00 AM|SellDate=2/5/2026 12:00:00 AM|Shares=144|PurchasePrice=9.54|CurrentPrice=11.74|Exposure=1373.76|MarketValue=1690.56|GainLoss=316.8|GainLossPcnt=0.230607966457023|PositionRiskDecimal=0.12|R=1.1472|C=166.144|P=144.825662482566|InitialStopLimit=8.4|TrailingStopLimit=12.0339285671711|TotalRiskExposure=165.1968|RMultiple=1.92R|Volatility=0.164089068770409|Volume=0|LastStopAdjustment=1/28/2026 12:00:00 AM|Comment=Manual close.
|
||||
TotalCandidates=131
|
||||
Symbol=FTI|PurchaseDate=11/20/2025 12:00:00 AM|SellDate=3/6/2026 12:00:00 AM|Shares=41|PurchasePrice=43.23|CurrentPrice=62.83|Exposure=1772.43|MarketValue=2576.03|GainLoss=803.6|GainLossPcnt=0.453388850335415|PositionRiskDecimal=0.12|R=5.2188|C=218.4595|P=41.8601019391431|InitialStopLimit=38.04|TrailingStopLimit=62.8357140827179|TotalRiskExposure=213.9708|RMultiple=3.76R|Volatility=0.825829267501831|Volume=0|LastStopAdjustment=2/25/2026 12:00:00 AM|Comment=Manual close.
|
||||
TotalCandidates=126
|
||||
Symbol=FINMY|AnalysisDate=10/2/2025 12:00:00 AM|EPSSlope=0.0349999964237213|ProfitMarginSlope=2.26086616516113|PriceSlope=0.00448679936177329|Volatility=1.03268754482269|Volume=0|Violation=False|Slope=0.00448679936177329|Score=2.66255318366838|AnnualizedReturn=3.09774193858814|SharpeRatio=0.335718769738377|RSquared=0.859514199843871|BetaMonths=6|Beta=0.824935419784389
|
||||
Symbol=RYCEY|AnalysisDate=10/1/2025 12:00:00 AM|EPSSlope=0.0249999910593033|ProfitMarginSlope=2.86403560638428|PriceSlope=0.00377742185948191|Volatility=0.317665636539459|Volume=0|Violation=False|Slope=0.00377742185948191|Score=2.3960549250413|AnnualizedReturn=2.59065388368147|SharpeRatio=0.325355777751677|RSquared=0.924884231017524|BetaMonths=6|Beta=1.39611806037306
|
||||
Symbol=TTMI|AnalysisDate=9/23/2025 12:00:00 AM|EPSSlope=0.0699999928474426|ProfitMarginSlope=0.416337013244629|PriceSlope=0.00365635399457596|Volatility=3.10769009590149|Volume=0|Violation=False|Slope=0.00365635399457596|Score=1.73840687121807|AnnualizedReturn=2.5128088887714|SharpeRatio=0.319624993971795|RSquared=0.691818179642002|BetaMonths=6|Beta=4.40428456309766
|
||||
Symbol=SBSW|AnalysisDate=9/25/2025 12:00:00 AM|EPSSlope=0.144999995827675|ProfitMarginSlope=8.49569129943848|PriceSlope=0.00379709174022612|Volatility=0.753211140632629|Volume=0|Violation=False|Slope=0.00379709174022612|Score=1.72251869189193|AnnualizedReturn=2.60352714141071|SharpeRatio=0.241739220317797|RSquared=0.661609654262558|BetaMonths=6|Beta=1.87093907966492
|
||||
Symbol=NTES|AnalysisDate=9/15/2025 12:00:00 AM|EPSSlope=0.204999923706055|ProfitMarginSlope=1.94379615783691|PriceSlope=0.00231223761471691|Volatility=7.26750755310059|Volume=0|Violation=False|Slope=0.00231223761471691|Score=1.55371831188788|AnnualizedReturn=1.79083837998442|SharpeRatio=0.0978165524611287|RSquared=0.867592703648334|BetaMonths=6|Beta=1.22658293677365
|
||||
Symbol=SANM|AnalysisDate=10/6/2025 12:00:00 AM|EPSSlope=0.174999952316284|ProfitMarginSlope=0.24951171875|PriceSlope=0.00208239218708193|Volatility=6.52257966995239|Volume=0|Violation=False|Slope=0.00208239218708193|Score=1.2404476041886|AnnualizedReturn=1.6900579717286|SharpeRatio=0.133157857131703|RSquared=0.733967488061884|BetaMonths=6|Beta=1.12080932540038
|
||||
Symbol=APH|AnalysisDate=9/10/2025 12:00:00 AM|EPSSlope=0.225000023841858|ProfitMarginSlope=1.02336883544922|PriceSlope=0.00218577417499694|Volatility=3.01760697364807|Volume=0|Violation=False|Slope=0.00218577417499694|Score=1.19871329173408|AnnualizedReturn=1.73466635462984|SharpeRatio=0.117857316723347|RSquared=0.691033920462406|BetaMonths=6|Beta=1.29660077545655
|
||||
Symbol=BVN|AnalysisDate=9/22/2025 12:00:00 AM|EPSSlope=0.0400000214576721|ProfitMarginSlope=3.35278701782227|PriceSlope=0.00178832525596272|Volatility=0.509544312953949|Volume=0|Violation=False|Slope=0.00178832525596272|Score=1.1871859154563|AnnualizedReturn=1.56934441878645|SharpeRatio=0.0627467548412755|RSquared=0.756485256674465|BetaMonths=6|Beta=0.0852063395469229
|
||||
Symbol=FN|AnalysisDate=11/4/2025 12:00:00 AM|EPSSlope=0.0999999046325684|ProfitMarginSlope=0.0680141448974609|PriceSlope=0.00254868146461796|Volatility=18.239673614502|Volume=0|Violation=False|Slope=0.00254868146461796|Score=1.12395010145193|AnnualizedReturn=1.90078646425663|SharpeRatio=0.156706951792266|RSquared=0.591307925738777|BetaMonths=6|Beta=1.07114601199124
|
||||
Symbol=BBW|AnalysisDate=9/15/2025 12:00:00 AM|EPSSlope=0.150000095367432|ProfitMarginSlope=0.480964660644531|PriceSlope=0.00200401683880659|Volatility=7.05817651748657|Volume=0|Violation=False|Slope=0.00200401683880659|Score=1.00361947154793|AnnualizedReturn=1.65700580768719|SharpeRatio=0.109950367761114|RSquared=0.605682531039984|BetaMonths=6|Beta=3.21592857727695
|
||||
@@ -163,29 +162,22 @@ Symbol=BABA|AnalysisDate=10/1/2025 12:00:00 AM|EPSSlope=0.559999942779541|Profit
|
||||
Symbol=ROAD|AnalysisDate=9/19/2025 12:00:00 AM|EPSSlope=0.105000019073486|ProfitMarginSlope=1.63973665237427|PriceSlope=0.00164434603625479|Volatility=4.52940130233765|Volume=0|Violation=False|Slope=0.00164434603625479|Score=0.70518000814682|AnnualizedReturn=1.51342485909754|SharpeRatio=0.167706499018902|RSquared=0.465949798503588|BetaMonths=6|Beta=1.37811621633073
|
||||
Symbol=KLAC|AnalysisDate=9/18/2025 12:00:00 AM|EPSSlope=1.4399995803833|ProfitMarginSlope=0.835277557373047|PriceSlope=0.00129829771983195|Volatility=59.6670112609863|Volume=0|Violation=False|Slope=0.00129829771983195|Score=0.696746546682062|AnnualizedReturn=1.38703867573729|SharpeRatio=-0.294672655364879|RSquared=0.502326689853622|BetaMonths=6|Beta=2.15562693702778
|
||||
Symbol=NVMI|AnalysisDate=9/30/2025 12:00:00 AM|EPSSlope=0.365000009536743|ProfitMarginSlope=0.701305389404297|PriceSlope=0.00151116356921204|Volatility=11.0952587127686|Volume=0|Violation=False|Slope=0.00151116356921204|Score=0.634761720023267|AnnualizedReturn=1.46347423134568|SharpeRatio=-0.17068064618604|RSquared=0.433736178217226|BetaMonths=6|Beta=3.21645112867293
|
||||
Symbol=PTCT|AnalysisDate=9/11/2025 12:00:00 AM|EPSSlope=0.229999780654907|ProfitMarginSlope=0.267559051513672|PriceSlope=0.00114877088928268|Volatility=4.3342490196228|Volume=0|Violation=False|Slope=0.00114877088928268|Score=0.606345820774638|AnnualizedReturn=1.33574643654898|SharpeRatio=0.0125861708714166|RSquared=0.453937816477493|BetaMonths=6|Beta=0.276668916101194
|
||||
Symbol=LGND|AnalysisDate=9/30/2025 12:00:00 AM|EPSSlope=1.55999994277954|ProfitMarginSlope=0.261482238769531|PriceSlope=0.00131115840818318|Volatility=3.33523750305176|Volume=0|Violation=False|Slope=0.00131115840818318|Score=0.566445116927072|AnnualizedReturn=1.3915412124965|SharpeRatio=0.0375984436300414|RSquared=0.407063126726114|BetaMonths=6|Beta=0.429603430352865
|
||||
Symbol=PRIM|AnalysisDate=9/19/2025 12:00:00 AM|EPSSlope=0.315000057220459|ProfitMarginSlope=0.827674865722656|PriceSlope=0.00174915986971411|Volatility=4.4852933883667|Volume=0|Violation=False|Slope=0.00174915986971411|Score=0.560411044122823|AnnualizedReturn=1.55393168023759|SharpeRatio=0.261359856273027|RSquared=0.360640722658502|BetaMonths=6|Beta=2.63821547738842
|
||||
Symbol=GLW|AnalysisDate=9/5/2025 12:00:00 AM|EPSSlope=0.21000000834465|ProfitMarginSlope=0.926633834838867|PriceSlope=0.0010950711054805|Volatility=2.05026125907898|Volume=0|Violation=False|Slope=0.0010950711054805|Score=0.557801280206709|AnnualizedReturn=1.31779240828614|SharpeRatio=0.0647764056434674|RSquared=0.423284636259333|BetaMonths=6|Beta=1.72198299721121
|
||||
Symbol=BWXT|AnalysisDate=10/1/2025 12:00:00 AM|EPSSlope=0.0299999713897705|ProfitMarginSlope=0.842325210571289|PriceSlope=0.00148142098327814|Volatility=5.46874237060547|Volume=0|Violation=False|Slope=0.00148142098327814|Score=0.535519927511107|AnnualizedReturn=1.45254630359425|SharpeRatio=0.0847391180072971|RSquared=0.368676665374447|BetaMonths=6|Beta=1.20408002256826
|
||||
Symbol=MU|AnalysisDate=10/16/2025 12:00:00 AM|EPSSlope=1.01999998092651|ProfitMarginSlope=3.93631362915039|PriceSlope=0.0017836395604108|Volatility=12.5083780288696|Volume=0|Violation=False|Slope=0.0017836395604108|Score=0.535470880696113|AnnualizedReturn=1.56749243792573|SharpeRatio=0.131165993959009|RSquared=0.341609865374982|BetaMonths=6|Beta=3.80362957802949
|
||||
Symbol=COLL|AnalysisDate=11/17/2025 12:00:00 AM|EPSSlope=0.285000026226044|ProfitMarginSlope=3.47329521179199|PriceSlope=0.000996351284585738|Volatility=4.86669015884399|Volume=0|Violation=False|Slope=0.000996351284585738|Score=0.498972314260969|AnnualizedReturn=1.28541358644203|SharpeRatio=-0.244881207463219|RSquared=0.388180364299792|BetaMonths=6|Beta=1.46108876190814
|
||||
Symbol=GSL|AnalysisDate=9/18/2025 12:00:00 AM|EPSSlope=0.0900001525878906|ProfitMarginSlope=0.176097869873047|PriceSlope=0.00102036281428555|Volatility=0.917586147785187|Volume=0|Violation=False|Slope=0.00102036281428555|Score=0.447266351637514|AnnualizedReturn=1.29321508181417|SharpeRatio=-0.240771308468293|RSquared=0.345856120862797|BetaMonths=6|Beta=0.967212765650389
|
||||
Symbol=CGAU|AnalysisDate=9/25/2025 12:00:00 AM|EPSSlope=0.0750000029802322|ProfitMarginSlope=7.88293075561523|PriceSlope=0.0009970382360156|Volatility=0.387202262878418|Volume=0|Violation=False|Slope=0.0009970382360156|Score=0.429807798377358|AnnualizedReturn=1.28563612591224|SharpeRatio=-0.153030522888472|RSquared=0.334315277639216|BetaMonths=6|Beta=0.89521003942289
|
||||
Symbol=MD|AnalysisDate=11/17/2025 12:00:00 AM|EPSSlope=0.300000011920929|ProfitMarginSlope=3.04110622406006|PriceSlope=0.000999694216261977|Volatility=2.24461984634399|Volume=0|Violation=False|Slope=0.000999694216261977|Score=0.412248257927109|AnnualizedReturn=1.28649689922789|SharpeRatio=-0.0107905850378413|RSquared=0.320442480797681|BetaMonths=6|Beta=3.52283407368269
|
||||
Symbol=BTG|AnalysisDate=9/2/2025 12:00:00 AM|EPSSlope=0.0600000023841858|ProfitMarginSlope=7.98205184936523|PriceSlope=0.00108754638880565|Volatility=0.141802281141281|Volume=0|Violation=False|Slope=0.00108754638880565|Score=0.403083945684378|AnnualizedReturn=1.31529594031496|SharpeRatio=0.0341477983681376|RSquared=0.30645874690973|BetaMonths=6|Beta=0.468022424186877
|
||||
Symbol=THC|AnalysisDate=9/26/2025 12:00:00 AM|EPSSlope=0.25|ProfitMarginSlope=0.327152252197266|PriceSlope=0.000955274874018335|Volatility=5.08288431167603|Volume=0|Violation=False|Slope=0.000955274874018335|Score=0.322936552181079|AnnualizedReturn=1.2721765700957|SharpeRatio=-0.209542335356885|RSquared=0.25384570017414|BetaMonths=6|Beta=1.46034995404185
|
||||
Symbol=GSAT|AnalysisDate=11/12/2025 12:00:00 AM|EPSSlope=0.115000009536743|ProfitMarginSlope=1.31202697753906|PriceSlope=0.00171636000994749|Volatility=6.80252933502197|Volume=0|Violation=False|Slope=0.00171636000994749|Score=0.318381945542454|AnnualizedReturn=1.54114049347012|SharpeRatio=0.26987857374401|RSquared=0.206588527711427|BetaMonths=6|Beta=2.29067093580777
|
||||
Symbol=AIR|AnalysisDate=9/29/2025 12:00:00 AM|EPSSlope=0.350000023841858|ProfitMarginSlope=0.581799507141113|PriceSlope=0.000698221037833735|Volatility=4.6066722869873|Volume=0|Violation=False|Slope=0.000698221037833735|Score=0.253698463892993|AnnualizedReturn=1.19238046711253|SharpeRatio=-0.225066718117313|RSquared=0.212766370206775|BetaMonths=6|Beta=2.52704300010446
|
||||
Symbol=LVS|AnalysisDate=11/20/2025 12:00:00 AM|EPSSlope=0.120000004768372|ProfitMarginSlope=0.147016525268555|PriceSlope=0.00096485189417096|Volatility=2.16808557510376|Volume=0|Violation=False|Slope=0.00096485189417096|Score=0.241004703156408|AnnualizedReturn=1.27525056048546|SharpeRatio=-0.198411497252607|RSquared=0.188986157406323|BetaMonths=6|Beta=1.51109611853874
|
||||
Symbol=HBM|AnalysisDate=9/3/2025 12:00:00 AM|EPSSlope=0.175000011920929|ProfitMarginSlope=0.490240097045898|PriceSlope=0.000729030817168273|Volatility=0.487358808517456|Volume=0|Violation=False|Slope=0.000729030817168273|Score=0.175331906747473|AnnualizedReturn=1.20167421779262|SharpeRatio=0.0685094425688964|RSquared=0.145906356441219|BetaMonths=6|Beta=2.69015248129092
|
||||
Symbol=BILI|AnalysisDate=9/15/2025 12:00:00 AM|EPSSlope=0.135000005364418|ProfitMarginSlope=1.50113868713379|PriceSlope=0.000573695565703754|Volatility=1.41854751110077|Volume=0|Violation=False|Slope=0.000573695565703754|Score=0.108280835698724|AnnualizedReturn=1.1555440621639|SharpeRatio=0.067556996898538|RSquared=0.0937055013687271|BetaMonths=6|Beta=0.725243490158731
|
||||
Symbol=MCY|AnalysisDate=10/3/2025 12:00:00 AM|EPSSlope=0.934999942779541|ProfitMarginSlope=2.7081880569458|PriceSlope=0.000598694193818475|Volatility=2.73796057701111|Volume=0|Violation=False|Slope=0.000598694193818475|Score=0.0983982079050049|AnnualizedReturn=1.16284656774647|SharpeRatio=-0.0693450586498807|RSquared=0.0846183930315889|BetaMonths=6|Beta=1.50736316396258
|
||||
Symbol=CSIQ|AnalysisDate=10/31/2025 12:00:00 AM|EPSSlope=0.0249999985098839|ProfitMarginSlope=7.77392435073853|PriceSlope=0.000623090718563301|Volatility=1.79284286499023|Volume=0|Violation=False|Slope=0.000623090718563301|Score=0.0807088026857748|AnnualizedReturn=1.1700176814875|SharpeRatio=-0.187760717880484|RSquared=0.0689808401725739|BetaMonths=6|Beta=1.33520035507038
|
||||
Symbol=MUX|AnalysisDate=9/2/2025 12:00:00 AM|EPSSlope=0.155000001192093|ProfitMarginSlope=12.6074028015137|PriceSlope=0.000420282872695496|Volatility=0.892517030239105|Volume=0|Violation=False|Slope=0.000420282872695496|Score=0.0505830547931327|AnnualizedReturn=1.11172324440238|SharpeRatio=0.0664507478013526|RSquared=0.0454996826303873|BetaMonths=6|Beta=2.4677990769044
|
||||
Symbol=TV|AnalysisDate=9/5/2025 12:00:00 AM|EPSSlope=0.0250000059604645|ProfitMarginSlope=3.05452346801758|PriceSlope=0.000362561864863969|Volatility=0.196487531065941|Volume=0|Violation=False|Slope=0.000362561864863969|Score=0.0409861983117743|AnnualizedReturn=1.09566949779821|SharpeRatio=0.0530850799580673|RSquared=0.0374074466745106|BetaMonths=6|Beta=2.16132791096815
|
||||
Symbol=IMOS|AnalysisDate=11/18/2025 12:00:00 AM|EPSSlope=0.0399999991059303|ProfitMarginSlope=1.49780511856079|PriceSlope=0.00022021307999562|Volatility=3.45910954475403|Volume=0|Violation=False|Slope=0.00022021307999562|Score=0.0232785327570433|AnnualizedReturn=1.05706235349833|SharpeRatio=-0.325433209217528|RSquared=0.0220219107037569|BetaMonths=6|Beta=2.37560627494608
|
||||
Symbol=HL|AnalysisDate=8/29/2025 12:00:00 AM|EPSSlope=0.0249999985098839|ProfitMarginSlope=5.97112083435059|PriceSlope=0.000112741516887054|Volatility=0.264708667993546|Volume=0|Violation=False|Slope=0.000112741516887054|Score=0.00468681348236116|AnnualizedReturn=1.02881830020441|SharpeRatio=-0.341675964720262|RSquared=0.00455553082738707|BetaMonths=6|Beta=0.630190379108049
|
||||
Symbol=IRMD|AnalysisDate=11/21/2025 12:00:00 AM|EPSSlope=0.0199999809265137|ProfitMarginSlope=0.859756469726563|PriceSlope=0.0017007269483326|Volatility=1.49323868751526|Volume=0|Violation=False|Slope=0.0017007269483326|Score=1.00958866945961|AnnualizedReturn=1.5350810653994|SharpeRatio=0.131721204689824|RSquared=0.657677755406961|BetaMonths=6|Beta=0.443438397302597
|
||||
Symbol=FTI|AnalysisDate=11/21/2025 12:00:00 AM|EPSSlope=0.0600000619888306|ProfitMarginSlope=0.997105598449707|PriceSlope=0.00151512058909537|Volatility=0.719519555568695|Volume=0|Violation=False|Slope=0.00151512058909537|Score=0.893034560876287|AnnualizedReturn=1.46493429033877|SharpeRatio=0.0408456480409023|RSquared=0.609607247755647|BetaMonths=6|Beta=2.43194338962535
|
||||
Symbol=COCO|AnalysisDate=11/24/2025 12:00:00 AM|EPSSlope=0.0399999618530273|ProfitMarginSlope=0.468318939208984|PriceSlope=0.000702689165827794|Volatility=3.09965920448303|Volume=0|Violation=False|Slope=0.000702689165827794|Score=0.301275890192158|AnnualizedReturn=1.19372380580228|SharpeRatio=-0.191321795593124|RSquared=0.252383247052426|BetaMonths=6|Beta=0.531335296723166
|
||||
@@ -276,6 +268,9 @@ Symbol=ASC|AnalysisDate=2/24/2026 12:00:00 AM|EPSSlope=0.0550000071525574|Profit
|
||||
Symbol=AXTI|AnalysisDate=2/25/2026 12:00:00 AM|EPSSlope=0.0100000202655792|ProfitMarginSlope=14.3379011154175|PriceSlope=0.0132443494419251|Volatility=5.61062288284302|Volume=0|Violation=False|Slope=0.0132443494419251|Score=25.5950000737303|AnnualizedReturn=28.150808051139|SharpeRatio=0.668193540464948|RSquared=0.909210138026384|BetaMonths=6|Beta=8.22958399333266
|
||||
Symbol=NSSC|AnalysisDate=2/25/2026 12:00:00 AM|EPSSlope=0.0450000166893005|ProfitMarginSlope=2.89405250549316|PriceSlope=0.00303225543568594|Volatility=1.4112114906311|Volume=0|Violation=False|Slope=0.00303225543568594|Score=1.7760120012008|AnnualizedReturn=2.14712206234386|SharpeRatio=0.039693929353024|RSquared=0.82715930889465|BetaMonths=6|Beta=3.90586565038708
|
||||
Symbol=LPG|AnalysisDate=2/25/2026 12:00:00 AM|EPSSlope=0.299999952316284|ProfitMarginSlope=3.59709167480469|PriceSlope=0.0014348486652486|Volatility=2.03607726097107|Volume=0|Violation=False|Slope=0.0014348486652486|Score=0.646725439489726|AnnualizedReturn=1.43559854049989|SharpeRatio=-0.0995953229975915|RSquared=0.450491847995702|BetaMonths=6|Beta=1.7235174113368
|
||||
Symbol=MPC|AnalysisDate=3/4/2026 12:00:00 AM|EPSSlope=1.98000001907349|ProfitMarginSlope=1.7620415687561|PriceSlope=0.00139964028977894|Volatility=7.6709098815918|Volume=0|Violation=False|Slope=0.00139964028977894|Score=0.906034636922709|AnnualizedReturn=1.42291751665396|SharpeRatio=-0.0262963567920841|RSquared=0.636744313228555|BetaMonths=6|Beta=3.22659752171988
|
||||
Symbol=GPRE|AnalysisDate=3/5/2026 12:00:00 AM|EPSSlope=0.51500004529953|ProfitMarginSlope=0.921499490737915|PriceSlope=0.00507912376904452|Volatility=0.632249653339386|Volume=0|Violation=False|Slope=0.00507912376904452|Score=2.91691129240431|AnnualizedReturn=3.59642101983529|SharpeRatio=0.294963134062473|RSquared=0.811059460590603|BetaMonths=6|Beta=0.39196687303021
|
||||
Symbol=PSX|AnalysisDate=3/11/2026 12:00:00 AM|EPSSlope=3.57999992370605|ProfitMarginSlope=2.175705909729|PriceSlope=0.00131596457111678|Volatility=5.67953681945801|Volume=0|Violation=False|Slope=0.00131596457111678|Score=0.96795803446649|AnnualizedReturn=1.39322760292548|SharpeRatio=-0.148191340472672|RSquared=0.69475944377931|BetaMonths=6|Beta=1.36221654601515
|
||||
TotalStopLimits=213
|
||||
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|StopLimitId=
|
||||
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|StopLimitId=
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
SESSIONv1.00
|
||||
LastUpdated=2/2/2026 11:09:46 AM
|
||||
TradeDate=2/27/2026
|
||||
LastUpdated=3/2/2026 10:14:42 AM
|
||||
TradeDate=3/31/2026
|
||||
StartDate=1/1/2018
|
||||
AnalysisDate=2/2/2026
|
||||
Cycle=97
|
||||
CashBalance=284.05
|
||||
AnalysisDate=3/2/2026
|
||||
Cycle=98
|
||||
CashBalance=1151.44
|
||||
NonTradeableCash=8221.84
|
||||
Verbose=True|BenchmarkMode=False|BenchmarkModeSymbol=SPY|HoldingPeriod=3|MaxPositions=3|NoTradeSymbols=ANTM,ETE,TGE,VCISY,BIREF,CSRA,LSXMK,KKPNY,CNNE,EDR,GBTC,YOKU,PNY,RFMD,ASAZY,PSDO|NoTradeFinancialSymbols=U.S. Private Equity,U.S. Financials,U.S. Financial Services,U.S. Banking and Investment Services,Trading-Miscellaneous,Trading--Miscellaneous,Trading--Leveraged Equity,Trading--Leveraged Debt,Trading--Leveraged Commodities,Trading--Inverse Equity,Trading--Inverse Commodities,Tactical Allocation,Specialty Finance,Japan Financials,Savings & Cooperative Banks,Option Writing,Insurance Brokers,Insurance - Specialty,Insurance - Reinsurance,Insurance - Property & Casualty,Insurance - Life,Insurance - Diversified,Global Private Equity,Global Financials,Financial Services,Financial Exchanges,Financial,China Financials,Banks - Regional - US,Banks - Regional - Latin America,Banks - Global,Asset Management,Credit Services|Benchmark=SPY|MarketCapLowerLimit=1000000000|UsePEScreen=False|UseEBITDAScreen=True|UseRevenuePerShareScreen=True|UseLowSlopeBetaCheck=True|LowSlopeBetaDays=15|LowSlopeBetaThreshhold=1|UseCalcBeta=True|UseMACD=True|MACDSetup=(12,26,9)|MACDSignalDays=12|MACDRejectStrongSellSignals=False|MACDRejectWeakSellSignals=True|UseStochastics=True|StochasticsSignalDays=3|StochasticsRejectStrongSells=True|StochasticsRejectWeakSells=True|UseFallbackCandidate=True|FallbackCandidate=SHV|FallbackCandidateBestOf=SHV,NEAR,BIL,GSY,AGG,ACWX,GSY,SCHF,IXUS,DBEF,IEFA,TLT|UseMaxPEScreen=True|MaxPE=40|StrictMaxPE=False|QualityIndicatorType=SCOREINDICATOR|IncludeTradeMasterForSymbolsHeld=True
|
||||
TotalActivePositions=9
|
||||
Slot=0|Symbol=DCO|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=21|PurchasePrice=111.96|CurrentPrice=110.95|Volume=106472|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-9.56175298804781|Score=1.24553280104877|MaxDrawdown=-0.468718945980072|MaxUpside=0.306542038917542|Velocity=0.924237560192616|PE=36.44|Beta=0.97|SharpeRatio=0
|
||||
Slot=0|Symbol=ENSG|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=13|PurchasePrice=171.54|CurrentPrice=171.66|Volume=396022|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-7.17131474103586|Score=1.02314117847296|MaxDrawdown=-0.368556797504425|MaxUpside=0.241224050521851|Velocity=0.716187911430281|PE=31.6|Beta=0.73|SharpeRatio=0
|
||||
Slot=0|Symbol=MDT|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=22|PurchasePrice=102.85|CurrentPrice=102.96|Volume=6046285|Return1D=0|ZacksRank=4-Sell|CumReturn252=0|IDIndicator=-10.3585657370518|Score=0.518428403011861|MaxDrawdown=-0.244328439235687|MaxUpside=0.171293973922729|Velocity=0.865293185419968|PE=26.67|Beta=0.74|SharpeRatio=0
|
||||
Slot=1|Symbol=TRVI|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=188|PurchasePrice=13.07|CurrentPrice=13.19|Volume=1325673|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=2.39043824701196|Score=2.75368855301141|MaxDrawdown=-0.744615375995636|MaxUpside=0.345381498336792|Velocity=1|PE=0|Beta=-0.43|SharpeRatio=0
|
||||
Slot=1|Symbol=DRD|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=82|PurchasePrice=30.6|CurrentPrice=30.18|Volume=295934|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-8.76494023904382|Score=1.50229817076201|MaxDrawdown=-0.697993636131287|MaxUpside=0.451048970222473|Velocity=0.934228187919463|PE=19.65|Beta=0.49|SharpeRatio=0
|
||||
Slot=1|Symbol=NFG|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=30|PurchasePrice=82.45|CurrentPrice=82.45|Volume=236813|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-9.56175298804781|Score=1.47874375251707|MaxDrawdown=-0.37163895368576|MaxUpside=0.0953423976898193|Velocity=0.658599827139153|PE=31.63|Beta=0.3|SharpeRatio=0
|
||||
Slot=1|Symbol=GTX|PurchaseDate=2/27/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=123|PurchasePrice=19.63|CurrentPrice=20.36|Volume=2065018|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-1.59362549800797|Score=1.78686800402217|MaxDrawdown=-0.585076332092285|MaxUpside=0.361035346984863|Velocity=0.931308749096167|PE=13.51|Beta=0.63|SharpeRatio=0
|
||||
Slot=1|Symbol=ALLE|PurchaseDate=2/27/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=15|PurchasePrice=160.87|CurrentPrice=161.15|Volume=483322|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-7.56972111553785|Score=1.09215924523576|MaxDrawdown=-0.339611113071442|MaxUpside=0.143267035484314|Velocity=0.659949622166247|PE=24.3|Beta=0.91|SharpeRatio=0
|
||||
Slot=1|Symbol=TARS|PurchaseDate=2/27/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=33|PurchasePrice=73.61|CurrentPrice=75.52|Volume=410748|Return1D=0|ZacksRank=4-Sell|CumReturn252=0|IDIndicator=-4.7808764940239|Score=0.769641209159601|MaxDrawdown=-0.529511570930481|MaxUpside=0.466769695281982|Velocity=0.832618025751073|PE=0|Beta=0.71|SharpeRatio=0
|
||||
Slot=2|Symbol=RKLB|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=35|PurchasePrice=70.63|CurrentPrice=69.76|Volume=17495818|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-9.56175298804781|Score=2.34285560119306|MaxDrawdown=-0.845531940460205|MaxUpside=0.92852771282196|Velocity=0.900553359683795|PE=0|Beta=2.96|SharpeRatio=0
|
||||
Slot=2|Symbol=TPB|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=22|PurchasePrice=109|CurrentPrice=108.4|Volume=132784|Return1D=0|ZacksRank=1-Strong Buy|CumReturn252=0|IDIndicator=-15.9362549800797|Score=1.44361960940429|MaxDrawdown=-0.547061681747437|MaxUpside=0.289932131767273|Velocity=0.947395388556789|PE=37.1|Beta=1.04|SharpeRatio=0
|
||||
Slot=2|Symbol=DHC|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=508|PurchasePrice=4.86|CurrentPrice=4.85|Volume=583294|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-1.99203187250997|Score=1.32742152530989|MaxDrawdown=-0.556521773338318|MaxUpside=0.754902005195618|Velocity=0.867313915857606|PE=0.37|Beta=2.29|SharpeRatio=0
|
||||
TotalPositions=255
|
||||
TotalPositions=258
|
||||
Symbol=LOPE|PurchaseDate=1/31/2018 12:00:00 AM|SellDate=4/30/2018 12:00:00 AM|Shares=11|PurchasePrice=92.52|CurrentPrice=103.99|Volume=177499|Return1D=0|ZacksRank=|CumReturn252=0|IDIndicator=-13.1474103585657|Score=NaN|MaxDrawdown=0|MaxUpside=0|Velocity=0.919762641898865|PE=24.89|Beta=1.38|SharpeRatio=NaN
|
||||
Symbol=MRCY|PurchaseDate=1/31/2018 12:00:00 AM|SellDate=4/30/2018 12:00:00 AM|Shares=23|PurchasePrice=47.69|CurrentPrice=32.08|Volume=481172|Return1D=0|ZacksRank=|CumReturn252=0|IDIndicator=-6.77290836653387|Score=NaN|MaxDrawdown=0|MaxUpside=0|Velocity=0.74313408723748|PE=56.5|Beta=0.44|SharpeRatio=NaN
|
||||
Symbol=SHV|PurchaseDate=2/28/2018 12:00:00 AM|SellDate=5/31/2018 12:00:00 AM|Shares=35|PurchasePrice=110.21|CurrentPrice=110.26|Volume=0|Return1D=0|ZacksRank=|CumReturn252=0|IDIndicator=0|Score=NaN|MaxDrawdown=0|MaxUpside=0|Velocity=0|PE=0|Beta=0|SharpeRatio=NaN
|
||||
@@ -273,3 +273,6 @@ Symbol=KGC|PurchaseDate=9/30/2025 12:00:00 AM|SellDate=12/31/2025 12:00:00 AM|Sh
|
||||
Symbol=ATAI|PurchaseDate=10/31/2025 12:00:00 AM|SellDate=1/30/2026 12:00:00 AM|Shares=421|PurchasePrice=5.85|CurrentPrice=3.74|Volume=4451435|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-4.38247011952191|Score=2.00926038960802|MaxDrawdown=-0.780538320541382|MaxUpside=1.1074378490448|Velocity=0.837742504409171|PE=0.3|Beta=2.08|SharpeRatio=0
|
||||
Symbol=GH|PurchaseDate=10/31/2025 12:00:00 AM|SellDate=1/30/2026 12:00:00 AM|Shares=26|PurchasePrice=94.07|CurrentPrice=113.68|Volume=3919282|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-3.18725099601593|Score=1.87048017006212|MaxDrawdown=-0.700385630130768|MaxUpside=0.393415093421936|Velocity=1|PE=0|Beta=2.03|SharpeRatio=0
|
||||
Symbol=WOR|PurchaseDate=10/31/2025 12:00:00 AM|SellDate=1/30/2026 12:00:00 AM|Shares=43|PurchasePrice=55.65|CurrentPrice=55.87|Volume=121804|Return1D=0|ZacksRank=4-Sell|CumReturn252=0|IDIndicator=-1.99203187250995|Score=1.28685684129769|MaxDrawdown=-0.433150291442871|MaxUpside=0.218586325645447|Velocity=0.534509927513394|PE=26.76|Beta=1.03|SharpeRatio=0
|
||||
Symbol=TRVI|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=2/27/2026 12:00:00 AM|Shares=188|PurchasePrice=13.07|CurrentPrice=11.75|Volume=1325673|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=2.39043824701196|Score=2.75368855301141|MaxDrawdown=-0.744615375995636|MaxUpside=0.345381498336792|Velocity=1|PE=0|Beta=-0.43|SharpeRatio=0
|
||||
Symbol=DRD|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=2/27/2026 12:00:00 AM|Shares=82|PurchasePrice=30.6|CurrentPrice=38.48|Volume=295934|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-8.76494023904382|Score=1.50229817076201|MaxDrawdown=-0.697993636131287|MaxUpside=0.451048970222473|Velocity=0.934228187919463|PE=19.65|Beta=0.49|SharpeRatio=0
|
||||
Symbol=NFG|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=2/27/2026 12:00:00 AM|Shares=30|PurchasePrice=82.45|CurrentPrice=91.99|Volume=236813|Return1D=0|ZacksRank=3-Hold|CumReturn252=0|IDIndicator=-9.56175298804781|Score=1.47874375251707|MaxDrawdown=-0.37163895368576|MaxUpside=0.0953423976898193|Velocity=0.658599827139153|PE=31.63|Beta=0.3|SharpeRatio=0
|
||||
|
||||
@@ -1,22 +1,21 @@
|
||||
MGSHSESSIONv2.00
|
||||
LastUpdated=2/25/2026 9:10:49 PM
|
||||
TradeDate=2/26/2026
|
||||
LastUpdated=3/12/2026 8:57:36 PM
|
||||
TradeDate=3/13/2026
|
||||
StartDate=3/31/2025
|
||||
AnalysisDate=2/25/2026
|
||||
Cycle=11
|
||||
CashBalance=2932.39
|
||||
AnalysisDate=3/12/2026
|
||||
Cycle=12
|
||||
CashBalance=3886.05
|
||||
NonTradeableCash=0
|
||||
HedgeCashBalance=3000
|
||||
Verbose=True|KeepSlotPositions=True|BenchmarkMode=False|BenchmarkModeSymbol=SPY|HoldingPeriod=3|MaxPositions=3|NoTradeSymbols=OSB,IBDRY,GBTC,YOKU,PNY,RFMD,ASAZY|NoTradeFinancialSymbols=U.S. Private Equity,U.S. Financials,U.S. Financial Services,U.S. Banking and Investment Services,Trading-Miscellaneous,Trading--Miscellaneous,Trading--Leveraged Equity,Trading--Leveraged Debt,Trading--Leveraged Commodities,Trading--Inverse Equity,Trading--Inverse Commodities,Tactical Allocation,Specialty Finance,Japan Financials,Savings & Cooperative Banks,Option Writing,Insurance Brokers,Insurance - Specialty,Insurance - Reinsurance,Insurance - Property & Casualty,Insurance - Life,Insurance - Diversified,Global Private Equity,Global Financials,Financial Services,Financial Exchanges,Financial,China Financials,Banks - Regional - US,Banks - Regional - Latin America,Banks - Global,Asset Management,Credit Services|Benchmark=SPY|MarketCapLowerLimit=1000000000|UsePEScreen=False|UseEBITDAScreen=True|UseRevenuePerShareScreen=True|UseLowSlopeBetaCheck=True|LowSlopeBetaDays=15|LowSlopeBetaThreshhold=1|UseMACD=True|MACDSetup=(12,26,9)|MACDSignalDays=12|MACDRejectStrongSellSignals=False|MACDRejectWeakSellSignals=True|UseStochastics=True|StochasticsSignalDays=3|StochasticsRejectStrongSells=True|StochasticsRejectWeakSells=True|UseFallbackCandidate=True|FallbackCandidate=SHV|FallbackCandidateBestOf=SHV,NEAR,BIL,GSY,AGG,ACWX,GSY,SCHF,IXUS,DBEF,IEFA,TLT|UseMaxPEScreen=True|MaxPE=40|StrictMaxPE=False|QualityIndicatorType=IDINDICATOR|IncludeTradeMasterForSymbolsHeld=True|UseStopLimits=True|StopLimitRiskPercentDecimal=0.2|StopLimitScalingVolatilityDays=30|MinDaysBetweenInitialStopAdjustment=30|MinDaysBetweenStopAdjustments=30|StopLimitPriceTrendDays=20|StopLimitATRMultiplier=3|UseHedging=True|HedgeBenchmarkSymbol=SPY|HedgeShortSymbol=SH|HedgeRiskPercentDecimal=0.12|HedgeMinDaysBetweenStopAdjustments=1|HedgeInitialCash=3000|HedgeCloseAboveSMANDays=10|HedgeBandBreakCheckDays=3|HedgeATRMultiplier=1|MaxPricingExceptions=3|UseBetaGenerator=True|UseBetaGeneratorMonths=24
|
||||
TotalActivePositions=7
|
||||
Slot=0|Symbol=USFD|PurchaseDate=9/30/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=12|PurchasePrice=76.21|CurrentPrice=95.88|Volume=2447913|Return1D=0|CumReturn252=0|IDIndicator=-18.7250996015936|Score=0.970794577873616|Velocity=0.708823529411765|PE=33.97|Beta=1.35666771887916|InitialStopLimit=60.97|TrailingStopLimit=90.4222861194611|LastStopAdjustment=2/17/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=15.324|Comment=Price changed on 10/1/2025 from $76.62 to $76.21
|
||||
Slot=0|Symbol=CAH|PurchaseDate=9/30/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=5|PurchasePrice=155.81|CurrentPrice=226.18|Volume=2414935|Return1D=0|CumReturn252=0|IDIndicator=-17.9282868525896|Score=1.45705377610136|Velocity=0.779428953080648|PE=23.64|Beta=0.628226122785001|InitialStopLimit=124.65|TrailingStopLimit=198.937214622498|LastStopAdjustment=1/30/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=31.392|Comment=Price changed on 10/1/2025 from $156.96 to $155.81
|
||||
Slot=0|Symbol=TPB|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=6|PurchasePrice=109|CurrentPrice=142.98|Volume=132784|Return1D=0|CumReturn252=0|IDIndicator=-15.9362549800797|Score=1.44361960940429|Velocity=0.947395388556789|PE=37.1|Beta=1.25054775125095|InitialStopLimit=87.2|TrailingStopLimit=106.557785625458|LastStopAdjustment=1/30/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=21.68|Comment=Price changed on 1/2/2026 from $108.40 to $109.00
|
||||
Slot=1|Symbol=XEL|PurchaseDate=10/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=5|PurchasePrice=81.17|CurrentPrice=83.55|Volume=6202750|Return1D=0|CumReturn252=0|IDIndicator=-11.5537848605578|Score=0.602697377681549|Velocity=0.944803580308304|PE=22.43|Beta=-0.192317961128493|InitialStopLimit=64.936|TrailingStopLimit=77.5441425132751|LastStopAdjustment=2/23/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=16.234|Comment=
|
||||
Slot=1|Symbol=MDT|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=14|PurchasePrice=102.85|CurrentPrice=96.65|Volume=6046285|Return1D=0|CumReturn252=0|IDIndicator=-10.3585657370518|Score=0.518428403011861|Velocity=0.865293185419968|PE=26.67|Beta=0.37428296833055|InitialStopLimit=82.28|TrailingStopLimit=82.28|LastStopAdjustment=1/1/0001 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=20.592|Comment=Price changed on 2/2/2026 from $102.96 to $102.85
|
||||
Slot=1|Symbol=ALHC|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=64|PurchasePrice=22.45|CurrentPrice=20.13|Volume=2524769|Return1D=0|CumReturn252=0|IDIndicator=-8.36653386454184|Score=0.341327585226881|Velocity=0.908249807247494|PE=0|Beta=-0.0198043736453601|InitialStopLimit=17.96|TrailingStopLimit=17.96|LastStopAdjustment=1/1/0001 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=4.506|Comment=Price changed on 2/2/2026 from $22.53 to $22.45
|
||||
Slot=2|Symbol=NFG|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=12|PurchasePrice=82.45|CurrentPrice=88.48|Volume=236813|Return1D=0|CumReturn252=0|IDIndicator=-9.56175298804781|Score=1.47874375251707|Velocity=0.658599827139153|PE=31.63|Beta=0.0443025382529758|InitialStopLimit=65.96|TrailingStopLimit=77.9947861814499|LastStopAdjustment=1/30/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=16.49|Comment=
|
||||
TotalPositions=17
|
||||
TotalActivePositions=6
|
||||
Slot=0|Symbol=CAH|PurchaseDate=9/30/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=5|PurchasePrice=155.81|CurrentPrice=219.09|Volume=2414935|Return1D=0|CumReturn252=0|IDIndicator=-17.9282868525896|Score=1.45705377610136|Velocity=0.779428953080648|PE=23.64|Beta=0.628226122785001|InitialStopLimit=124.65|TrailingStopLimit=210.485930538177|LastStopAdjustment=3/2/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=31.392|Comment=Price changed on 10/1/2025 from $156.96 to $155.81
|
||||
Slot=1|Symbol=XEL|PurchaseDate=10/31/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=5|PurchasePrice=81.17|CurrentPrice=80.82|Volume=6202750|Return1D=0|CumReturn252=0|IDIndicator=-11.5537848605578|Score=0.602697377681549|Velocity=0.944803580308304|PE=22.43|Beta=-0.192317961128493|InitialStopLimit=64.936|TrailingStopLimit=77.5441425132751|LastStopAdjustment=2/23/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=16.234|Comment=
|
||||
Slot=1|Symbol=MDT|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=14|PurchasePrice=102.85|CurrentPrice=87.38|Volume=6046285|Return1D=0|CumReturn252=0|IDIndicator=-10.3585657370518|Score=0.518428403011861|Velocity=0.865293185419968|PE=26.67|Beta=0.37428296833055|InitialStopLimit=82.28|TrailingStopLimit=82.28|LastStopAdjustment=1/1/0001 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=20.592|Comment=Price changed on 2/2/2026 from $102.96 to $102.85
|
||||
Slot=2|Symbol=NFG|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=12|PurchasePrice=82.45|CurrentPrice=93.74|Volume=236813|Return1D=0|CumReturn252=0|IDIndicator=-9.56175298804781|Score=1.47874375251707|Velocity=0.658599827139153|PE=31.63|Beta=0.0443025382529758|InitialStopLimit=65.96|TrailingStopLimit=85.4851430559158|LastStopAdjustment=3/2/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=16.49|Comment=
|
||||
Slot=2|Symbol=NWN|PurchaseDate=2/27/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=18|PurchasePrice=53|CurrentPrice=51.94|Volume=468654|Return1D=0|CumReturn252=0|IDIndicator=-17.1314741035857|Score=0.661596031246807|Velocity=1|PE=20.04|Beta=-0.0208556368428403|InitialStopLimit=42.4|TrailingStopLimit=42.4|LastStopAdjustment=1/1/0001 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=10.608|Comment=Price changed on 3/2/2026 from $53.04 to $53.00
|
||||
Slot=2|Symbol=ALLE|PurchaseDate=2/27/2026 12:00:00 AM|SellDate=1/1/0001 12:00:00 AM|Shares=6|PurchasePrice=160.87|CurrentPrice=145.85|Volume=483322|Return1D=0|CumReturn252=0|IDIndicator=-7.56972111553785|Score=1.09215924523576|Velocity=0.659949622166247|PE=24.3|Beta=0.326218892554503|InitialStopLimit=128.7|TrailingStopLimit=128.7|LastStopAdjustment=1/1/0001 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=32.23|Comment=Price changed on 3/2/2026 from $161.15 to $160.87
|
||||
TotalPositions=20
|
||||
Symbol=MO|PurchaseDate=3/31/2025 12:00:00 AM|SellDate=5/14/2025 12:00:00 AM|Shares=18|PurchasePrice=59.91|CurrentPrice=56.15|Volume=17335180|Return1D=0|CumReturn252=0|IDIndicator=-15.9362549800797|Score=1.14749269300042|Velocity=0.967136150234742|PE=9|Beta=0.572465642401382|InitialStopLimit=47.93|TrailingStopLimit=56.1565003347397|LastStopAdjustment=5/7/2025 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=12.004|Comment=Closed due to trailing stop.
|
||||
Symbol=EXC|PurchaseDate=3/31/2025 12:00:00 AM|SellDate=5/14/2025 12:00:00 AM|Shares=24|PurchasePrice=45.76|CurrentPrice=42.6|Volume=14993121|Return1D=0|CumReturn252=0|IDIndicator=-8.76494023904382|Score=0.405636492837393|Velocity=1|PE=18.02|Beta=0.248374476251328|InitialStopLimit=36.61|TrailingStopLimit=42.7107857322693|LastStopAdjustment=4/30/2025 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=9.216|Comment=Closed due to trailing stop.
|
||||
Symbol=RGLD|PurchaseDate=4/30/2025 12:00:00 AM|SellDate=7/7/2025 12:00:00 AM|Shares=6|PurchasePrice=179.06|CurrentPrice=162|Volume=872755|Return1D=0|CumReturn252=0|IDIndicator=-12.3505976095618|Score=0.879340632979787|Velocity=0.8398891966759|PE=36.94|Beta=0.672718546494456|InitialStopLimit=143.25|TrailingStopLimit=162.603214492798|LastStopAdjustment=6/2/2025 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=36.542|Comment=Manual close.
|
||||
@@ -34,7 +33,10 @@ Symbol=SH|PurchaseDate=9/15/2025 12:00:00 AM|SellDate=11/20/2025 12:00:00 AM|Sha
|
||||
Symbol=PSO|PurchaseDate=4/30/2025 12:00:00 AM|SellDate=1/16/2026 12:00:00 AM|Shares=69|PurchasePrice=15.98|CurrentPrice=12.62|Volume=894303|Return1D=0|CumReturn252=0|IDIndicator=-11.9521912350598|Score=1.15269564166514|Velocity=0.737122557726465|PE=19.2|Beta=0.0342052512015139|InitialStopLimit=12.78|TrailingStopLimit=12.78|LastStopAdjustment=1/1/0001 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=3.25|Comment=Closed due to trailing stop.
|
||||
Symbol=NYT|PurchaseDate=8/29/2025 12:00:00 AM|SellDate=2/4/2026 12:00:00 AM|Shares=14|PurchasePrice=59.38|CurrentPrice=61.34|Volume=1582847|Return1D=0|CumReturn252=0|IDIndicator=-10.3585657370518|Score=-0.0546472654561472|Velocity=0.878823529411765|PE=30.96|Beta=0.759120105784337|InitialStopLimit=47.5|TrailingStopLimit=66.0039285755157|LastStopAdjustment=1/7/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=11.968|Comment=Manual close.
|
||||
Symbol=NEU|PurchaseDate=11/28/2025 12:00:00 AM|SellDate=2/12/2026 12:00:00 AM|Shares=1|PurchasePrice=761.43|CurrentPrice=607|Volume=47592|Return1D=0|CumReturn252=0|IDIndicator=-10.7569721115538|Score=1.32888913206578|Velocity=0.735010364152827|PE=16.57|Beta=0.634028454808648|InitialStopLimit=609.14|TrailingStopLimit=609.14|LastStopAdjustment=1/1/0001 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=152.706|Comment=Closed due to trailing stop.
|
||||
TotalStopLimits=38
|
||||
Symbol=TPB|PurchaseDate=12/31/2025 12:00:00 AM|SellDate=3/2/2026 12:00:00 AM|Shares=6|PurchasePrice=109|CurrentPrice=106.84|Volume=132784|Return1D=0|CumReturn252=0|IDIndicator=-15.9362549800797|Score=1.44361960940429|Velocity=0.947395388556789|PE=37.1|Beta=1.25054775125095|InitialStopLimit=87.2|TrailingStopLimit=106.557785625458|LastStopAdjustment=1/30/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=21.68|Comment=Manual close.
|
||||
Symbol=USFD|PurchaseDate=9/30/2025 12:00:00 AM|SellDate=3/6/2026 12:00:00 AM|Shares=12|PurchasePrice=76.21|CurrentPrice=90.2|Volume=2447913|Return1D=0|CumReturn252=0|IDIndicator=-18.7250996015936|Score=0.970794577873616|Velocity=0.708823529411765|PE=33.97|Beta=1.35666771887916|InitialStopLimit=60.97|TrailingStopLimit=90.4222861194611|LastStopAdjustment=2/17/2026 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=15.324|Comment=Manual close.
|
||||
Symbol=ALHC|PurchaseDate=1/30/2026 12:00:00 AM|SellDate=3/9/2026 12:00:00 AM|Shares=64|PurchasePrice=22.45|CurrentPrice=17.96|Volume=2524769|Return1D=0|CumReturn252=0|IDIndicator=-8.36653386454184|Score=0.341327585226881|Velocity=0.908249807247494|PE=0|Beta=-0.0198043736453601|InitialStopLimit=17.96|TrailingStopLimit=17.96|LastStopAdjustment=1/1/0001 12:00:00 AM|PositionRiskPercentDecimal=0.2|R=4.506|Comment=Manual close.
|
||||
TotalStopLimits=40
|
||||
Symbol=EXC|AnalysisDate=4/30/2025 12:00:00 AM|PreviousStop=36.61|NewStop=42.7107857322693|CurrentPriceLow=42.6|CurrentPriceClose=46.9|PriceTrendIndicatorSlope=0.0870828032493591|StopLimitId=EXC20250331120000AM
|
||||
Symbol=SXT|AnalysisDate=4/30/2025 12:00:00 AM|PreviousStop=59.18|NewStop=85.4177850723267|CurrentPriceLow=92.4|CurrentPriceClose=93.95|PriceTrendIndicatorSlope=0.931879639625549|StopLimitId=SXT20250331120000AM
|
||||
Symbol=MO|AnalysisDate=5/7/2025 12:00:00 AM|PreviousStop=47.93|NewStop=56.1565003347397|CurrentPriceLow=56.16|CurrentPriceClose=60.91|PriceTrendIndicatorSlope=0.217300787568092|StopLimitId=MO20250331120000AM
|
||||
@@ -73,5 +75,7 @@ Symbol=TPB|AnalysisDate=1/30/2026 12:00:00 AM|PreviousStop=87.2|NewStop=106.5577
|
||||
Symbol=NFG|AnalysisDate=1/30/2026 12:00:00 AM|PreviousStop=65.96|NewStop=77.9947861814499|CurrentPriceLow=82.54|CurrentPriceClose=83.75|PriceTrendIndicatorSlope=0.215090155601501|StopLimitId=NFG20251128120000AM
|
||||
Symbol=USFD|AnalysisDate=2/17/2026 12:00:00 AM|PreviousStop=77.9387144756317|NewStop=90.4222861194611|CurrentPriceLow=96.59|CurrentPriceClose=97.11|PriceTrendIndicatorSlope=0.7435262799263|StopLimitId=USFD20250930120000AM
|
||||
Symbol=XEL|AnalysisDate=2/23/2026 12:00:00 AM|PreviousStop=64.936|NewStop=77.5441425132751|CurrentPriceLow=81.78|CurrentPriceClose=83.35|PriceTrendIndicatorSlope=0.34472182393074|StopLimitId=XEL20251031120000AM
|
||||
Symbol=CAH|AnalysisDate=3/2/2026 12:00:00 AM|PreviousStop=198.937214622498|NewStop=210.485930538177|CurrentPriceLow=228.1|CurrentPriceClose=229.88|PriceTrendIndicatorSlope=0.661804258823395|StopLimitId=CAH20250930120000AM
|
||||
Symbol=NFG|AnalysisDate=3/2/2026 12:00:00 AM|PreviousStop=77.9947861814499|NewStop=85.4851430559158|CurrentPriceLow=90.74|CurrentPriceClose=92.66|PriceTrendIndicatorSlope=0.335458546876907|StopLimitId=NFG20251128120000AM
|
||||
TotalHedgePositions=0
|
||||
TotalPricingExceptions=0
|
||||
|
||||
Binary file not shown.
BIN
TradeBook/MGSHTradeBook.xlsx
Normal file
BIN
TradeBook/MGSHTradeBook.xlsx
Normal file
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user