fixed OLS model
This commit is contained in:
@@ -1,21 +1,17 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
from ast import Sub
|
||||
import asyncio
|
||||
from functools import partial
|
||||
import json
|
||||
import logging
|
||||
import uuid
|
||||
from dataclasses import dataclass
|
||||
from typing import Callable, Coroutine, Dict, List, Optional
|
||||
from functools import partial
|
||||
from typing import Callable, Coroutine, Dict, Optional
|
||||
|
||||
import websockets
|
||||
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||
from cvttpy_tools.tools.logger import Log
|
||||
from websockets.asyncio.client import ClientConnection
|
||||
|
||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
||||
from cvttpy_base.tools.logger import Log
|
||||
|
||||
MessageTypeT = str
|
||||
SubscriptionIdT = str
|
||||
MessageT = Dict
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from functools import partial
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
import pandas as pd
|
||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
||||
from cvttpy_base.tools.base import NamedObject
|
||||
from cvttpy_base.tools.logger import Log
|
||||
|
||||
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||
from cvttpy_tools.tools.base import NamedObject
|
||||
from cvttpy_tools.tools.logger import Log
|
||||
from pt_strategy.live.ti_sender import TradingInstructionsSender
|
||||
from pt_strategy.model_data_policy import ModelDataPolicy
|
||||
from pt_strategy.pt_market_data import RealTimeMarketData
|
||||
|
||||
@@ -1,21 +1,16 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from functools import partial
|
||||
from typing import Any, Dict, List, Optional
|
||||
from typing import Dict, List
|
||||
|
||||
import pandas as pd
|
||||
from cvttpy_base.tools.app import App
|
||||
from cvttpy_base.tools.config import Config
|
||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
||||
from cvttpy_base.tools.base import NamedObject
|
||||
from cvttpy_base.tools.logger import Log
|
||||
|
||||
from cvtt_client.mkt_data import (
|
||||
CvttPricerWebSockClient,
|
||||
CvttPricesSubscription,
|
||||
MessageTypeT,
|
||||
SubscriptionIdT,
|
||||
)
|
||||
from cvtt_client.mkt_data import (CvttPricerWebSockClient,
|
||||
CvttPricesSubscription, MessageTypeT,
|
||||
SubscriptionIdT)
|
||||
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||
from cvttpy_tools.tools.app import App
|
||||
from cvttpy_tools.tools.base import NamedObject
|
||||
from cvttpy_tools.tools.config import Config
|
||||
from cvttpy_tools.tools.logger import Log
|
||||
from pt_strategy.live.live_strategy import PtLiveStrategy
|
||||
from pt_strategy.trading_pair import TradingPair
|
||||
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
from enum import Enum
|
||||
from typing import Dict, Any, Tuple
|
||||
import time
|
||||
from enum import Enum
|
||||
from typing import Tuple
|
||||
|
||||
# import aiohttp
|
||||
from cvttpy_base.tools.app import App
|
||||
from cvttpy_base.tools.base import NamedObject
|
||||
from cvttpy_base.tools.config import Config
|
||||
from cvttpy_base.tools.logger import Log
|
||||
from cvttpy_base.tools.web.rest_client import REST_RequestProcessor
|
||||
from cvttpy_base.tools.timeutils import NanoPerSec
|
||||
from cvttpy_base.tools.timer import Timer
|
||||
from cvttpy_tools.tools.app import App
|
||||
from cvttpy_tools.tools.base import NamedObject
|
||||
from cvttpy_tools.tools.config import Config
|
||||
from cvttpy_tools.tools.logger import Log
|
||||
from cvttpy_tools.tools.timer import Timer
|
||||
from cvttpy_tools.tools.timeutils import NanoPerSec
|
||||
from cvttpy_tools.tools.web.rest_client import REST_RequestProcessor
|
||||
|
||||
|
||||
class TradingInstructionsSender(NamedObject):
|
||||
|
||||
@@ -11,7 +11,7 @@ from pt_strategy.trading_pair import TradingPair
|
||||
|
||||
|
||||
class OLSModel(PairsTradingModel):
|
||||
zscore_model_: Optional[sm.regression.linear_model.RegressionResultsWrapper]
|
||||
model_: Optional[sm.regression.linear_model.RegressionResultsWrapper]
|
||||
pair_predict_result_: Optional[pd.DataFrame]
|
||||
zscore_df_: Optional[pd.DataFrame]
|
||||
|
||||
@@ -42,11 +42,13 @@ class OLSModel(PairsTradingModel):
|
||||
)
|
||||
|
||||
X = sm.add_constant(symbol_b_px_series)
|
||||
self.zscore_model_ = sm.OLS(symbol_a_px_series, X).fit()
|
||||
assert self.zscore_model_ is not None
|
||||
hedge_ratio = self.zscore_model_.params.iloc[1]
|
||||
self.model_ = sm.OLS(symbol_a_px_series, X).fit()
|
||||
assert self.model_ is not None
|
||||
|
||||
spread = symbol_a_px_series - hedge_ratio * symbol_b_px_series
|
||||
# alternate way would be to use models residuals (will give identical results)
|
||||
# alpha, beta = self.model_.params
|
||||
# spread = symbol_a_px_series - (alpha + beta * symbol_b_px_series)
|
||||
spread = self.model_.resid
|
||||
return pd.DataFrame((spread - spread.mean()) / spread.std())
|
||||
|
||||
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
import pandas as pd
|
||||
|
||||
from cvttpy_base.settings.cvtt_types import JsonDictT
|
||||
|
||||
from cvttpy_tools.settings.cvtt_types import JsonDictT
|
||||
from tools.data_loader import load_market_data
|
||||
from pt_strategy.trading_pair import TradingPair
|
||||
|
||||
|
||||
class PtMarketData():
|
||||
config_: Dict[str, Any]
|
||||
|
||||
Reference in New Issue
Block a user