diff --git a/HNumeric.cabal b/HNumeric.cabal
--- a/HNumeric.cabal
+++ b/HNumeric.cabal
@@ -2,10 +2,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: c5d1ade7480449723b6215fe9d6fe260a29e127d440ff4511d5d3f926c680586
+-- hash: 35b947c6b91e1d075b0700a52de393b87f6749f5649ab43e268623c898e675e3
 
 name:           HNumeric
-version:        0.3.2.0
+version:        0.3.3.0
 synopsis:       Haskell Numeric Library with pure functionality, R & MATLAB Syntax.
 description:    Please see the README on GitHub at <https://github.com/Axect/HNumeric#readme>
 category:       HNum, library, Numeric, LinearAlgebra, Statistics, bsd3
diff --git a/src/HNum/CSV.hs b/src/HNum/CSV.hs
--- a/src/HNum/CSV.hs
+++ b/src/HNum/CSV.hs
@@ -10,6 +10,9 @@
 
 import           HNum.Vector
 
+-----------------------------------------------
+-- Declaration
+-----------------------------------------------
 -- | Type Aliases for convenience
 type Header = [String]
 
@@ -29,29 +32,68 @@
 instance Functor DataFrame where
   fmap f df = df { dat = fmap f (dat df) }
 
+-----------------------------------------------
+-- Write to CSV
+-----------------------------------------------
 -- | Class to write csv file
-class Functor f => CSVtize f where
+class Functor f => Writable f where
+  -- | Object to String (Different to Show)
   toString :: Show a => f a -> String
-  write :: Show a => String -> f a -> IO ()
+  -- | Write as CSV
+  writeCSV :: Show a => String -> f a -> IO ()
 
-instance CSVtize Vector where
+instance Writable Vector where
   toString v = foldr (\x y -> x ++ "\n" ++ y) "" (show <$> v)
-  write title v = writeFile title (toString v)
+  writeCSV title v = writeFile title (toString v)
 
-instance CSVtize Matrix where
+instance Writable Matrix where
   toString m = foldr ((\x y -> x ++ "\n" ++ y) . cm) "" m1
     where m1 = matForm (show <$> m)
-  write title m = writeFile title (toString m)
+  writeCSV title m = writeFile title (toString m)
 
-instance CSVtize DataFrame where
+instance Writable DataFrame where
   toString (DataFrame h m) = h' ++ "\n" ++ m'
     where h' = cm h
           m' = toString (transpose m)
-  write title df = writeFile title (toString df)
+  writeCSV title df = writeFile title (toString df)
 
+-----------------------------------------------
+-- Read from CSV
+-----------------------------------------------
+-- | From CSV to DataFrame
+readCSV :: String -> IO (DataFrame String)
+readCSV filepath = do
+  r <- readFile filepath
+  let dat = splitWith '\n' (rmQuot r)
+      hd  = splitWith ',' (head dat)
+      bd  = map (splitWith ',') (tail dat)
+  return DataFrame {header = hd, dat = matrix bd}
 
--- | Convenient 
+-----------------------------------------------
+-- Backend Function
+-----------------------------------------------
+-- | For Convenient 
 cm :: [String] -> String
 cm [] = []
 cm (x : xs) | null xs   = x
             | otherwise = x ++ "," ++ cm xs
+
+-- | Split With Seperator
+splitWith :: Char -> String -> [String]
+splitWith _ [] = []
+splitWith sep str | null temp'' = [temp]
+                  | otherwise   = temp : splitWith sep temp'
+ where
+  temp   = takeWhile (/= sep) str
+  temp'' = dropWhile (/= sep) str
+  temp'  = tail temp''
+
+-- | Remove Quotation Symbol
+rmQuot :: String -> String
+rmQuot [] = []
+rmQuot x | null temp = clean
+         | otherwise = clean ++ rmQuot clean'
+ where
+  clean  = takeWhile (/= '"') x
+  temp   = dropWhile (/= '"') x
+  clean' = tail temp
diff --git a/src/HNum/Stats.hs b/src/HNum/Stats.hs
--- a/src/HNum/Stats.hs
+++ b/src/HNum/Stats.hs
@@ -167,6 +167,23 @@
 rse x y = sqrt (1 / fromIntegral (length x - 2) * rss x y)
 
 --------------------------------------------------------
+-- Technical Analysis
+--------------------------------------------------------
+
+-- | Simple Moving Average
+sma :: Fractional a => Int -> Vector a -> Vector a
+sma p v = vec $ take (p - 1) v' ++ sma' p v'
+ where
+  v' = toList v
+  sma' :: Fractional a => Int -> [a] -> [a]
+  sma' p x
+    | length x < p
+    = []
+    | otherwise
+    = let m = sum (take p x) / fromIntegral p in m : sma' p (tail x)
+
+
+--------------------------------------------------------
 -- Backend Functions
 --------------------------------------------------------
 
