Exemple #1
0
 def __compute_final_stats(self):
     self._final_stats["MeanProfit"] = np.mean(
         self._trade_detail["EverytimeProfit"])
     self._final_stats["MaxLoss"] = np.min(
         self._trade_detail["EverytimeProfit"])
     self._final_stats["FinalProfit"] = self._trade_detail[
         "EverytimeProfit"].values[-1]
     self._final_stats["MeanProfitPer"] = round(
         self._final_stats["MeanProfit"] / self.trader_fund * 100, 2)
     self._final_stats["FinalProfitPer"] = round(
         self._final_stats["FinalProfit"] / self.trader_fund * 100, 2)
     self._final_stats["MaxLossPer"] = round(
         self._final_stats["MaxLoss"] / self.trader_fund * 100, 2)
     # +1, calculate_Datenbr not include last day
     trade_days = (calculate_Datenbr(
         self._trade_detail["date"].min(),
         self._trade_detail["date"].max(),
     ) + 1)
     trade_years = (trade_days + 1) / 365
     # +1, self._trade_detail wihtout contain first day
     self._final_stats["AnnualReturnPer"] = round(
         ((self._final_stats["FinalProfitPer"] / 100 + 1)**
          (1 / trade_years) - 1) * 100,
         2,
     )
     timestep_returns = (self._trade_detail["EverytimeProfit"] -
                         self._trade_detail["EverytimeProfit"].shift(1)) / (
                             self._trade_detail["EverytimeProfit"].shift(1)
                             + self.trader_fund)
     stratagy_return = np.mean(timestep_returns)
     stratagy_std = np.std(timestep_returns)
     self._final_stats["AnnualSharpRatio"] = calculate_sharp_ratio(
         stratagy_return, stratagy_std)
Exemple #2
0
 def __init__(
     self,
     user_id: str = "",
     password: str = "",
     stock_id: str = "",
     start_date: str = "",
     end_date: str = "",
     trader_fund: float = 0,
     fee: float = 0.001425,
     strategy: Strategy = None,
 ):
     self.stock_id = stock_id
     self.start_date = start_date
     self.end_date = end_date
     self.trader_fund = trader_fund
     self.fee = fee
     underlying_type = get_asset_underlying_type(stock_id)
     self.tax = get_underlying_trading_tax(underlying_type)
     self.trader = Trader(
         stock_id=stock_id,
         hold_volume=0,
         hold_cost=0,
         trader_fund=trader_fund,
         fee=self.fee,
         tax=self.tax,
     )
     self.user_id = user_id
     self.password = password
     self.strategy = strategy
     self.stock_price = pd.DataFrame()
     self._trade_detail = pd.DataFrame()
     self._final_stats = pd.Series()
     self.__init_base_data()
     self._trade_period_years = convert_period_days2years(
         calculate_Datenbr(start_date, end_date) + 1
     )
     self._compare_market_detail = pd.DataFrame()
     self._compare_market_stats = pd.Series()
Exemple #3
0
def test_calculate_Datenbr(day1, day2, expected):
    resp = calculate_Datenbr(day1, day2)
    assert resp == expected