This commit is contained in:
Thomas
2021-06-21 20:25:32 +02:00
parent be492df86b
commit 8e4cdd9183
15 changed files with 80 additions and 39 deletions

View File

@@ -4,6 +4,7 @@ from sqlalchemy import String
from sqlalchemy import DateTime
from sqlalchemy import Integer
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base

View File

@@ -1,12 +1,18 @@
# Data variables
OPEN_TIME = 'open_time'
CLOSE_TIME = 'close_time'
DATA = 'data'
# Coordinates
SYMBOL = 'symbol'
PROPERTY = 'property'
INTERVAL = 'interval'
VALUE = 'value'
DATA = 'data'
INDEX = 'index'
# Attributes
INTERVAL = 'interval'
# Others
VALUE = 'value'
PROPERTY_LIST = [
'open',
'high',

View File

@@ -1,10 +1,12 @@
from typing import List
from typing import Optional
from pathlib import Path
from sqlalchemy import inspect
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
import portfolio_management.paths as p
from portfolio_management.io_utilities import write_yaml
from portfolio_management.io_utilities import create_folders
@@ -22,7 +24,6 @@ from portfolio_management.database.utilities import session_scope
from portfolio_management.database.utilities import get_engine_url
from portfolio_management.database.utilities import try_insert
from portfolio_management.database.utilities import silent_bulk_insert
import portfolio_management.paths as p
class Manager:

View File

@@ -1,11 +1,11 @@
from typing import List
from typing import Optional
import numpy as np
import pandas as pd
import xarray as xr
import numpy as np
from pathlib import Path
from sqlalchemy.orm import Session
import portfolio_management.paths as p

View File

@@ -1,6 +1,7 @@
from typing import Type
from typing import List
from pathlib import Path
from contextlib import contextmanager
from sqlalchemy import create_engine

View File

@@ -8,8 +8,9 @@ from gym.utils import seeding
import numpy as np
from scipy.special import softmax
from portfolio_management.database import constants as c
from portfolio_management import paths as p
from portfolio_management.database import constants as c
from portfolio_management.environment.data import get_dataset
from portfolio_management.environment.market import Market
from portfolio_management.environment.portfolio import Portfolio

View File

@@ -1,5 +1,6 @@
from typing import Union
from typing import List
import numpy as np
from portfolio_management.environment.utilities import loguniform

View File

@@ -1,15 +1,15 @@
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' # noqa Remove 'Successfully opened dynamic library' tensorflow warning
import numpy as np
from pathlib import Path
from pathlib import PurePath
from typing import Optional
from typing import Sequence
from typing import Union
from typing import Tuple
import numpy as np
from pathlib import Path
from pathlib import PurePath
import torch
import torch.optim as optim
import torch.nn.functional as F # noqa : N812

View File

@@ -1,11 +1,11 @@
import torch
import torch.nn as nn
from typing import List
from typing import Tuple
from typing import Optional
from typing import Sequence
import torch
import torch.nn as nn
from portfolio_management.soft_actor_critic.utilities import weight_initialization
from portfolio_management.soft_actor_critic.utilities import get_multilayer_perceptron

View File

@@ -1,17 +1,27 @@
from typing import Optional
from typing import Sequence
import gym
import torch
import numpy as np
from pathlib import Path
from typing import Optional
from typing import Sequence
from portfolio_management.soft_actor_critic.agent import Agent
def evaluate(env_name: str, run_name: str, env_kwargs: Optional[dict] = None, num_episodes: int = 5, seed: int = 0,
hidden_units: Optional[Sequence[int]] = None, directory: str = '../runs/',
deterministic: bool = False, render: bool = False, record: bool = False, **kwargs):
def evaluate(
env_name: str,
run_name: str,
env_kwargs: Optional[dict] = None,
num_episodes: int = 5,
seed: int = 0,
hidden_units: Optional[Sequence[int]] = None,
directory: str = '../runs/',
deterministic: bool = False,
render: bool = False,
record: bool = False,
**kwargs
):
if kwargs:
print(f'Unrecognized kwargs : {kwargs}')

View File

@@ -1,11 +1,11 @@
import numpy as np
from typing import Tuple
from typing import Union
from typing import Sequence
import numpy as np
class ReplayBuffer: # todo maybe do more clean in the future
class ReplayBuffer: # todo maybe do more clean in the future + random deletion
def __init__(self, max_size: int, input_shape: Union[Sequence[int], int], num_actions: int):
self.memory_counter = 0
self.memory_size = int(max_size)

View File

@@ -1,12 +1,13 @@
from typing import Optional
from typing import Sequence
import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch.distributions.normal import Normal
import numpy as np
from typing import Optional
from typing import Sequence
from portfolio_management.soft_actor_critic.utilities import weight_initialization
from portfolio_management.soft_actor_critic.utilities import get_multilayer_perceptron

View File

@@ -1,11 +1,12 @@
from typing import Optional
from typing import Sequence
import gym
import torch
import datetime
import numpy as np
from pathlib import Path
from itertools import count
from typing import Optional
from typing import Sequence
from torch.utils.tensorboard import SummaryWriter
@@ -17,11 +18,26 @@ from portfolio_management.soft_actor_critic.utilities import save_to_writer
from portfolio_management.soft_actor_critic.utilities import get_timedelta_formatted
def train(env_name: str, env_kwargs: Optional[dict] = None, batch_size: int = 256, memory_size: int = 10e6,
learning_rate: float = 3e-4, alpha: float = 0.05, gamma: float = 0.99, tau: float = 0.005,
num_steps: int = 1_000_000, hidden_units: Optional[Sequence[int]] = None, load_models: bool = False,
saving_frequency: int = 20, run_name: Optional[str] = None, start_step: int = 1_000, seed: int = 0,
updates_per_step: int = 1, directory: str = '../runs/', **kwargs):
def train(
env_name: str,
env_kwargs: Optional[dict] = None,
batch_size: int = 256,
memory_size: int = 10e6,
learning_rate: float = 3e-4,
alpha: float = 0.05,
gamma: float = 0.99,
tau: float = 0.005,
num_steps: int = 1_000_000,
hidden_units: Optional[Sequence[int]] = None,
load_models: bool = False,
saving_frequency: int = 20,
run_name: Optional[str] = None,
start_step: int = 1_000,
seed: int = 0,
updates_per_step: int = 1,
directory: str = '../runs/',
**kwargs
):
if kwargs:
print(f'Unrecognized kwargs : {kwargs}')

View File

@@ -1,3 +1,7 @@
from typing import List
from typing import Union
from typing import Optional
import datetime
from pathlib import Path
from contextlib import contextmanager
@@ -5,10 +9,6 @@ from contextlib import contextmanager
import torch
import torch.nn as nn
from typing import List
from typing import Union
from typing import Optional
def get_run_name(*arguments, **keyword_arguments) -> str:
name = f'{datetime.datetime.now().strftime("%Y%m%d_%H%M%S")}'
@@ -69,6 +69,7 @@ def filter_info(dictionary: dict) -> dict:
filtered_dictionary[key] = value
return filtered_dictionary
def filter_info_step(dictionary: dict) -> dict:
filtered_dictionary = {}
for key, value in dictionary.items():

View File

@@ -8,3 +8,5 @@ gym
numpy
scipy
python-binance
torch
torchsummary