コード例 #1
0
ファイル: Race.cs プロジェクト: jpazarzis/hogar
        internal double BetIt(Solution solution, double bankroll, double minPercentAdvantage, ref int numberOfBetsFound)
        {
            double totalWeight = 0;
            foreach (var horse in _horse)
            {
                horse.AssignWeight(solution.Weights);
                totalWeight += horse.Weight;
            }

            double bettingResult = 0.0;

            foreach (var horse in _horse)
            {
                horse.ProbabilityToWin = horse.Weight/totalWeight;

                if(horse.IsOverlayByThisMargin(minPercentAdvantage))
                {
                    double amountToBet = bankroll*minPercentAdvantage;
                    amountToBet = 10;
                    bettingResult = horse.IsWinner ? amountToBet : (-1.0)*amountToBet;
                    if (horse.IsWinner)
                    {
                        ++numberOfBetsFound;
                    }
                    break;
                }
            }

            return bettingResult;
        }
コード例 #2
0
ファイル: BackTester.cs プロジェクト: jpazarzis/hogar
 public BackTester(Solution s, double bankroll, int numberOfRaces, int minAdvantage)
 {
     _solution = s;
     _bankroll = bankroll;
     _numberOfRaces = numberOfRaces;
     _minAdvantage = minAdvantage;
 }
コード例 #3
0
ファイル: Race.cs プロジェクト: jpazarzis/hogar
 public void UpdatePartitions(Solution solution)
 {
     AssignProbabilities(solution);
     _horse.ForEach(h =>
                        {
                            if (h.IsWinner)
                                solution.Partitions[h.Weight].IncreaseWinners();
                            else
                                solution.Partitions[h.Weight].IncreaseCount();
                        }
                     );
 }
コード例 #4
0
ファイル: Solution.cs プロジェクト: jpazarzis/hogar
        private Solution(Solution s1, Solution s2)
        {
            _weights = new List<double>();

            int crossOverPoint = Randomizer.GetNextInteger(0, s1._weights.Count);

            for (int i = 0; i < s1._weights.Count; ++i)
            {
                List<double> l = i <= crossOverPoint ? s1._weights : s2._weights;
               _weights.Add(l[i]);
            }
        }
コード例 #5
0
ファイル: Race.cs プロジェクト: jpazarzis/hogar
        internal double CalculateReturn(Solution solution)
        {
            double bankroll = _horse.Count * (1.0);

            double totalWeight = 0.0;
            foreach (var horse in _horse)
            {
                horse.AssignWeight(solution.Weights);
                totalWeight += horse.Weight;
            }

            foreach (var horse in _horse)
            {
                if (horse.IsWinner)
                {
                    bankroll = totalWeight / horse.Weight - bankroll;
                }
            }

            return bankroll;
        }
コード例 #6
0
ファイル: Race.cs プロジェクト: jpazarzis/hogar
 private void AssignProbabilities(Solution solution)
 {
     _horse.ForEach(horse => horse.AssignWeight(solution.Weights));
     double totalWeight = 0;
     _horse.ForEach(horse => totalWeight += horse.Weight);
     _horse.ForEach(horse=>horse.ProbabilityToWin = horse.Weight / totalWeight);
 }
コード例 #7
0
ファイル: BackTestForm.cs プロジェクト: jpazarzis/hogar
        public BackTestForm(Solution s)
        {
            _solution = s;

            InitializeComponent();
        }
コード例 #8
0
ファイル: Solution.cs プロジェクト: jpazarzis/hogar
 internal static Solution CrossOver(Solution s1, Solution s2)
 {
     return new Solution(s1,s2);
 }